main.dart 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. import 'package:flutter/material.dart';
  2. import 'package:smartledz_wifi_test/plugin/wifi_plugin.dart';
  3. import 'package:flutter_screenutil/flutter_screenutil.dart';
  4. import 'package:smartledz_wifi_test/models/wifi_model.dart';
  5. import 'package:smartledz_wifi_test/widgets/button_for_block.dart';
  6. import 'package:smartledz_wifi_test/widgets/wifi_item.dart';
  7. void main() {
  8. runApp(const MyApp());
  9. }
  10. class MyApp extends StatelessWidget {
  11. const MyApp({super.key});
  12. @override
  13. Widget build(BuildContext context) {
  14. return ScreenUtilInit(
  15. builder: (BuildContext context, Widget? child) {
  16. return MaterialApp(
  17. title: 'SmartLEDZ WiFi Test',
  18. theme: ThemeData(
  19. primarySwatch: Colors.blue,
  20. ),
  21. home: Scaffold(
  22. body: child!,
  23. ),
  24. );
  25. },
  26. child: const SafeArea(
  27. left: false,
  28. right: false,
  29. bottom: false,
  30. child: WifiList(),
  31. ),
  32. );
  33. }
  34. }
  35. class WifiList extends StatefulWidget {
  36. const WifiList({Key? key}) : super(key: key);
  37. @override
  38. State<WifiList> createState() => _WifiListState();
  39. }
  40. class _WifiListState extends State<WifiList> {
  41. final List<WifiModel> _wifiList = [
  42. WifiModel(ssid: "zhonghui-5G", bssid: "1", rssi: 10),
  43. WifiModel(ssid: "zhonghui_02", bssid: "2", rssi: 13),
  44. WifiModel(ssid: "endo-lighting", bssid: "3", rssi: 50),
  45. WifiModel(ssid: "endo-lighting", bssid: "4", rssi: 50),
  46. WifiModel(ssid: "endo-lighting", bssid: "5", rssi: 50),
  47. WifiModel(ssid: "endo-lighting", bssid: "6", rssi: 50),
  48. WifiModel(ssid: "endo-lighting", bssid: "7", rssi: 50),
  49. WifiModel(ssid: "endo-lighting", bssid: "8", rssi: 50),
  50. WifiModel(ssid: "endo-lighting", bssid: "9", rssi: 50, result: "测试通过"),
  51. WifiModel(ssid: "endo-lighting", bssid: "10", rssi: 50),
  52. WifiModel(ssid: "endo-lighting", bssid: "11", rssi: 50, result: "正在测试"),
  53. WifiModel(ssid: "endo-lighting", bssid: "12", rssi: 50, result: "正在测试"),
  54. WifiModel(ssid: "endo-lighting", bssid: "13", rssi: 50, result: "未通过"),
  55. WifiModel(ssid: "endo-lighting", bssid: "14", rssi: 50),
  56. WifiModel(ssid: "endo-lighting", bssid: "15", rssi: 50),
  57. WifiModel(ssid: "endo-lighting", bssid: "16", rssi: 50),
  58. WifiModel(ssid: "endo-lighting", bssid: "17", rssi: 50),
  59. WifiModel(ssid: "endo-lighting", bssid: "18", rssi: 50),
  60. ];
  61. final List<String> _selectWifiList = []; // 已选择的wifi的bssid标识列表
  62. @override
  63. Widget build(BuildContext context) {
  64. return Column(
  65. children: [
  66. Expanded(
  67. child: ListView(
  68. children: List.generate(_wifiList.length, (index){
  69. WifiModel wifi = _wifiList[index];
  70. return WifiItem(
  71. wifiModel: wifi, // wifi模型
  72. active: _selectWifiList.contains(wifi.bssid), // 是否选中状态
  73. onTap: (WifiModel wifiModel){ // 列表点击事件
  74. setState(() {
  75. if(_selectWifiList.contains(wifi.bssid)){ // 已选中,则取消选中
  76. _selectWifiList.remove(wifi.bssid);
  77. }else{
  78. _selectWifiList.add(wifi.bssid);
  79. }
  80. });
  81. },
  82. );
  83. }),
  84. ),
  85. ),
  86. ButtonForBlock(
  87. title: "开始测试",
  88. radius: 0,
  89. width: MediaQuery.of(context).size.width,
  90. height: 50.sp,
  91. onTap: (){
  92. if(_selectWifiList.isNotEmpty){
  93. // 有选中的wifi,则只处理选中的wifi
  94. // TODO 此处完善处理逻辑
  95. // 选中的wifi bssid列表 _selectWifiList
  96. return;
  97. }
  98. // 处理全部wifi
  99. // TODO 此处完善处理逻辑
  100. },
  101. )
  102. ],
  103. );
  104. }
  105. }