diff --git a/lib/api/chat/chat_provider_model.dart b/lib/api/chat/chat_provider_model.dart index 3498a17..0cb67e6 100644 --- a/lib/api/chat/chat_provider_model.dart +++ b/lib/api/chat/chat_provider_model.dart @@ -109,10 +109,11 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } } else { if (loadMore) { - List temp = getSingleUserChatModel(response.body); - userChatHistory.insertAll(0, temp); + List temp = getSingleUserChatModel(response.body).reversed.toList(); + userChatHistory.addAll(temp); } else { userChatHistory = getSingleUserChatModel(response.body); + userChatHistory = userChatHistory.reversed.toList(); } } isLoading = false; @@ -594,6 +595,17 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { notifyListeners(); } + void clearAll() { + searchedChats = pChatHistory; + search.clear(); + isChatScreenActive = false; + paginationVal = 0; + message.text = ''; + isFileSelected = false; + repliedMsg = []; + sFileType = ""; + } + void scrollListener() { _firstAutoscrollExecuted = true; if (scrollController.hasClients && scrollController.position.pixels == scrollController.position.maxScrollExtent) { diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index 5c05173..04e84e0 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -32,7 +32,7 @@ class ChatDetailScreen extends StatelessWidget { data.getSingleUserChatHistory(senderUID: AppState().chatDetails!.response!.id.toString(), receiverUID: userDetails["targetUser"].id, loadMore: true, isNewChat: false); } await Future.delayed(const Duration(milliseconds: 1000)); - _refreshController.refreshCompleted(); + _refreshController.loadComplete(); } @override @@ -54,17 +54,21 @@ class ChatDetailScreen extends StatelessWidget { Expanded( flex: 2, child: SmartRefresher( - enablePullDown: true, - enablePullUp: false, + enablePullDown: false, + enablePullUp: true, + onLoading: () { + getMoreChat(); + }, header: const MaterialClassicHeader( color: MyColors.gradiantEndColor, ), controller: _refreshController, - onRefresh: getMoreChat, + reverse: true, child: ListView.builder( controller: m.scrollController, shrinkWrap: true, - reverse: false, + physics: const BouncingScrollPhysics(), + reverse: true, itemCount: m.userChatHistory.length, padding: const EdgeInsets.only(top: 20), itemBuilder: (BuildContext context, int i) { diff --git a/lib/ui/chat/chat_home.dart b/lib/ui/chat/chat_home.dart index ea53d2e..86356bb 100644 --- a/lib/ui/chat/chat_home.dart +++ b/lib/ui/chat/chat_home.dart @@ -26,11 +26,16 @@ class _ChatHomeState extends State { PageController controller = PageController(); late ChatProviderModel data; + @override + void dispose() { + data.clearAll(); + super.dispose(); + } @override Widget build(BuildContext context) { data = Provider.of(context, listen: false); - data.getUserAutoLoginToken().then((value){ + data.getUserAutoLoginToken().then((value) { data.getUserRecentChats(); }); return Scaffold( @@ -41,7 +46,7 @@ class _ChatHomeState extends State { showHomeButton: true, ), body: Column( - children: [ + children: [ Container( padding: const EdgeInsets.only(left: 21, right: 21, top: 16, bottom: 16), decoration: const BoxDecoration( @@ -60,12 +65,7 @@ class _ChatHomeState extends State { ), ), child: Row( - children: [ - myTab(LocaleKeys.mychats.tr(), 0), - myTab( - LocaleKeys.favorite.tr(), - 1) - ], + children: [myTab(LocaleKeys.mychats.tr(), 0), myTab(LocaleKeys.favorite.tr(), 1)], ), ), PageView( @@ -76,7 +76,7 @@ class _ChatHomeState extends State { tabIndex = pageIndex; }); }, - children: [ChatHomeScreen(), ChatFavoriteUsersScreen()], + children: [ChatHomeScreen(), ChatFavoriteUsersScreen()], ).expanded, ], ), diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart index f66f3d5..3ac291c 100644 --- a/lib/ui/chat/chat_home_screen.dart +++ b/lib/ui/chat/chat_home_screen.dart @@ -14,9 +14,20 @@ import 'package:mohem_flutter_app/widgets/bottom_sheets/search_employee_bottom_s import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart'; import 'package:provider/provider.dart'; -class ChatHomeScreen extends StatelessWidget { +class ChatHomeScreen extends StatefulWidget { + @override + State createState() => _ChatHomeScreenState(); +} + +class _ChatHomeScreenState extends State { TextEditingController search = TextEditingController(); + @override + void dispose() { + super.dispose(); + search.clear(); + } + @override Widget build(BuildContext context) { return Scaffold( @@ -45,6 +56,18 @@ class ChatHomeScreen extends StatelessWidget { hintStyle: const TextStyle(color: MyColors.lightTextColor, fontStyle: FontStyle.italic), filled: true, fillColor: const Color(0xFFF7F7F7), + suffixIcon: m.search.text.isNotEmpty + ? IconButton( + onPressed: () { + m.clearSelections(); + }, + icon: const Icon( + Icons.clear, + size: 22, + ), + color: MyColors.redA3Color, + ) + : null, ), ), ),