|
@@ -1,5 +1,6 @@
|
|
|
import 'dart:convert';
|
|
|
|
|
|
+import 'package:dart_ping/dart_ping.dart';
|
|
|
import 'package:flutter/material.dart';
|
|
|
import 'package:flutter/services.dart';
|
|
|
import 'package:smartledz_wifi_test/plugin/wifi_plugin.dart';
|
|
@@ -65,6 +66,8 @@ class _WifiListState extends State<WifiList> {
|
|
|
|
|
|
final List<WifiModel> _wifiList = []; // 扫描的wifi列表
|
|
|
final List<String> _selectWifiList = []; // 已选择的wifi的bssid标识列表
|
|
|
+ void Function()? _connectCallback; // 连接成功回调
|
|
|
+ void Function()? _disconnectCallback; // 断开连接回调
|
|
|
|
|
|
@override
|
|
|
void initState() {
|
|
@@ -75,6 +78,7 @@ class _WifiListState extends State<WifiList> {
|
|
|
Map jsonArr = jsonDecode(dataStr);
|
|
|
debugPrint("收到通知事件 ---> $jsonArr");
|
|
|
switch(jsonArr["cmd"]){
|
|
|
+
|
|
|
case "scanResult": // 扫描
|
|
|
setState(() {
|
|
|
for (var element in _wifiList) { // 已存在则跳过
|
|
@@ -98,6 +102,15 @@ class _WifiListState extends State<WifiList> {
|
|
|
});
|
|
|
});
|
|
|
break;
|
|
|
+
|
|
|
+ case "connected": // 连接成功
|
|
|
+ _connectCallback?.call();
|
|
|
+ break;
|
|
|
+
|
|
|
+ case "disconnect": // 断开连接
|
|
|
+ debugPrint("断开连接回调 _____> ");
|
|
|
+ _disconnectCallback?.call();
|
|
|
+ break;
|
|
|
}
|
|
|
});
|
|
|
|
|
@@ -150,8 +163,30 @@ class _WifiListState extends State<WifiList> {
|
|
|
|
|
|
WifiModel wifiModel = _wifiList[wifiIndex];
|
|
|
|
|
|
- setState(()=>_wifiList[wifiIndex].result="正在测试");
|
|
|
+ setState(()=>_wifiList[wifiIndex].result="正在连接");
|
|
|
debugPrint("开始连接wifi ssid --> ${wifiModel.ssid} bssid --> ${wifiModel.bssid}");
|
|
|
+ _connectCallback = (){
|
|
|
+ debugPrint("wifi ---> 连接成功");
|
|
|
+ setState(()=>_wifiList[wifiIndex].result="正在测试");
|
|
|
+ final ping = Ping('192.168.16.254', count: 3);
|
|
|
+ int? ttl;
|
|
|
+ ping.stream.listen((event) {
|
|
|
+ if(event.response?.ttl != null){
|
|
|
+ ttl = event.response!.ttl;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ Future.delayed(const Duration(seconds: 3), (){
|
|
|
+ if(ttl != null){
|
|
|
+ setState(()=>_wifiList[wifiIndex].result="测试通过");
|
|
|
+ _disconnectCallback = (){ // 断开成功的回调
|
|
|
+ eachTestWifiList(isSelect, index+1); // 开始测试下一个设备
|
|
|
+ };
|
|
|
+ WiFiPlugin.disconnect();
|
|
|
+ }else{
|
|
|
+ setState(()=>_wifiList[wifiIndex].result="未通过");
|
|
|
+ }
|
|
|
+ });
|
|
|
+ };
|
|
|
WiFiPlugin.connect(wifiModel.ssid, wifiModel.bssid, "12345678");
|
|
|
}
|
|
|
|