diff --git a/assets/images/message_page_empty.png b/assets/images/message_page_empty.png new file mode 100644 index 0000000..d256d7e Binary files /dev/null and b/assets/images/message_page_empty.png differ diff --git a/assets/images/search_page_empty.png b/assets/images/search_page_empty.png new file mode 100644 index 0000000..349fa05 Binary files /dev/null and b/assets/images/search_page_empty.png differ diff --git a/lib/controller/discover/search_page_controller.dart b/lib/controller/discover/search_page_controller.dart index 968802e..4771e9c 100644 --- a/lib/controller/discover/search_page_controller.dart +++ b/lib/controller/discover/search_page_controller.dart @@ -23,6 +23,8 @@ class SearchPageController extends GetxController { final matchmakerList = [].obs; + final search = false.obs; + Timer? _debounce; void onTextChanged(String text) { @@ -37,6 +39,7 @@ class SearchPageController extends GetxController { searchData() async { if(name.value.trim() == "" || name.value.trim().isEmpty){ + search.value = false; return; } try{ @@ -48,6 +51,7 @@ class SearchPageController extends GetxController { final data = response.data.data?.records ?? []; matchmakerList.value = data.toList(); + search.value = true; } else { diff --git a/lib/generated/assets.dart b/lib/generated/assets.dart index 95b4ff7..625b9d0 100644 --- a/lib/generated/assets.dart +++ b/lib/generated/assets.dart @@ -160,6 +160,7 @@ class Assets { static const String imagesMatchmakerIcon4 = 'assets/images/matchmaker_icon4.png'; static const String imagesMatchmakerTag = 'assets/images/matchmaker_tag.png'; static const String imagesMessageNol = 'assets/images/message_nol.png'; + static const String imagesMessagePageEmpty = 'assets/images/message_page_empty.png'; static const String imagesMessagePre = 'assets/images/message_pre.png'; static const String imagesMicClose = 'assets/images/mic_close.png'; static const String imagesMicCouponIcon = 'assets/images/mic_coupon_icon.png'; @@ -202,6 +203,7 @@ class Assets { static const String imagesRoseWhite = 'assets/images/rose_white.png'; static const String imagesRtcEmpty = 'assets/images/rtc_empty.png'; static const String imagesSearch = 'assets/images/search.png'; + static const String imagesSearchPageEmpty = 'assets/images/search_page_empty.png'; static const String imagesSeat = 'assets/images/seat.png'; static const String imagesSendCall = 'assets/images/send_call.png'; static const String imagesSendMessageIcon = 'assets/images/send_message_icon.png'; diff --git a/lib/pages/discover/search_page.dart b/lib/pages/discover/search_page.dart index b60d78d..d4d9531 100644 --- a/lib/pages/discover/search_page.dart +++ b/lib/pages/discover/search_page.dart @@ -90,7 +90,7 @@ class SearchPage extends StatelessWidget { padding: EdgeInsets.symmetric(horizontal: 15.w), child: Column( children: [ - if(controller.matchmakerList.isEmpty) Container( + if(controller.matchmakerList.isEmpty && !controller.search.value) Container( padding: EdgeInsets.only(top: 45.w), child: Column( children: [ @@ -106,6 +106,26 @@ class SearchPage extends StatelessWidget { ], ), ), + if(controller.matchmakerList.isEmpty && controller.search.value) Container( + padding: EdgeInsets.only(top: 45.w), + child: Column( + children: [ + Image.asset( + Assets.imagesSearchPageEmpty, + width: 69.w, + ), + Text( + "搜索失败" + ), + Text( + "请输入正确的昵称或ID", + style: TextStyle( + color: const Color.fromRGBO(189, 189, 189, 1) + ), + ), + ], + ), + ), ...controller.matchmakerList.map((e){ return SearchItem(item: e,); }), diff --git a/lib/pages/message/conversation_tab.dart b/lib/pages/message/conversation_tab.dart index e4cd88f..04e80b4 100644 --- a/lib/pages/message/conversation_tab.dart +++ b/lib/pages/message/conversation_tab.dart @@ -100,7 +100,7 @@ class _ConversationTabState extends State return Obx(() { final filteredConversations = controller.conversations; - if (filteredConversations.isEmpty) { + if (filteredConversations.isEmpty && !controller.isSearch.value) { return Center( child: Text( controller.filterType.value == FilterType.none @@ -114,12 +114,36 @@ class _ConversationTabState extends State ); } + if (filteredConversations.isEmpty && controller.isSearch.value) { + return Container( + padding: EdgeInsets.only(top: 45.w), + child: Column( + children: [ + + Image.asset( + Assets.imagesMessagePageEmpty, + width: 69.w, + ), + Text( + "暂无消息" + ), + Text( + "换个关键词试试吧", + style: TextStyle( + color: const Color.fromRGBO(189, 189, 189, 1) + ), + ), + ], + ), + ); + } + return ListView.builder( padding: const EdgeInsets.only(top: 8), itemCount: filteredConversations.length, itemBuilder: (context, index) { final conversation = filteredConversations[index]; - return BuildConversationItem(conversation: conversation); + return BuildConversationItem(conversation: conversation, key: ValueKey(conversation.id),); }, ); });