From 4d449d2dd4decbb28f629e8064080ab3a3ed2ccc Mon Sep 17 00:00:00 2001 From: Mohammed Mohsin <59914433+mdmohsin7@users.noreply.github.com> Date: Sun, 29 Dec 2024 14:47:21 +0530 Subject: [PATCH] search and filter improvements --- .../conversations/conversations_page.dart | 2 +- .../conversations/widgets/search_widget.dart | 108 +++++++++++------- app/lib/pages/home/page.dart | 18 --- 3 files changed, 67 insertions(+), 61 deletions(-) diff --git a/app/lib/pages/conversations/conversations_page.dart b/app/lib/pages/conversations/conversations_page.dart index b3627ec0a6..64f7acf565 100644 --- a/app/lib/pages/conversations/conversations_page.dart +++ b/app/lib/pages/conversations/conversations_page.dart @@ -119,7 +119,7 @@ class _ConversationsPageState extends State with AutomaticKee return Column( mainAxisSize: MainAxisSize.min, children: [ - if (index == 0) const SizedBox(height: 16), + if (index == 0) const SizedBox(height: 10), ConversationsGroupWidget( isFirst: index == 0, conversations: memoriesForDate, diff --git a/app/lib/pages/conversations/widgets/search_widget.dart b/app/lib/pages/conversations/widgets/search_widget.dart index 3f06548a29..bd9e2adc20 100644 --- a/app/lib/pages/conversations/widgets/search_widget.dart +++ b/app/lib/pages/conversations/widgets/search_widget.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:friend_private/backend/preferences.dart'; import 'package:friend_private/providers/conversation_provider.dart'; import 'package:friend_private/providers/home_provider.dart'; import 'package:friend_private/utils/other/debouncer.dart'; @@ -26,50 +27,73 @@ class _SearchWidgetState extends State { @override Widget build(BuildContext context) { - return Container( - padding: const EdgeInsets.fromLTRB(16, 16, 16, 2), - width: MediaQuery.sizeOf(context).width * 0.9, - child: TextFormField( - controller: searchController, - focusNode: context.read().convoSearchFieldFocusNode, - onChanged: (value) { - var provider = Provider.of(context, listen: false); - _debouncer.run(() async { - await provider.searchConversations(value); - }); - setShowClearButton(); - }, - decoration: InputDecoration( - hintText: 'Search Conversations', - hintStyle: const TextStyle(color: Colors.white), - filled: true, - fillColor: Colors.grey[900], - border: OutlineInputBorder( - borderRadius: BorderRadius.circular(12), - borderSide: BorderSide.none, + return Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Container( + padding: const EdgeInsets.fromLTRB(16, 16, 2, 0), + width: MediaQuery.sizeOf(context).width * 0.85, + child: TextFormField( + controller: searchController, + focusNode: context.read().convoSearchFieldFocusNode, + onChanged: (value) { + var provider = Provider.of(context, listen: false); + _debouncer.run(() async { + await provider.searchConversations(value); + }); + setShowClearButton(); + }, + decoration: InputDecoration( + hintText: 'Search Conversations', + hintStyle: TextStyle(color: Colors.grey.shade500), + filled: false, + // fillColor: Colors.grey[900], + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(12), + borderSide: BorderSide(color: Colors.grey.shade900, width: 0.5), + ), + prefixIcon: Icon( + Icons.search, + color: Colors.grey.shade500, + ), + suffixIcon: showClearButton + ? GestureDetector( + onTap: () { + var provider = Provider.of(context, listen: false); + provider.resetGroupedConvos(); + searchController.clear(); + setShowClearButton(); + }, + child: const Icon( + Icons.close, + color: Colors.white, + ), + ) + : null, + contentPadding: const EdgeInsets.symmetric(horizontal: 12), + ), + style: const TextStyle(color: Colors.white), ), - prefixIcon: const Icon( - Icons.search, - color: Colors.white, - ), - suffixIcon: showClearButton - ? GestureDetector( - onTap: () { - var provider = Provider.of(context, listen: false); - provider.resetGroupedConvos(); - searchController.clear(); - setShowClearButton(); - }, - child: const Icon( - Icons.close, - color: Colors.white, - ), - ) - : null, - contentPadding: const EdgeInsets.symmetric(horizontal: 12), ), - style: const TextStyle(color: Colors.white), - ), + Consumer2(builder: (context, convoProvider, home, child) { + if (home.selectedIndex != 0 || + !convoProvider.hasNonDiscardedConversations || + convoProvider.isLoadingConversations) { + return const SizedBox.shrink(); + } + return Padding( + padding: const EdgeInsets.only(left: 2.0, top: 12), + child: IconButton( + onPressed: convoProvider.toggleDiscardConversations, + icon: Icon( + SharedPreferencesUtil().showDiscardedMemories ? Icons.filter_list_off_sharp : Icons.filter_list, + color: Colors.white, + size: 24, + ), + ), + ); + }), + ], ); } } diff --git a/app/lib/pages/home/page.dart b/app/lib/pages/home/page.dart index c3517b4403..6df7c57851 100644 --- a/app/lib/pages/home/page.dart +++ b/app/lib/pages/home/page.dart @@ -487,24 +487,6 @@ class _HomePageState extends State with WidgetsBindingObserver, Ticker } }, ), - Consumer2(builder: (context, convoProvider, home, child) { - if (home.selectedIndex != 0 || - !convoProvider.hasNonDiscardedConversations || - convoProvider.isLoadingConversations) { - return const SizedBox.shrink(); - } - return Padding( - padding: const EdgeInsets.only(left: 4.0), - child: IconButton( - onPressed: convoProvider.toggleDiscardConversations, - icon: Icon( - SharedPreferencesUtil().showDiscardedMemories ? Icons.filter_list_off_sharp : Icons.filter_list, - color: Colors.white, - size: 24, - ), - ), - ); - }), IconButton( icon: const Icon(Icons.settings, color: Colors.white, size: 30), onPressed: () async {