Skip to content

Commit

Permalink
done
Browse files Browse the repository at this point in the history
  • Loading branch information
Dat-TG committed Dec 29, 2023
1 parent e25c940 commit 877aa9e
Show file tree
Hide file tree
Showing 7 changed files with 46 additions and 5 deletions.
15 changes: 15 additions & 0 deletions lib/core/widgets/main_drawer.dart
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@ class _MainDrawerState extends State<MainDrawer> {
Navigator.pop(context);
},
),
Divider(
height: 1,
),
Expanded(
child: Observer(builder: (context) {
if (_chatStore.isLoadingChatThreads) {
Expand All @@ -44,6 +47,7 @@ class _MainDrawerState extends State<MainDrawer> {
);
}
return ListView(
clipBehavior: Clip.antiAlias,
padding: EdgeInsets.zero,
children: _chatStore.chatThreads
.map(
Expand All @@ -60,6 +64,17 @@ class _MainDrawerState extends State<MainDrawer> {
);
}),
),
Divider(
height: 1,
),
ListTile(
leading: FaIcon(
FontAwesomeIcons.solidStar,
size: 20,
),
title: Text('Lê Công Đắt'),
minLeadingWidth: 10,
),
],
),
);
Expand Down
1 change: 0 additions & 1 deletion lib/data/local/datasources/message/message_datasource.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import 'package:boilerplate/core/data/local/sembast/sembast_client.dart';
import 'package:boilerplate/data/local/constants/db_constants.dart';
import 'package:boilerplate/domain/entity/message/chat_thread.dart';
import 'package:boilerplate/domain/entity/post/post.dart';
import 'package:sembast/sembast.dart';

class MessageDataSource {
Expand Down
2 changes: 2 additions & 0 deletions lib/data/network/apis/message/message_api.dart
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
// ignore_for_file: unused_field

import 'dart:async';

import 'package:boilerplate/core/data/network/dio/dio_client.dart';
Expand Down
5 changes: 3 additions & 2 deletions lib/data/network/apis/posts/post_api.dart
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
// ignore_for_file: unused_field

import 'dart:async';

import 'package:boilerplate/core/data/network/dio/dio_client.dart';
Expand Down Expand Up @@ -26,13 +28,12 @@ class PostApi {
}
}

/// sample api call with default rest client
/// sample api call with default rest client
// Future<PostsList> getPosts() {
//
// return _restClient
// .get(Endpoints.getPosts)
// .then((dynamic res) => PostsList.fromJson(res))
// .catchError((error) => throw NetworkException(message: error));
// }

}
24 changes: 22 additions & 2 deletions lib/presentation/chat_screen/chat_screen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,10 @@ class _ChatScreenState extends State<ChatScreen> {

void scrollToBottom() {
if (_controller.hasClients) {
_controller.jumpTo(
_controller.animateTo(
_controller.position.maxScrollExtent,
duration: Duration(seconds: 1),
curve: Curves.fastOutSlowIn,
);
}
}
Expand All @@ -37,6 +39,11 @@ class _ChatScreenState extends State<ChatScreen> {

ChatStore _chatStore = getIt<ChatStore>();

@override
void initState() {
super.initState();
}

@override
void dispose() {
_controller.dispose();
Expand All @@ -62,13 +69,18 @@ class _ChatScreenState extends State<ChatScreen> {
print('new chat thread index: ${chatThreadIndex}');
print(_chatStore
.chatThreads[chatThreadIndex].messages[1].message.content);
WidgetsBinding.instance.addPostFrameCallback((_) {
scrollToBottom();
});

if (_chatStore.chatThreads[chatThreadIndex].messages.isEmpty) {
return const Center(
child: Text('No messages yet'),
);
}
return ListView.builder(
controller: _controller,
physics: AlwaysScrollableScrollPhysics(),
itemCount:
_chatStore.chatThreads[chatThreadIndex].messages.length +
(_chatStore.isLoading ? 1 : 0),
Expand Down Expand Up @@ -143,7 +155,14 @@ class _ChatScreenState extends State<ChatScreen> {
: Theme.of(context).colorScheme.primary),
padding: const EdgeInsets.only(
left: 16, right: 16, top: 16, bottom: 16),
child: ((index ==
child: ((DateTime.now()
.difference(_chatStore
.chatThreads[chatThreadIndex]
.messages[index]
.time)
.inSeconds <
30) &&
(index ==
_chatStore.chatThreads[chatThreadIndex]
.messages.length -
1) &&
Expand Down Expand Up @@ -205,6 +224,7 @@ class _ChatScreenState extends State<ChatScreen> {
),
ChatInput(onSend: (String content) {
_chatStore.sendMessage(content);
scrollToBottom();
}),
],
);
Expand Down
2 changes: 2 additions & 0 deletions lib/presentation/home_demo/store/language/language_store.dart
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
// ignore_for_file: unused_field, override_on_non_overriding_member

import 'package:boilerplate/core/stores/error/error_store.dart';
import 'package:boilerplate/domain/entity/language/Language.dart';
import 'package:boilerplate/domain/repository/setting/setting_repository.dart';
Expand Down
2 changes: 2 additions & 0 deletions lib/presentation/home_demo/store/theme/theme_store.dart
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
// ignore_for_file: override_on_non_overriding_member

import 'package:boilerplate/core/stores/error/error_store.dart';
import 'package:boilerplate/domain/repository/setting/setting_repository.dart';
import 'package:flutter/material.dart';
Expand Down

0 comments on commit 877aa9e

Please sign in to comment.