Alguma solução para resolver este problema?
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<…>
Respostas:
Esse problema é apresentado quando você atualiza o Flutter. A razão por trás disso é que você está esperando por alguns dados ou executando uma
async
função internamain()
.Eu estava inicializando por
ScopedModel
dentromain()
e por dentro que estava aguardando alguns dados.Existe uma solução muito pequena. Apenas corra para
WidgetsFlutterBinding.ensureInitialized()
dentrovoid main()
, antes de fazer issorunApp()
. Funciona como um encanto!!fonte
main()
método?Isso geralmente acontece se você estiver aguardando um
main()
método. Então, a solução seria:fonte
Não tenho certeza se tenho a resposta correta, mas recebi o mesmo erro após uma atualização recente de flutter e consegui fazer funcionar, então estou compartilhando minhas descobertas.
Parece que o erro pode ser causado por uma alteração importante recente: https://groups.google.com/forum/#!msg/flutter-announce/sHAL2fBtJ1Y/mGjrKH3dEwAJ .
Como resultado, precisamos alterar manualmente o código da seguinte maneira:
Alternativamente, se você é um novato como eu e tem dificuldade para entender o que está acima e o # 38464 , pode evitar temporariamente esse problema mudando para o canal beta. Basta executar "flutter channel beta". A alteração significativa ainda não está no canal beta, então, depois de mudar para o canal beta, você não receberá esse erro, pelo menos por agora.
fonte
apenas adicione esta linha em main.dart
seu código parece
fonte
no meu caso, ao usar orientação,
O objetivo é adicionar WidgetsFlutterBinding.ensureInitialized () na primeira linha da classe principal
fonte
Antes de ter a versão
v1.12.13+hotfix.5
, mudei para a versãov1.14.4
e funcionou.O erro diz que você deve adicionar
WidgetsFlutterBinding.ensureInitialized();
, mas como isso não funcionou para mim, mudei para a outra versão. Uma coisa a ter em mente, porém, é que você ainda precisa adicionarWidgetsFlutterBinding.ensureInitialized();
como a primeira linha em seu principal!fonte
Solução: chame
WidgetsFlutterBinding.ensureInitialized();
antes de chamar funções assíncronas.fonte
Você pode se deparar com isso se estiver tentando executar o código nativo do plugin isoladamente. A documentação isolate_handler aqui explica isso bem:
O problema aqui é que os isolados fornecerão um aumento de desempenho apenas no caso de código dardo computacionalmente caro. O código de plataforma do plug-in usará novamente o thread principal (UI).
Chamar
WidgetsFlutterBinding.ensureInitialized
dentro de um isolado também falhará devido à ausência de um mecanismo de IU subjacente no isolado.fonte
Uma resposta postada no problema 47033 do GitHub resolveu meu problema.
problema: https://github.com/flutter/flutter/issues/47033
a solução que funcionou para mim: https://github.com/flutter/flutter/issues/47033#issuecomment-571936089
Acho que esse é um problema em relação ao hotfix da versão 1.12.13 + do flutter, talvez diminuir o flutter também possa ajudar.
fonte