Irgendeine Lösung, um dieses Problem zu lösen?
Stacktrace:
[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<…>
Antworten:
Dieses Problem tritt auf, wenn Sie Flutter aktualisieren. Der Grund dafür ist, dass Sie auf Daten warten oder eine
async
Funktion ausführenmain()
.Ich initialisierte
ScopedModel
innenmain()
und innen, dass ich auf einige Daten wartete.Es gibt eine sehr kleine Lösung. Lauf einfach
WidgetsFlutterBinding.ensureInitialized()
hineinvoid main()
, bevor du es tustrunApp()
. Klappt wunderbar!!quelle
main()
Methode haben?Dies geschieht im Allgemeinen, wenn Sie auf eine
main()
Methode warten . Die Lösung wäre also:quelle
Ich bin mir nicht sicher, ob ich die richtige Antwort habe, aber ich habe nach einem kürzlich durchgeführten Flatter-Upgrade den gleichen Fehler erhalten und es geschafft, ihn zum Laufen zu bringen. Daher teile ich meine Ergebnisse.
Es sieht so aus, als ob der Fehler durch eine kürzlich vorgenommene Änderung verursacht wurde: https://groups.google.com/forum/#!msg/flutter-announce/sHAL2fBtJ1Y/mGjrKH3dEwAJ .
Daher müssen wir den Code wie folgt manuell ändern:
Wenn Sie ein Neuling wie ich sind und Schwierigkeiten haben, das oben Genannte und # 38464 zu verstehen , können Sie dieses Problem vorübergehend vermeiden, indem Sie zum Beta-Kanal wechseln. Führen Sie einfach "Flutter Channel Beta" aus. Die aktuelle Änderung befindet sich noch nicht im Beta-Kanal. Nach dem Wechsel zum Beta-Kanal wird dieser Fehler zumindest vorerst nicht angezeigt.
quelle
Fügen Sie einfach diese Zeile in main.dart hinzu
Ihr Code scheint wie
quelle
in meinem Fall bei der Verwendung von Orientierung,
Der Punkt ist, WidgetsFlutterBinding.ensureInitialized () in die erste Zeile der Hauptklasse einzufügen
quelle
Bevor ich die Version hatte
v1.12.13+hotfix.5
, wechselte ich zur Versionv1.14.4
und es funktionierte.Der Fehler besagt, dass Sie hinzufügen sollten
WidgetsFlutterBinding.ensureInitialized();
, aber da das bei mir nicht funktioniert hat, habe ich auf die andere Version gewechselt. Eine Sache zu beachten ist jedoch, dass Sie immer nochWidgetsFlutterBinding.ensureInitialized();
als allererste Zeile in Ihrem Haupt hinzufügen müssen !quelle
Lösung: Rufen Sie auf,
WidgetsFlutterBinding.ensureInitialized();
bevor Sie asynchrone Funktionen aufrufen.quelle
Sie könnten darauf stoßen, wenn Sie versuchen, nativen Plugin-Code in einem Isolat auszuführen. Die isolate_handler-Dokumentation hier erklärt dies gut:
Der Haken dabei ist, dass Isolate nur bei rechenintensivem Dartcode eine Leistungssteigerung bewirken. Der Plattformcode des Plugins verwendet wieder den Hauptthread (UI).
Das Aufrufen
WidgetsFlutterBinding.ensureInitialized
eines Isolats schlägt ebenfalls fehl, da im Isolat keine zugrunde liegende UI-Engine vorhanden ist.quelle
Eine Antwort auf das GitHub-Problem 47033 hat mein Problem gelöst.
Problem: https://github.com/flutter/flutter/issues/47033
die Lösung, die für mich funktioniert hat: https://github.com/flutter/flutter/issues/47033#issuecomment-571936089
Ich denke, dies ist ein Problem in Bezug auf den Flatter Version 1.12.13 + Hotfix. Vielleicht hilft auch ein Downgrade des Flatterns.
quelle