Flutter: System UI 'Location Permissions' 对话框中断了代码执行的连续性?
Flutter: System UI 'Location Permissions' dialog breaks the continuity of the execution of the code?
我有一个使用包 location
的项目。
一切正常,只是一个小问题:当应用程序 运行 第一次询问位置权限(使用对话框)并且用户接受时,flutter 上的代码不会继续执行。
代码如下:
@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 客户端并获取用户坐标。系统显示请求权限的对话框,用户点击允许,最终代码:
setState(() {
_isLoadingSocket = false;
});
不会从不执行,因此屏幕会永远显示 CircularProgressIndicator(因为 _isLoadingSocket 标志永远不会更改)。如果我重新启动我的应用程序,工作没有任何问题。有什么帮助吗?
问题依然存在。但是,我找到了一个解决方案,并在任何其他事情之前请求权限。
我有一个使用包 location
的项目。
一切正常,只是一个小问题:当应用程序 运行 第一次询问位置权限(使用对话框)并且用户接受时,flutter 上的代码不会继续执行。
代码如下:
@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 客户端并获取用户坐标。系统显示请求权限的对话框,用户点击允许,最终代码:
setState(() {
_isLoadingSocket = false;
});
不会从不执行,因此屏幕会永远显示 CircularProgressIndicator(因为 _isLoadingSocket 标志永远不会更改)。如果我重新启动我的应用程序,工作没有任何问题。有什么帮助吗?
问题依然存在。但是,我找到了一个解决方案,并在任何其他事情之前请求权限。