Я создаю приложение Flutter, в котором я хочу проверить, включен ли у пользователя Wi-Fi, прежде чем перейти к другому действию.
if (wifiEnabled) {
//Do stuff
}
else {
//Tell the user to turn on wifi
}
У меня есть фрагмент кода, который позволяет мне проверить,у пользователя есть подключение к Интернету из этого поста. Проверьте, доступно ли подключение к Интернету в приложении Flutter
void _checkWifi() async {
try {
final result = await InternetAddress.lookup('google.com');
if (result.isNotEmpty && result[0].rawAddress.isNotEmpty) {
print('connected');
_wifiEnabled = true;
}
} on SocketException catch (_) {
print('not connected');
_wifiEnabled = false;
}
}
Проблема, с которой я столкнулся, заключается в том, что функция checkWifi асинхронна.Если пользователь переходит от отсутствия Wi-Fi к Wi-Fi, логическое значение не обновляется к тому времени, когда проверяется код if (wifiEnabled), поэтому согласно логике wifiEnabled будет иметь значение false, несмотря на то, что у пользователя есть Wi-Fi.
Если пользователь попытается снова, однако у него будет Wi-Fi, так как wifiEnabled будет обновлен до true.Я пытался использовать Timer и Future.delayed, но до сих пор не смог решить свою проблему.
Любой совет для решения проблемы или асинхронных вызовов в целом был бы очень полезен.Спасибо