我正在制作Flutter应用程序,我想在此之前先检查用户是否已启用wifi。
index.php
我有一个代码段,可让我检查用户是否通过此帖子连接了互联网。 Check whether there is an Internet connection available on Flutter app
$_SERVER['DOCUMENT_ROOT']
我遇到的问题是因为checkWifi函数是异步的。如果用户从没有wifi变为拥有wifi,则在检查if(wifiEnabled)代码时布尔值不会更新,因此根据逻辑wifiEnabled将为false,尽管用户具有wifi。
但是,如果用户重试,则他们将拥有wifi,因为wifiEnabled将更新为true。我已经尝试使用Timer和Future.delayed,但是到目前为止我还无法解决我的问题。
任何有关处理问题或异步调用的建议通常都会很有帮助。谢谢
答案 0 :(得分:0)
希望以下代码可以帮助您理解。
class YourWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
showWifiAlert();
return ...
}
void showWifiAlert() async {
var wifiEnabled = await getWifiStatus();
if (wifiEnabled) {
//Do stuff
}
else {
//Ask user to enable internet
}
}
Future<bool> getWifiStatus() async {
try {
final result = await InternetAddress.lookup('google.com');
if (result.isNotEmpty && result[0].rawAddress.isNotEmpty) {
print('connected');
return true;
}
} on SocketException catch (_) {
print('not connected');
return false;
}
}
}