import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:gap/gap.dart'; import 'package:material_symbols_icons/symbols.dart'; import 'package:styled_widget/styled_widget.dart'; import 'package:surface/controllers/chat_message_controller.dart'; class ChatMessageInput extends StatefulWidget { final ChatMessageController controller; const ChatMessageInput({super.key, required this.controller}); @override State createState() => _ChatMessageInputState(); } class _ChatMessageInputState extends State { final TextEditingController _contentController = TextEditingController(); final FocusNode _focusNode = FocusNode(); void _sendMessage() { widget.controller.sendMessage( 'messages.new', _contentController.text, ); _contentController.clear(); } @override void dispose() { _contentController.dispose(); _focusNode.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return Column( mainAxisAlignment: MainAxisAlignment.center, children: [ SizedBox( height: 56, child: Row( children: [ Expanded( child: TextField( focusNode: _focusNode, controller: _contentController, decoration: InputDecoration( isCollapsed: true, hintText: 'fieldChatMessage'.tr(args: [ widget.controller.channel?.name ?? 'loading'.tr() ]), border: InputBorder.none, ), onSubmitted: (_) { _sendMessage(); _focusNode.requestFocus(); }, ), ), const Gap(8), IconButton( onPressed: _sendMessage, icon: Icon( Symbols.send, color: Theme.of(context).colorScheme.primary, ), visualDensity: const VisualDensity( horizontal: -4, vertical: -4, ), ), ], ), ).padding(horizontal: 16), ], ); } }