Flutter ServicesBinding.defaultBinaryMessenger在使用Flatter的计算函数时出现问题

Flutter ServicesBinding.defaultBinaryMessenger在使用Flatter的计算函数时出现问题,flutter,dart,Flutter,Dart,我正在使用flatter构建一个资源管理器获取应用程序长度需要一段时间,所以我尝试使用annother隔离获取值,这是我main.dart代码的一部分 Future<int> getValueFromIsolate() async { return await compute( apps, 0, ); } Future<int> apps(int n) async { int value = 0; List apps = await DeviceApps.g

我正在使用flatter构建一个资源管理器获取应用程序长度需要一段时间,所以我尝试使用annother隔离获取值,这是我main.dart代码的一部分

Future<int> getValueFromIsolate() async {
 return await compute(
  apps,
  0,
 );
}

Future<int> apps(int n) async {
int value = 0;
List apps = await DeviceApps.getInstalledApplications(
 includeAppIcons: true,
 includeSystemApps: true,
 onlyAppsWithLaunchIntent: true,
 );
 print(apps.length);
 value = apps.length;
 print(value);
 return value;
}
但我还是犯了这个错误

I/颤振6234:在初始化绑定之前访问了ServicesBinding.defaultBinaryMessenger。 I/flatter 6234:如果您正在运行应用程序,并且需要在调用runApp之前(例如,在插件初始化期间)访问二进制messenger,那么您需要先显式调用WidgetsFlutterBinding.ensureInitialized。 I/flatter 6234:如果正在运行测试,可以调用TestWidgetsFlutterBinding.ensureInitialized作为测试主方法中初始化绑定的第一行

我不明白发生了什么事 我不知道该怎么办。。!!
请需要您的帮助感谢您的阅读和帮助当前颤振平台频道有限制-通信仅由应用程序启动时创建的主隔离支持

DeviceApps.getInstalledApplications会调用平台通道来访问平台API和 您可以从隔离中调用它-compute会为您创建新的隔离 但是,有两个插件可以帮助您:

提供 可以与插件通信的替换隔离,因为它创建 它自己的UI不支持任何您看到或必须处理的内容,只是 技术上

使用此软件包而非颤振隔离本身的优点是 这增加了处理能力,你可以启动几个隔离, 跟踪他们,你不必建立自己的沟通 在隔离线程和主线程之间,您必须执行一些操作 手动使用原始库存隔离和颤振隔离 因为它是抽象的,随时可用


如果你还有问题,为什么?或者对深潜感兴趣-

目前,颤振平台通道有限制-通信仅由应用程序启动时创建的主隔离支持

DeviceApps.getInstalledApplications会调用平台通道来访问平台API和 您可以从隔离中调用它-compute会为您创建新的隔离 但是,有两个插件可以帮助您:

提供 可以与插件通信的替换隔离,因为它创建 它自己的UI不支持任何您看到或必须处理的内容,只是 技术上

使用此软件包而非颤振隔离本身的优点是 这增加了处理能力,你可以启动几个隔离, 跟踪他们,你不必建立自己的沟通 在隔离线程和主线程之间,您必须执行一些操作 手动使用原始库存隔离和颤振隔离 因为它是抽象的,随时可用


如果你还有问题,为什么?或者对深度潜水感兴趣-

再次感谢解决我的问题

再次感谢解决我的问题

效果很好!3qIt工作正常!第三季度
void main() {
  WidgetsFlutterBinding.ensureInitialized();
  getValueFromIsolate().then(
  (value) {
    print("Then the value is $value");
    },
  );
  runApp(
    MultiProvider(
      providers: [
        ChangeNotifierProvider(
          create: (_) => AppProvider(),
        ),
        ChangeNotifierProvider(
         create: (_) => CategoryProvider(),
        ),
       ChangeNotifierProvider(
        create: (_) => CoreProvider(),
     ),
   ],
   child: MyApp(),
  ),
 );
}