From d096559a2fa07998b4f7004b61b5ac1fee38d637 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Tue, 27 Dec 2022 14:30:16 +0300 Subject: [PATCH] Fixes --- .../search_employee_bottom_sheet.dart | 441 +++++++++--------- 1 file changed, 214 insertions(+), 227 deletions(-) diff --git a/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart b/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart index 014ce5d..a0041a7 100644 --- a/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart +++ b/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart @@ -92,8 +92,7 @@ class _SearchEmployeeBottomSheetState extends State { } void fetchChatUser({bool isNeedLoading = true}) async { - if (pageNo == 1) - chatUsersList = []; + if (pageNo == 1) chatUsersList!.clear(); try { Utils.showLoading(context); await ChatApiClient().getChatMemberFromSearch(searchText, AppState().chatDetails!.response!.id!, pageNo).then((ChatUserModel value) { @@ -130,248 +129,236 @@ class _SearchEmployeeBottomSheetState extends State { } void scrollListener() async { - if (sc.position.pixels == - sc.position.maxScrollExtent) { + if (sc.position.pixels == sc.position.maxScrollExtent) { pageNo++; setState(() {}); } + } - @override - void initState() { - super.initState(); - sc.addListener(scrollListener); - } + @override + void initState() { + super.initState(); + sc.addListener(scrollListener); + } - @override - Widget build(BuildContext context) { - return SizedBox( - width: double.infinity, - height: MediaQuery - .of(context) - .size - .height - 100, - child: Column( - children: [ - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - widget.title.toText24(isBold: true), - 21.height, - "Search".toText16(), - 11.height, - Row( - children: [ - radioOption("Name", 0, _selectedSearchIndex), - radioOption("User Name", 1, _selectedSearchIndex), - radioOption("Email", 2, _selectedSearchIndex), - ], - ), - 14.height, - Row( - children: [ - DynamicTextFieldWidget( - "Search", - "Search By Username", - inputAction: TextInputAction.done, - suffixIconData: Icons.search, - onChange: (text) { - searchText = text; - setState(() {}); - }, - ).expanded, - IconButton( - constraints: const BoxConstraints(), - onPressed: () async { - await SystemChannels.textInput.invokeMethod('TextInput.hide'); - widget.fromChat ? fetchChatUser() : fetchUserByInput(); - }, - icon: const Icon(Icons.search), - ) - ], - ), - if (replacementList != null) - replacementList!.isEmpty - ? Utils - .getNoDataWidget(context) - .expanded - : ListView( - physics: const BouncingScrollPhysics(), - padding: EdgeInsets.only(top: 21, bottom: 8), - children: [ - if (favouriteUserList?.isNotEmpty ?? false) ...[ - "Favorites".toText16(), - 12.height, - ListView.separated( - physics: const NeverScrollableScrollPhysics(), - shrinkWrap: true, - itemBuilder: (cxt, index) => employeeItemView(favouriteUserList![index]), - separatorBuilder: (cxt, index) => - Container( - height: 1, - color: MyColors.borderE3Color, - ), - itemCount: favouriteUserList?.length ?? 0), - 12.height, - ], - if (nonFavouriteUserList?.isNotEmpty ?? false) ...[ - "Related".toText16(), - 12.height, - ListView.separated( - physics: const NeverScrollableScrollPhysics(), - shrinkWrap: true, - itemBuilder: (cxt, index) => employeeItemView(nonFavouriteUserList![index]), - separatorBuilder: (cxt, index) => - Container( - height: 1, - color: MyColors.borderE3Color, - ), - itemCount: nonFavouriteUserList?.length ?? 0), - ] - ], + @override + Widget build(BuildContext context) { + return SizedBox( + width: double.infinity, + height: MediaQuery.of(context).size.height - 100, + child: Column( + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + widget.title.toText24(isBold: true), + 21.height, + "Search".toText16(), + 11.height, + Row( + children: [ + radioOption("Name", 0, _selectedSearchIndex), + radioOption("User Name", 1, _selectedSearchIndex), + radioOption("Email", 2, _selectedSearchIndex), + ], + ), + 14.height, + Row( + children: [ + DynamicTextFieldWidget( + "Search", + "Search By Username", + inputAction: TextInputAction.done, + suffixIconData: Icons.search, + onChange: (text) { + searchText = text; + setState(() {}); + }, ).expanded, - if (widget.fromChat) - if (chatUsersList != null && widget.fromChat) - chatUsersList!.isEmpty - ? Column( - children: [ - 20.height, - Utils.getNoDataWidget(context), - ], - ) - : ListView - .separated( - physics: const AlwaysScrollableScrollPhysics(), - controller: sc, - shrinkWrap: true, - itemBuilder: (BuildContext cxt, int index) { - return SizedBox( - height: 55, - child: ListTile( - leading: Stack( - children: [ - SvgPicture.asset( - "assets/images/user.svg", - height: 48, - width: 48, - ), - Positioned( - right: 5, - bottom: 1, - child: Container( - width: 10, - height: 10, - decoration: BoxDecoration( - color: chatUsersList![index].userStatus == 1 ? MyColors.green2DColor : Colors.red, - borderRadius: const BorderRadius.all( - Radius.circular(10), - ), + IconButton( + constraints: const BoxConstraints(), + onPressed: () async { + await SystemChannels.textInput.invokeMethod('TextInput.hide'); + widget.fromChat ? fetchChatUser() : fetchUserByInput(); + }, + icon: const Icon(Icons.search), + ) + ], + ), + if (replacementList != null) + replacementList!.isEmpty + ? Utils.getNoDataWidget(context).expanded + : ListView( + physics: const BouncingScrollPhysics(), + padding: EdgeInsets.only(top: 21, bottom: 8), + children: [ + if (favouriteUserList?.isNotEmpty ?? false) ...[ + "Favorites".toText16(), + 12.height, + ListView.separated( + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemBuilder: (cxt, index) => employeeItemView(favouriteUserList![index]), + separatorBuilder: (cxt, index) => Container( + height: 1, + color: MyColors.borderE3Color, + ), + itemCount: favouriteUserList?.length ?? 0), + 12.height, + ], + if (nonFavouriteUserList?.isNotEmpty ?? false) ...[ + "Related".toText16(), + 12.height, + ListView.separated( + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemBuilder: (cxt, index) => employeeItemView(nonFavouriteUserList![index]), + separatorBuilder: (cxt, index) => Container( + height: 1, + color: MyColors.borderE3Color, ), - ), - ) - ], + itemCount: nonFavouriteUserList?.length ?? 0), + ] + ], + ).expanded, + if (widget.fromChat) + if (chatUsersList != null && widget.fromChat) + chatUsersList!.isEmpty + ? Column( + children: [ + 20.height, + Utils.getNoDataWidget(context), + ], + ) + : ListView.separated( + physics: const AlwaysScrollableScrollPhysics(), + controller: sc, + shrinkWrap: true, + itemBuilder: (BuildContext cxt, int index) { + return SizedBox( + height: 55, + child: ListTile( + leading: Stack( + children: [ + SvgPicture.asset( + "assets/images/user.svg", + height: 48, + width: 48, + ), + Positioned( + right: 5, + bottom: 1, + child: Container( + width: 10, + height: 10, + decoration: BoxDecoration( + color: chatUsersList![index].userStatus == 1 ? MyColors.green2DColor : Colors.red, + borderRadius: const BorderRadius.all( + Radius.circular(10), + ), + ), + ), + ) + ], + ), + title: (chatUsersList![index].userName ?? "").toText14(color: MyColors.darkTextColor), + minVerticalPadding: 0, + onTap: () { + Navigator.pop(context); + Navigator.pushNamed( + context, + AppRoutes.chatDetailed, + arguments: ChatDetailedScreenParams(chatUsersList![index], true), + ); + }, + ), + ); + }, + separatorBuilder: (BuildContext context, int index) => const Padding( + padding: EdgeInsets.only(right: 10, left: 70, bottom: 0, top: 0), + child: Divider( + color: Color(0xFFE5E5E5), ), - title: (chatUsersList![index].userName ?? "").toText14(color: MyColors.darkTextColor), - minVerticalPadding: 0, - onTap: () { - Navigator.pop(context); - Navigator.pushNamed( - context, - AppRoutes.chatDetailed, - arguments: ChatDetailedScreenParams(chatUsersList![index], true), - ); - }, ), - ); - }, - separatorBuilder: (BuildContext context, int index) => - const Padding( - padding: EdgeInsets.only(right: 10, left: 70, bottom: 0, top: 0), - child: Divider( - color: Color(0xFFE5E5E5), - ), - ), - itemCount: chatUsersList?.length ?? 0, - ) - .expanded, - ], - ) - .paddingOnly(left: 21, right: 21, bottom: 0, top: 21) - .expanded, - Container(width: double.infinity, height: 1, color: MyColors.lightGreyEFColor), - DefaultButton( - LocaleKeys.cancel.tr(), - () { - Navigator.pop(context); - }, - textColor: MyColors.grey3AColor, - colors: const [ - Color(0xffE6E6E6), - Color(0xffE6E6E6), - ], - ).insideContainer + itemCount: chatUsersList?.length ?? 0, + ).expanded, + ], + ).paddingOnly(left: 21, right: 21, bottom: 0, top: 21).expanded, + Container(width: double.infinity, height: 1, color: MyColors.lightGreyEFColor), + DefaultButton( + LocaleKeys.cancel.tr(), + () { + Navigator.pop(context); + }, + textColor: MyColors.grey3AColor, + colors: const [ + Color(0xffE6E6E6), + Color(0xffE6E6E6), + ], + ).insideContainer + ], + ), + ); + } + + Widget employeeItemView(ReplacementList replacement) { + return InkWell( + onTap: () { + Navigator.pop(context); + widget.onSelectEmployee(replacement); + }, + child: SizedBox( + height: 50, + child: Row( + children: [ + CircularAvatar( + url: replacement.employeeImage ?? "", + height: 30, + width: 30, + isImageBase64: true, + ), + 16.width, + Expanded( + child: (replacement.employeeDisplayName ?? "").toText12(), + ), + Icon(Icons.star, size: 16, color: replacement.isFavorite! ? MyColors.yellowFavColor : MyColors.borderCEColor), ], ), - ); - } + ), + ); + } - Widget employeeItemView(ReplacementList replacement) { - return InkWell( - onTap: () { - Navigator.pop(context); - widget.onSelectEmployee(replacement); - }, - child: SizedBox( - height: 50, - child: Row( - children: [ - CircularAvatar( - url: replacement.employeeImage ?? "", - height: 30, - width: 30, - isImageBase64: true, - ), - 16.width, - Expanded( - child: (replacement.employeeDisplayName ?? "").toText12(), - ), - Icon(Icons.star, size: 16, color: replacement.isFavorite! ? MyColors.yellowFavColor : MyColors.borderCEColor), - ], + Widget radioOption(String title, int value, int groupValue) { + return Row( + children: [ + Container( + width: 24, + height: 24, + decoration: BoxDecoration( + color: Colors.transparent, + border: Border.all(color: MyColors.borderColor, width: 1), + borderRadius: const BorderRadius.all( + Radius.circular(100), + ), ), - ), - ); - } - - Widget radioOption(String title, int value, int groupValue) { - return Row( - children: [ - Container( - width: 24, - height: 24, + padding: const EdgeInsets.all(4), + child: Container( + width: double.infinity, + height: double.infinity, decoration: BoxDecoration( - color: Colors.transparent, - border: Border.all(color: MyColors.borderColor, width: 1), + color: value == groupValue ? MyColors.grey3AColor : Colors.transparent, borderRadius: const BorderRadius.all( Radius.circular(100), ), ), - padding: const EdgeInsets.all(4), - child: Container( - width: double.infinity, - height: double.infinity, - decoration: BoxDecoration( - color: value == groupValue ? MyColors.grey3AColor : Colors.transparent, - borderRadius: const BorderRadius.all( - Radius.circular(100), - ), - ), - ), ), - 9.width, - title.toText12(color: MyColors.grey57Color) - ], - ).onPress(() { - _selectedSearchIndex = value; - setState(() {}); - }).expanded; - } + ), + 9.width, + title.toText12(color: MyColors.grey57Color) + ], + ).onPress(() { + _selectedSearchIndex = value; + setState(() {}); + }).expanded; } +}