diff options
Diffstat (limited to 'lib/screens/chat_screen.dart')
-rw-r--r-- | lib/screens/chat_screen.dart | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/screens/chat_screen.dart b/lib/screens/chat_screen.dart index d3d71ad..bd0d5d7 100644 --- a/lib/screens/chat_screen.dart +++ b/lib/screens/chat_screen.dart @@ -22,6 +22,8 @@ class _ChatScreenState extends State<ChatScreen> { final Auth _auth = Auth(); final Database _db = Database(); + final ScrollController _scroll = ScrollController(); + @override Widget build(BuildContext context) { List<dynamic> arguments = @@ -64,8 +66,17 @@ class _ChatScreenState extends State<ChatScreen> { stream: _db.getMessagesByGroupId(group!.id!), builder: (context, snapshot) { if (snapshot.hasData) { + WidgetsBinding.instance.addPostFrameCallback((_) { + if (_scroll.hasClients) { + _scroll.animateTo(_scroll.position.maxScrollExtent, + duration: const Duration(milliseconds: 500), + curve: Curves.fastOutSlowIn); + } + }); + List<Message> msgs = snapshot.data!; return ListView.builder( + controller: _scroll, padding: const EdgeInsets.only(bottom: 80.0), itemCount: snapshot.data!.length, itemBuilder: (context, index) => ChatBubble( |