Flutter WidgetsFlutterBinding.ensureInitialized () появляется при работе с rootBundle внутри изолята - PullRequest
1 голос
/ 11 июля 2020

В моем приложении Flutter есть тяжелая задача, которая заставляет меня использовать изоляты, чтобы иметь плавный пользовательский интерфейс, и эта задача включает чтение некоторых файлов ресурсов с помощью rootBundle и поиск в них определенного текста. Теперь, поскольку основной изолятор, который отображает пользовательский интерфейс, не разделяет память с созданным изолятом, который будет выполнять для меня тяжелую задачу, всякий раз, когда я пытаюсь использовать rootBundle внутри метода, который запускает созданный изолятор, я получаю эту ошибку:

Доступ к ServicesBinding.defaultBinaryMessenger был осуществлен до инициализации привязки.

И, конечно же, использование WidgetsFlutterBinding.ensureInitialized (); в верхней части метода не не работает. И я попытался отправить rootBundle на порожденный Isolate и использовать его там, но это не сработало.

1 Ответ

0 голосов
/ 15 июля 2020

Я сообщил об этом разработчикам flutter: https://github.com/flutter/flutter/issues/61480

Они ответили, что это не ошибка, возможно, это как есть. Проверяя образцы флаттера, вы можете найти это:

// Load the JSON string. This is done in the main isolate because spawned
// isolates do not have access to the root bundle. However, the loading
// process is asynchronous, so the UI will not block while the file is
// loaded.

Полный файл примера:

Цитата

...