diff --git a/lib/pages/search/controller.dart b/lib/pages/search/controller.dart index 97bb5dad..ae7bd675 100644 --- a/lib/pages/search/controller.dart +++ b/lib/pages/search/controller.dart @@ -21,6 +21,8 @@ class SSearchController extends GetxController { int initIndex = 0; + RxBool showUidBtn = false.obs; + @override void onInit() { super.onInit(); @@ -44,7 +46,12 @@ class SSearchController extends GetxController { } } + void validateUid() { + showUidBtn.value = RegExp(r'^\d+$').hasMatch(controller.text); + } + void onChange(String value) { + validateUid(); if (value.isEmpty) { searchSuggestList.clear(); } else { @@ -57,6 +64,7 @@ class SSearchController extends GetxController { controller.clear(); searchSuggestList.clear(); searchFocusNode.requestFocus(); + showUidBtn.value = false; } else { Get.back(); } @@ -69,6 +77,7 @@ class SSearchController extends GetxController { return; } controller.text = hintText; + validateUid(); } historyList.remove(controller.text); @@ -98,6 +107,8 @@ class SSearchController extends GetxController { void onClickKeyword(String keyword) { controller.text = keyword; + validateUid(); + searchSuggestList.clear(); submit(); } diff --git a/lib/pages/search/view.dart b/lib/pages/search/view.dart index 90cc8f7f..363aae9e 100644 --- a/lib/pages/search/view.dart +++ b/lib/pages/search/view.dart @@ -29,6 +29,26 @@ class _SearchPageState extends State with RouteAware { ), ), actions: [ + Obx( + () => _searchController.showUidBtn.value + ? IconButton( + tooltip: 'UID搜索用户', + icon: const Icon(Icons.person_outline, size: 22), + onPressed: () { + if (RegExp(r'^\d+$') + .hasMatch(_searchController.controller.text)) { + Get.toNamed( + '/member?mid=${_searchController.controller.text}'); + } + }, + ) + : const SizedBox.shrink(), + ), + IconButton( + tooltip: '清空', + icon: const Icon(Icons.clear, size: 22), + onPressed: _searchController.onClear, + ), IconButton( tooltip: '搜索', onPressed: () => _searchController.submit(), @@ -46,11 +66,6 @@ class _SearchPageState extends State with RouteAware { decoration: InputDecoration( hintText: _searchController.hintText, border: InputBorder.none, - suffixIcon: IconButton( - tooltip: '清空', - icon: const Icon(Icons.clear, size: 22), - onPressed: _searchController.onClear, - ), ), onSubmitted: (value) => _searchController.submit(), ),