首页 > 解决方案 > Flutter:未处理的异常:在初始化绑定之前访问了 ServicesBinding.defaultBinaryMessenger

问题描述

有什么办法可以解决这个问题吗?

堆栈跟踪:

[VERBOSE-2:ui_dart_state.cc(148)] Unhandled Exception: ServicesBinding.defaultBinaryMessenger was accessed before the binding was initialized.
If you're running an application and need to access the binary messenger before `runApp()` has been called (for example, during plugin initialization), then you need to explicitly call the `WidgetsFlutterBinding.ensureInitialized()` first.
If you're running a test, you can call the `TestWidgetsFlutterBinding.ensureInitialized()` as the first line in your test's `main()` method to initialize the binding.
#0      defaultBinaryMessenger.<anonymous closure> (package:flutter/src/services/binary_messenger.dart:73:7)
#1      defaultBinaryMessenger (package:flutter/src/services/binary_messenger.dart:86:4)
#2      MethodChannel.binaryMessenger (package:flutter/src/services/platform_channel.dart:140:62)
#3      MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:314:35)
<asynchronous suspension>
#4      MethodChannel.invokeMapMethod (package:f<…&gt;

标签: flutterdartexception

解决方案


这个问题是在升级 Flutter 时引入的。这背后的原因是您正在等待一些数据或在async内部运行一个函数main()

ScopedModel我正在内部和内部初始化main(),我正在等待一些数据。

有一个非常小的修复。跑WidgetsFlutterBinding.ensureInitialized()进去void main(),在你做之前runApp()。奇迹般有效!!

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  runApp(Delta(
    model: ProductDataModel(),
  ));
}

推荐阅读