Une solution pour résoudre ce problème?
Trace de la pile:
[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<…>
Réponses:
Ce problème est introduit lorsque vous mettez à niveau Flutter. La raison derrière cela est que vous attendez des données ou que vous exécutez une
async
fonction à l'intérieurmain()
.J'étais en train d'initialiser à l'
ScopedModel
intérieurmain()
et à l'intérieur que j'attendais des données.Il y a une très petite solution. Courez à l'
WidgetsFlutterBinding.ensureInitialized()
intérieurvoid main()
, avant de le fairerunApp()
. Fonctionne comme un charme !!la source
main()
méthode?Cela se produit généralement si vous attendez une
main()
méthode. Donc, la solution serait:la source
Je ne sais pas si j'ai la bonne réponse, mais j'ai eu la même erreur après une récente mise à jour de flutter et j'ai réussi à la faire fonctionner, donc je partage mes résultats.
Il semble que l'erreur puisse être causée par une modification de rupture récente: https://groups.google.com/forum/#!msg/flutter-announce/sHAL2fBtJ1Y/mGjrKH3dEwAJ .
Par conséquent, nous devons modifier manuellement le code comme suit:
Alternativement, si vous êtes un débutant comme moi et que vous avez du mal à comprendre ce qui précède et # 38464 , vous pouvez temporairement éviter ce problème en passant au canal bêta. Exécutez simplement "Flutter channel beta". Le changement de rupture n'est pas encore dans le canal bêta, donc après le passage au canal bêta, vous n'obtiendrez pas cette erreur au moins pour le moment.
la source
ajoutez simplement cette ligne dans main.dart
votre code ressemble à
la source
dans mon cas lors de l'utilisation de l'orientation,
Le but est d'ajouter WidgetsFlutterBinding.ensureInitialized () dans la première ligne de la classe principale
la source
Vous pourriez rencontrer cela si vous essayez d'exécuter le code natif du plugin dans un isolat. La documentation isolate_handler ici explique bien ceci:
Le problème ici est que les isolats ne fourniront une amélioration des performances que dans le cas d'un code de fléchettes coûteux en calcul. Le code de la plateforme du plugin utilisera à nouveau le thread principal (UI).
L'appel à l'
WidgetsFlutterBinding.ensureInitialized
intérieur d'un isolat échouera également en raison de l'absence d'un moteur d'interface utilisateur sous-jacent dans l'isolat.la source
Avant d'avoir la version
v1.12.13+hotfix.5
, je suis passé à la versionv1.14.4
et cela a fonctionné.L'erreur dit que vous devriez ajouter
WidgetsFlutterBinding.ensureInitialized();
, mais comme cela n'a pas fonctionné pour moi, je suis passé à l'autre version. Une chose à garder à l'esprit cependant est que vous devez toujours ajouterWidgetsFlutterBinding.ensureInitialized();
comme toute première ligne dans votre main!la source
Solution: appelez
WidgetsFlutterBinding.ensureInitialized();
avant d' appeler des fonctions asynchrones.la source
Une réponse publiée sur le numéro 47033 de GitHub a résolu mon problème.
problème: https://github.com/flutter/flutter/issues/47033
la solution qui a fonctionné pour moi: https://github.com/flutter/flutter/issues/47033#issuecomment-571936089
Je pense que c'est un problème concernant la version flutter 1.12.13 + hotfix peut-être que la rétrogradation du flutter peut également aider.
la source