flutter_integrated_whb/lib/pages/app/ai_alarm_page.dart

165 lines
4.6 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import 'dart:ui';
import 'package:flutter/material.dart';
import 'package:qhd_prevention/customWidget/danner_repain_item.dart';
import 'package:qhd_prevention/customWidget/department_picker.dart';
import 'package:qhd_prevention/customWidget/search_bar_widget.dart';
import 'package:qhd_prevention/pages/home/scan_page.dart';
import 'package:qhd_prevention/pages/home/work/risk_list_page.dart';
import 'package:qhd_prevention/pages/my_appbar.dart';
import 'package:qhd_prevention/tools/SmallWidget.dart';
import 'package:qhd_prevention/tools/tools.dart';
import '../../http/ApiService.dart';
class AiAlarmPage extends StatefulWidget {
const AiAlarmPage({super.key});
@override
_AiAlarmPageState createState() => _AiAlarmPageState();
}
class _AiAlarmPageState extends State<AiAlarmPage>
with SingleTickerProviderStateMixin {
late List<dynamic> _list = [];
int pageNum = 1;
// 模拟数据
final List<NotificationItem> _notifications = List.generate(10, (i) {
bool read = i % 3 == 0;
String title = '测试数据标题标题 ${i + 1}';
String time = '2025-06-${10 + i} 12:3${i}';
return NotificationItem(title, time);
});
final TextEditingController _searchController = TextEditingController();
@override
void initState() {
super.initState();
_getAiAlarmList("");
}
@override
void dispose() {
super.dispose();
}
void _handleItemTap(NotificationItem item, int index) {
print("点击了是: ${item.title}");
// pushPage(RiskListPage(), context);
}
// 显示分类选择器
void showCategoryPicker() {
showModalBottomSheet(
context: context,
isScrollControlled: true,
barrierColor: Colors.black54,
backgroundColor: Colors.transparent,
builder:
(ctx) => DepartmentPicker(onSelected: (id, name) {
}),
);
}
Future<void> _getAiAlarmList(String keyWord) async {
// LoadingDialogHelper.show();
try {
final result = await ApiService.getAiAlarmList("-1", pageNum.toString(),keyWord);
if (result['result'] == 'success') {
final List<dynamic> newList = result['varList'] ?? [];
setState(() {
_list.addAll(newList);
});
}
} catch (e) {
print('加载出错: $e');
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: MyAppbar(
title: "AI报警",
),
body: SafeArea(
child: Column(
children: [
// Search bar
Padding(
padding: const EdgeInsets.all(10),
child: SearchBarWidget(
showResetButton: true,
onInputTap: () {
showCategoryPicker();
},
hintText: "",
isClickableOnly: true,
onSearch: (text) {
// print('----------');
_getAiAlarmList(text);
},
controller: _searchController,
),
),
// List
Expanded(
child: _list.isEmpty
? NoDataWidget.show()
: ListView.separated(
itemCount: _notifications.length,
separatorBuilder: (_, __) => const SizedBox(),
itemBuilder: (context, index) {
// NotificationItem item = _notifications[index];
// return GestureDetector(
// onTap: () => _handleItemTap(item, index),
// child: DannerRepainItem(
// title: '测试--------new',
// details: [
// '清单类型:测试',
// '排查周期:测试',
// '包含检查项3',
// '负责人:是测试',
// '起始时间2025-6-20',
// '',
// '测试一下是否跳过时间',
// ],
// showBottomTags: true,
// bottomTags: [
// riskTagText(1, "重大风险:0"),
// riskTagText(2, "较大:3"),
// riskTagText(3, "一般:1"),
// riskTagText(4, "低:0"),
// ],
// ),
// );
},
),
),
],
),
),
);
}
}
// 模拟数据模版
class NotificationItem {
final String title;
final String time;
NotificationItem(this.title, this.time);
}