Ada solusi untuk mengatasi masalah ini?
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<…>
Jawaban:
Masalah ini muncul saat Anda mengupgrade Flutter. Alasan di balik ini adalah Anda menunggu beberapa data atau menjalankan
async
fungsi di dalamnyamain()
.Saya sedang memulai
ScopedModel
di dalammain()
dan di dalam yang saya sedang menunggu beberapa data.Ada perbaikan yang sangat kecil. Jalankan saja ke
WidgetsFlutterBinding.ensureInitialized()
dalamvoid main()
, sebelum Anda melakukannyarunApp()
. Bekerja seperti pesona !!sumber
main()
metode?Ini biasanya terjadi jika Anda menunggu
main()
metode. Jadi, solusinya adalah:sumber
Tidak yakin apakah saya memiliki jawaban yang benar, tetapi saya mendapatkan kesalahan yang sama setelah peningkatan flutter baru-baru ini, dan berhasil membuatnya berfungsi, jadi saya membagikan temuan saya.
Sepertinya kesalahan ini mungkin disebabkan oleh perubahan yang dapat menyebabkan gangguan baru-baru ini: https://groups.google.com/forum/#!msg/flutter-announce/sHAL2fBtJ1Y/mGjrKH3dEwAJ .
Akibatnya, kita perlu mengubah kode secara manual sebagai berikut:
Atau, jika Anda seorang pemula seperti saya dan berjuang untuk memahami hal di atas dan # 38464 , Anda dapat menghindari masalah ini untuk sementara dengan beralih ke saluran beta. Jalankan saja "flutter channel beta". Perubahan yang merusak belum ada di saluran beta, jadi setelah beralih ke saluran beta Anda tidak akan mendapatkan kesalahan ini setidaknya untuk saat ini.
sumber
tambahkan saja baris ini di main.dart
kode Anda sepertinya
sumber
dalam kasus saya saat menggunakan orientasi,
Intinya adalah menambahkan WidgetsFlutterBinding.ensureInitialized () di baris pertama kelas utama
sumber
Anda dapat mengalami ini jika Anda mencoba menjalankan kode asli plugin secara terpisah. Dokumentasi isolate_handler di sini menjelaskan hal ini dengan baik:
Tangkapan di sini adalah bahwa isolat akan memberikan peningkatan kinerja hanya dalam kasus kode panah yang mahal secara komputasi. Kode platform plugin akan kembali menggunakan utas utama (UI) lagi.
Memanggil
WidgetsFlutterBinding.ensureInitialized
di dalam isolate juga akan gagal karena tidak adanya mesin UI yang mendasari di isolate.sumber
Sebelum saya memiliki versinya
v1.12.13+hotfix.5
, lalu saya beralih ke versiv1.14.4
dan berhasil.Kesalahan mengatakan bahwa Anda harus menambahkan
WidgetsFlutterBinding.ensureInitialized();
, tetapi karena itu tidak berhasil untuk saya, saya beralih ke versi lain. Satu hal yang perlu diingat adalah Anda masih harus menambahkanWidgetsFlutterBinding.ensureInitialized();
sebagai baris pertama di utama Anda!sumber
Solusi: Panggil
WidgetsFlutterBinding.ensureInitialized();
sebelum memanggil fungsi asynchronous.sumber
Jawaban yang diposting di GitHub masalah 47033 memecahkan masalah saya.
masalah: https://github.com/flutter/flutter/issues/47033
solusi yang berhasil untuk saya: https://github.com/flutter/flutter/issues/47033#issuecomment-571936089
Saya rasa ini adalah masalah terkait hotfix versi flutter 1.12.13 + mungkin menurunkan flutter juga dapat membantu.
sumber