搜索框

This commit is contained in:
2026-01-28 16:27:37 +08:00
parent 7112d70aba
commit 55569839a7

View File

@@ -18,7 +18,7 @@ class SitePage extends GetView<SiteController> {
id: 'site', id: 'site',
builder: (_) { builder: (_) {
return Scaffold( return Scaffold(
backgroundColor: Color(0xFFF5F7F9), backgroundColor: Color.fromRGBO(247, 249, 251, 1),
body: SingleChildScrollView(child: _buildView(context)), body: SingleChildScrollView(child: _buildView(context)),
); );
}, },
@@ -60,7 +60,7 @@ class SitePage extends GetView<SiteController> {
'历史记录', '历史记录',
style: TextStyle( style: TextStyle(
fontSize: 14.sp, fontSize: 14.sp,
fontWeight: FontWeight.w500, fontWeight: FontWeight.bold,
color: Color.fromRGBO(156, 163, 175, 1), color: Color.fromRGBO(156, 163, 175, 1),
), ),
), ),
@@ -267,36 +267,78 @@ class SitePage extends GetView<SiteController> {
//搜索输入框,提示可以输入车牌或者手机 //搜索输入框,提示可以输入车牌或者手机
Widget _buildSearchView() { Widget _buildSearchView() {
return Padding( return Padding(
padding: const EdgeInsets.fromLTRB(16, 12, 16, 0), padding: EdgeInsets.fromLTRB(0, 0, 0, 8.h),
child: Row( child: Row(
children: [ children: [
Expanded( Expanded(
child: SizedBox( child: SizedBox(
height: 44, height: 42.h,
child: TextField( child: TextField(
textAlignVertical: TextAlignVertical.center,
controller: controller.searchController, // 绑定控制器 controller: controller.searchController, // 绑定控制器
decoration: InputDecoration( decoration: InputDecoration(
hintText: '输入车牌号或完整手机号查询', filled: true,
contentPadding: const EdgeInsets.symmetric(horizontal: 16), isDense: true,
fillColor: Colors.white,
hintText: '输入车牌号或手机号搜索...',
contentPadding: const EdgeInsets.symmetric(
vertical: 12,
horizontal: 16,
),
border: OutlineInputBorder( border: OutlineInputBorder(
borderRadius: BorderRadius.circular(22), borderRadius: BorderRadius.circular(12),
borderSide: BorderSide(color: Colors.grey.shade300), borderSide: BorderSide(color: Color.fromRGBO(229, 231, 235, 1)),
), ),
enabledBorder: OutlineInputBorder( enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(22), borderRadius: BorderRadius.circular(12),
borderSide: BorderSide(color: Colors.grey.shade300), borderSide: BorderSide(color: Color.fromRGBO(229, 231, 235, 1)),
), ),
focusedBorder: OutlineInputBorder( focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(22), borderRadius: BorderRadius.circular(12),
borderSide: BorderSide(color: Get.theme.primaryColor, width: 1.5), borderSide: BorderSide(
color: Color.fromRGBO(229, 231, 235, 1),
width: 1.5,
),
), ),
// 清除按钮 // 清除按钮
suffixIcon: IconButton( suffix: Row(
icon: const Icon(Icons.clear, size: 20), mainAxisSize: MainAxisSize.min,
onPressed: () { children: [
controller.searchController.clear(); IconButton(
controller.fetchReservationData(); // 清除后也刷新一次 icon: const Icon(Icons.clear, size: 20),
}, onPressed: () {
controller.searchController.clear();
controller.fetchReservationData(); // 清除后也刷新一次
},
),
GestureDetector(
onTap: () {
// 点击“搜索”按钮时触发
FocusScope.of(Get.context!).unfocus(); // 收起键盘
controller.fetchReservationData();
},
child: Container(
padding: EdgeInsets.only(
left: 16.w,
right: 16.h,
top: 4.5.h,
bottom: 4.5.h,
),
decoration: BoxDecoration(
color: Color.fromRGBO(1, 113, 55, 1),
borderRadius: BorderRadius.circular(8),
),
child: Text(
"搜索",
style: TextStyle(
color: Colors.white,
fontWeight: FontWeight.w500,
fontSize: 12.sp,
),
),
),
),
],
), ),
), ),
onSubmitted: (value) { onSubmitted: (value) {
@@ -306,40 +348,6 @@ class SitePage extends GetView<SiteController> {
), ),
), ),
), ),
const SizedBox(width: 10),
ElevatedButton(
onPressed: () {
// 点击“搜索”按钮时触发
FocusScope.of(Get.context!).unfocus(); // 收起键盘
controller.fetchReservationData();
},
style: ElevatedButton.styleFrom(
shape: const CircleBorder(),
padding: const EdgeInsets.all(8),
),
child: const Icon(Icons.search_rounded),
),
],
),
);
}
/// 构建单个统计项
Widget _buildStatItem(String value, String label, {Color valueColor = Colors.blue}) {
return Expanded(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Text(
value,
style: TextStyle(
fontSize: 18,
fontWeight: FontWeight.bold,
color: valueColor,
),
),
const SizedBox(height: 4),
Text(label, style: const TextStyle(fontSize: 14, color: Colors.grey)),
], ],
), ),
); );