Любое решение этой проблемы?
Трассировки стека:
[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. Причина в том, что вы ждете каких-то данных или запускаете
async
внутри функциюmain()
.Я инициализировал
ScopedModel
внутри,main()
а внутри я ждал некоторых данных.Есть очень небольшое исправление. Просто беги
WidgetsFlutterBinding.ensureInitialized()
внутрьvoid main()
, прежде чем это сделаешьrunApp()
. Работает как шарм !!источник
main()
метода?Обычно это происходит, если вы ожидаете
main()
метода. Итак, решение было бы таким:источник
Не уверен, что у меня правильный ответ, но я получил ту же ошибку после недавнего обновления флаттера, и мне удалось заставить его работать, поэтому я делюсь своими выводами.
Похоже, ошибка может быть вызвана недавним критическим изменением: https://groups.google.com/forum/#!msg/flutter-announce/sHAL2fBtJ1Y/mGjrKH3dEwAJ .
В результате нам нужно вручную изменить код следующим образом:
В качестве альтернативы, если вы новичок, как я, и изо всех сил пытаетесь понять вышесказанное и # 38464 , вы можете временно избежать этой проблемы, переключившись на бета-канал. Просто запустите бета-версию флаттер-канала. Критическое изменение еще не находится в бета-канале, поэтому после перехода на бета-канал вы не получите эту ошибку, по крайней мере, сейчас.
источник
просто добавьте эту строку в main.dart
ваш код выглядит как
источник
в моем случае при использовании ориентации
Дело в том, чтобы добавить WidgetsFlutterBinding.ensureInitialized () в первую строку основного класса.
источник
Вы можете столкнуться с этим, если пытаетесь выполнить собственный код плагина в изолированном режиме. Здесь это хорошо объясняется в документации isolate_handler :
Уловка здесь в том, что изоляты обеспечат прирост производительности только в случае дорогостоящего в вычислительном отношении кода дротика. Код платформы плагина снова будет использовать основной поток (UI).
Вызов
WidgetsFlutterBinding.ensureInitialized
внутри изолята также не удастся из-за отсутствия базового движка пользовательского интерфейса в изоляте.источник
Раньше у меня была версия
v1.12.13+hotfix.5
, потом я перешел на версию,v1.14.4
и она работала.Ошибка говорит, что вы должны добавить
WidgetsFlutterBinding.ensureInitialized();
, но поскольку это не сработало для меня, я переключился на другую версию. Однако следует иметь в виду, что вам все равно нужно добавитьWidgetsFlutterBinding.ensureInitialized();
первую строку в своем main!источник
Решение: вызовите
WidgetsFlutterBinding.ensureInitialized();
перед вызовом асинхронных функций.источник
Ответ, опубликованный на вопрос 47033 GitHub, решил мою проблему.
проблема: https://github.com/flutter/flutter/issues/47033
решение, которое сработало для меня: https://github.com/flutter/flutter/issues/47033#issuecomment-571936089
Я думаю, что это проблема, связанная с версией флаттера 1.12.13 + исправление, возможно, понижение версии флаттера также может помочь.
источник