Flutter:系统UI“位置权限”对话框中断了代码执行的连续性?

问题描述 投票:0回答:1

我有一个使用软件包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客户端并获取用户坐标。系统显示对话框询问许可权,用户单击ALLOW并输入最终代码:

      setState(() {
        _isLoadingSocket = false;
      });

永远不会执行,因此屏幕上会永远显示一个CircularProgressIndicator(因为_isLoadingSocket标志永远不会更改)。如果我重新启动应用程序,则可以正常工作。任何帮助吗?

android flutter location state android-permissions
1个回答
0
投票

问题仍然存在。但是,我找到了解决方案,并要求在任何其他事情之前获得权限。

© www.soinside.com 2019 - 2024. All rights reserved.