import 'package:flutter/material.dart'; import 'chat.dart'; // Import the new Chat class class ChatScreen extends StatefulWidget { const ChatScreen({super.key}); @override State createState() => _ChatScreenState(); } class _ChatScreenState extends State { final Chat _chat = Chat('chat1'); // Create an instance of Chat final TextEditingController _controller = TextEditingController(); void _sendMessage() { if (_controller.text.isNotEmpty) { setState(() { _chat.addUserMessage(_controller.text); // Use the Chat instance to add the message _controller.clear(); }); } } @override Widget build(BuildContext context) { final width = MediaQuery.of(context).size.width; final isBigScreen = width > 600; // Define threshold for small screens return Scaffold( appBar: AppBar( title: const Text('Chat'), ), body: Column( children: [ Expanded( child: ListView.builder( itemCount: _chat.messages.length, itemBuilder: (context, index) { final message = _chat.messages[index]; // Align all messages to left for big screens final align = message.sender == 'user' && !isBigScreen ? CrossAxisAlignment.end : CrossAxisAlignment.start; return Row( mainAxisAlignment: align == CrossAxisAlignment.end ? MainAxisAlignment.end : MainAxisAlignment.start, children: [ Container( padding: const EdgeInsets.all(8.0), margin: const EdgeInsets.symmetric(vertical: 4.0), child: Text( '${message.content}', style: const TextStyle(color: Colors.white), ), ), ], ); }, ), ), Padding( padding: const EdgeInsets.all(8.0), child: Row( children: [ Expanded( child: TextField( controller: _controller, decoration: const InputDecoration(hintText: 'Send a message'), onSubmitted: (_) => _sendMessage(), ), ), IconButton( icon: const Icon(Icons.send), onPressed: _sendMessage, ), ], ), ), ], ), ); } }