小编npl*_*lus的帖子

Flutter 隔离的平台位置权限错误

我正在尝试在 Flutter 隔离线程上运行位置更新,错误仅在运行隔离时出现。位置请求在主线程上没有问题。这里的目标是将其作为后台服务运行,仅使用 dart 代码。我正在使用Geolocator插件进行位置请求。

这是我在启动隔离时面临的错误:

发生异常。FlutterError(在初始化绑定之前访问了ServicesBinding.defaultBinaryMessenger。

我试图包括WidgetsFlutterBinding.ensureInitialized()之前的 runApp 但没有结果。查看错误的调用堆栈,似乎在android位置平台调用中出现问题:checkPermissionStatus 无论我使用什么位置插件,都会发生这种情况,它会在权限状态检查时停止。

我认为这可能与等待位置权限用户输入有关,但是此检查在非 ui 线程上会失败?

请参阅这个简单的 main.dart 文件作为示例:

import 'dart:isolate';
import 'package:flutter/material.dart';
import 'package:geolocator/geolocator.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Isolate location test',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Isolate location test'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);
  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState(); …
Run Code Online (Sandbox Code Playgroud)

android location dart dart-isolates flutter

5
推荐指数
1
解决办法
687
查看次数

标签 统计

android ×1

dart ×1

dart-isolates ×1

flutter ×1

location ×1