У меня есть проект, в котором я использую пакет location
. Все работает хорошо, только небольшая проблема: когда приложения запускаются в первый раз и запрашивают разрешение на местоположение (используя диалоговое окно), и пользователь принимает, код на флаттере не продолжает выполнение.
Здесь это код:
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) async {
try {
await Provider.of<TurnActiveProvider>(context, listen: false)
.connectSocket();
} catch (error) {
Provider.of<ErrorProvider>(context, listen: false)
.showError(context, error, _scaffold);
}
setState(() {
_isLoadingSocket = false;
});
});
}
Эта строка провайдера:
await Provider.of<TurnActiveProvider>(context, listen: false)
.connectSocket();
вызывает и активирует socketio клиент и получает пользовательские координаты. Система показывает диалоговое окно с запросом разрешения, пользователь нажимает ALLOW и окончательный код:
setState(() {
_isLoadingSocket = false;
});
Не выполняется никогда, поэтому на экране всегда отображается CircularProgressIndicator (поскольку флаг _isLoadingSocket никогда не изменяется). Если я перезапущу свое приложение, работает без проблем. Любая помощь с этим?