Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions lib/viewmodels/ChattingVM.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import 'package:suwon/models/chat_model.dart';

class ChatViewModel extends ChangeNotifier {
StompClient? client;
String serverUrl = 'ws://3.35.83.91:8080/stomp';
String serverUrl = 'ws://43.202.91.160:8080/stomp';
String sendEndpoint = '/pub/chat/message/1234';
List<Message> chatMessages = [];

Expand All @@ -33,7 +33,7 @@ class ChatViewModel extends ChangeNotifier {
Map<String, dynamic> jsonData = json.decode(frame.body!);
Message message = Message.fromJson(jsonData);
chatMessages.add(message);
notifyListeners(); // 새로운 메시지가 추가될 때마다 호출
notifyListeners(); // 수정된 부분: 새로운 메시지가 추가될 때마다 화면을 업데이트
}
},
);
Expand All @@ -46,5 +46,8 @@ class ChatViewModel extends ChangeNotifier {
Message(roomId: '1234', sender: 'your_name', contents: message)
.toJson()),
);

print(message);
notifyListeners();
}
}
2 changes: 1 addition & 1 deletion lib/viewmodels/LoginVM.dart
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ class LoginVM extends ChangeNotifier {

Future<void> login() async {
try {
final apiUrl = Uri.parse('http://3.35.83.91:8080/member/sign-in');
final apiUrl = Uri.parse('http://43.202.91.160:8080/member/sign-in');
final requestBody = {
"account": _userid,
"password": _userpw,
Expand Down
35 changes: 35 additions & 0 deletions lib/viewmodels/SignupVM.dart
Original file line number Diff line number Diff line change
Expand Up @@ -139,4 +139,39 @@ class SignupVM extends ChangeNotifier {
print('Signup failed: $error');
}
}

//id 중복체크
Future<void> idcheck(UserModel userModel) async {
try {
// Convert UserModel to Map
Map<String, dynamic> userMap = {
"account": userModel.account,
};
// Encode Map to JSON String
String signupData = json.encode(userMap);

// Make a POST request to your backend API
final response = await http.post(
Uri.parse("http://43.202.91.160:8080/member/check-duplicate-id-signUp"),
headers: {
'Content-Type': 'application/json',
},
body: signupData,
);

print(userMap);

// 응답 상태 확인
if (response.statusCode == 200) {
// 회원가입 성공 시, 필요한 경우 응답을 처리
print('사용 가능한 닉네임입니다.');
} else {
// 회원가입 실패 시, 에러 처리
print('이미 존재하는 닉네임 입니다. - ${response.statusCode}: ${response.body}');
}
} catch (error) {
// 회원가입 과정에서 발생하는 에러 처리
print('idcheck: $error');
}
}
}
39 changes: 30 additions & 9 deletions lib/views/ChattingScreen.dart
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import 'dart:html';

import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_svg/flutter_svg.dart';
Expand All @@ -14,12 +16,31 @@ class RandomChat extends StatefulWidget {

class _RandomChatState extends State<RandomChat> {
late ChatViewModel viewModel;
final ScrollController _scrollController = ScrollController();

@override
void initState() {
super.initState();
viewModel = Provider.of<ChatViewModel>(context, listen: false);
viewModel.initialize();

viewModel.addListener(_scrollToEnd); // 새 메시지 추가 시 스크롤
}

@override
void dispose() {
_scrollController.dispose(); // 리소스 해제
super.dispose();
}

void _scrollToEnd() {
if (_scrollController.hasClients) {
_scrollController.animateTo(
_scrollController.position.maxScrollExtent,
duration: Duration(milliseconds: 300),
curve: Curves.easeOut,
);
}
}

@override
Expand All @@ -34,13 +55,13 @@ class _RandomChatState extends State<RandomChat> {
children: [
_Header(),
Expanded(
child: SingleChildScrollView(
child: Column(
children: viewModel.chatMessages
.map(
(message) => _ChatBubble(message: message.contents))
.toList(),
),
child: ListView.builder(
controller: _scrollController,
itemCount: viewModel.chatMessages.length,
itemBuilder: (context, index) {
final message = viewModel.chatMessages[index];
return _ChatBubble(message: message.contents);
},
),
),
Container(
Expand Down Expand Up @@ -136,7 +157,7 @@ class _Header extends StatelessWidget {
],
),
),
SizedBox(width: 95.w),
SizedBox(width: 130.w),
GestureDetector(
child: SvgPicture.asset(
'assets/Report button.svg',
Expand Down Expand Up @@ -180,7 +201,7 @@ class _ChatBubble extends StatelessWidget {
),
child: Text(
message,
style: TextStyle(color: Colors.white),
style: TextStyle(color: Colors.black),
),
);
}
Expand Down
3 changes: 2 additions & 1 deletion lib/views/LoginScreen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:suwon/views/ChangePasswordScreen.dart';
import 'package:suwon/views/ChattingScreen.dart';
import 'package:suwon/views/SearchIdScreen.dart';
import 'package:suwon/views/HomeScreen.dart';
import 'package:suwon/views/SignUpScreen.dart';
Expand Down Expand Up @@ -104,7 +105,7 @@ class LoginScreen extends StatelessWidget {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => SearchPasswordScreen()),
builder: (context) => RandomChat()),
);
},
child: TextFontWidget.fontRegular(
Expand Down