import 'package:flutter/material.dart'; import 'package:smartledz_wifi_test/plugin/wifi_plugin.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:smartledz_wifi_test/models/wifi_model.dart'; import 'package:smartledz_wifi_test/widgets/button_for_block.dart'; import 'package:smartledz_wifi_test/widgets/wifi_item.dart'; void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { return ScreenUtilInit( builder: (BuildContext context, Widget? child) { return MaterialApp( title: 'SmartLEDZ WiFi Test', theme: ThemeData( primarySwatch: Colors.blue, ), home: Scaffold( body: child!, ), ); }, child: const SafeArea( left: false, right: false, bottom: false, child: WifiList(), ), ); } } class WifiList extends StatefulWidget { const WifiList({Key? key}) : super(key: key); @override State createState() => _WifiListState(); } class _WifiListState extends State { final List _wifiList = [ WifiModel(ssid: "zhonghui-5G", bssid: "1", rssi: 10), WifiModel(ssid: "zhonghui_02", bssid: "2", rssi: 13), WifiModel(ssid: "endo-lighting", bssid: "3", rssi: 50), WifiModel(ssid: "endo-lighting", bssid: "4", rssi: 50), WifiModel(ssid: "endo-lighting", bssid: "5", rssi: 50), WifiModel(ssid: "endo-lighting", bssid: "6", rssi: 50), WifiModel(ssid: "endo-lighting", bssid: "7", rssi: 50), WifiModel(ssid: "endo-lighting", bssid: "8", rssi: 50), WifiModel(ssid: "endo-lighting", bssid: "9", rssi: 50, result: "测试通过"), WifiModel(ssid: "endo-lighting", bssid: "10", rssi: 50), WifiModel(ssid: "endo-lighting", bssid: "11", rssi: 50, result: "正在测试"), WifiModel(ssid: "endo-lighting", bssid: "12", rssi: 50, result: "正在测试"), WifiModel(ssid: "endo-lighting", bssid: "13", rssi: 50, result: "未通过"), WifiModel(ssid: "endo-lighting", bssid: "14", rssi: 50), WifiModel(ssid: "endo-lighting", bssid: "15", rssi: 50), WifiModel(ssid: "endo-lighting", bssid: "16", rssi: 50), WifiModel(ssid: "endo-lighting", bssid: "17", rssi: 50), WifiModel(ssid: "endo-lighting", bssid: "18", rssi: 50), ]; final List _selectWifiList = []; // 已选择的wifi的bssid标识列表 @override Widget build(BuildContext context) { return Column( children: [ Expanded( child: ListView( children: List.generate(_wifiList.length, (index){ WifiModel wifi = _wifiList[index]; return WifiItem( wifiModel: wifi, // wifi模型 active: _selectWifiList.contains(wifi.bssid), // 是否选中状态 onTap: (WifiModel wifiModel){ // 列表点击事件 setState(() { if(_selectWifiList.contains(wifi.bssid)){ // 已选中,则取消选中 _selectWifiList.remove(wifi.bssid); }else{ _selectWifiList.add(wifi.bssid); } }); }, ); }), ), ), ButtonForBlock( title: "开始测试", radius: 0, width: MediaQuery.of(context).size.width, height: 50.sp, onTap: (){ if(_selectWifiList.isNotEmpty){ // 有选中的wifi,则只处理选中的wifi // TODO 此处完善处理逻辑 // 选中的wifi bssid列表 _selectWifiList return; } // 处理全部wifi // TODO 此处完善处理逻辑 }, ) ], ); } }