diff --git a/lib/modules/meeting/controllers/meeting_controller.dart b/lib/modules/meeting/controllers/meeting_controller.dart index 779f52a79..8af37fc99 100644 --- a/lib/modules/meeting/controllers/meeting_controller.dart +++ b/lib/modules/meeting/controllers/meeting_controller.dart @@ -38,6 +38,7 @@ class MeetingController extends GetxController { RxList dataList = [].obs; RxString filtrateType = ''.obs; bool isAsc = false; + TextEditingController filtrateController = TextEditingController(); // 蓝牙服务 final bleManager = Get.find(); @@ -62,6 +63,7 @@ class MeetingController extends GetxController { @override void onClose() { titleController.dispose(); + filtrateController.dispose(); _audioPlayer.dispose(); super.onClose(); } diff --git a/lib/modules/meeting/views/bottomSheet/filtrate_drawer.dart b/lib/modules/meeting/views/bottomSheet/filtrate_drawer.dart index 6f3058b2d..ab6941ed4 100644 --- a/lib/modules/meeting/views/bottomSheet/filtrate_drawer.dart +++ b/lib/modules/meeting/views/bottomSheet/filtrate_drawer.dart @@ -41,7 +41,7 @@ class _FiltrateDrawerState extends State { ), Expanded( child: TextField( - controller: _controller.titleController, + controller: _controller.filtrateController, style: TextStyle( color: Colors.black87, fontSize: 14.sp, @@ -57,6 +57,24 @@ class _FiltrateDrawerState extends State { border: InputBorder.none, contentPadding: EdgeInsets.symmetric(vertical: 10.w), ), + onSubmitted: (String value) { + widget.scaffoldKey.currentState?.closeDrawer(); + _controller.dataList.value = + _controller.originalDataList.where((i) { + final titleLower = i['title'].trim().toLowerCase(); + final queryLower = value.trim().toLowerCase(); + bool isType = true; + if (_controller.filtrateType.value.isNotEmpty) { + isType = + _controller.filtrateType.value == i['type']; + } + return isType && titleLower.contains(queryLower); + }).toList(); + if (_controller.isAsc) { + _controller.dataList.value = + _controller.dataList.reversed.toList(); + } + }, ), ), ], @@ -205,6 +223,7 @@ class _FiltrateDrawerState extends State { void _filtrateDataList(String type) { widget.scaffoldKey.currentState?.closeDrawer(); _controller.filtrateType.value = type; + _controller.filtrateController.text = ''; if (type.isNotEmpty) { _controller.dataList.value = _controller.originalDataList.where((i) => i['type'] == type).toList();