Flutter ServicesBinding.defaultBinaryMessenger在使用Flatter的计算函数时出现问题
我正在使用flatter构建一个资源管理器获取应用程序长度需要一段时间,所以我尝试使用annother隔离获取值,这是我main.dart代码的一部分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
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(),
),
);
}