本文介绍了Flutter:未处理的异常:在绑定初始化之前访问了 ServicesBinding.defaultBinaryMessenger的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Any solution to solve this problem?

堆栈跟踪:

[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<…>

推荐答案

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

This problem is introduced when you upgrade Flutter. The reason behind this is you are waiting for some data or running an async function inside main().

我在 main() 内部初始化 ScopedModel 并且在里面我正在等待一些数据.

I was initialising ScopedModel inside main() and inside that I was awaiting for some data.

有一个非常小的修复.在执行 runApp() 之前,只需在 void main() 中运行 WidgetsFlutterBinding.ensureInitialized() .很有魅力!!

There is a very small fix.Just run WidgetsFlutterBinding.ensureInitialized() inside void main() , before you do runApp(). Works like a charm!!

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

这篇关于Flutter:未处理的异常:在绑定初始化之前访问了 ServicesBinding.defaultBinaryMessenger的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-29 21:45