Chepuhagram/lib/presentation/screens/chat_screen.dart

73 lines
1.9 KiB
Dart

import 'package:flutter/material.dart';
import '/data/models/message_model.dart';
import '/data/models/contact_model.dart';
import 'package:chepuhagram/presentation/widgets/message_bubble.dart';
class ChatScreen extends StatefulWidget {
final Contact contact;
const ChatScreen({super.key, required this.contact});
@override
State<ChatScreen> createState() => _ChatScreenState();
}
class _ChatScreenState extends State<ChatScreen> {
final TextEditingController _controller = TextEditingController();
final List<MessageModel> messages = [];
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text(widget.contact.name)),
body: Column(
children: [
Expanded(
child: ListView.builder(
reverse: true, // Сообщения растут снизу вверх
itemCount: messages.length,
itemBuilder: (context, index) {
final msg = messages[messages.length - 1 - index];
return MessageBubble(
message: msg.text,
time: msg.createdAt,
isMe: msg.isMe,
);
},
),
),
_buildMessageInput(),
],
),
);
}
Widget _buildMessageInput() {
return Padding(
padding: const EdgeInsets.all(8.0),
child: Row(
children: [
Expanded(
child: TextField(
controller: _controller,
decoration: const InputDecoration(hintText: "Напиши сообщение..."),
),
),
IconButton(
icon: const Icon(Icons.send),
onPressed: () {
// Логика отправки через WebSocket или API
_controller.clear();
},
),
],
),
);
}
}