Я конвертирую очень упрощенное приложение для печати этикеток на Flutter
из Swift. Основным компонентом этого приложения являются локально кэшированные базы данных для автономного доступа к продуктам.
Хотя я мог загружать и кэшировать все 12 000+ продуктов в основном потоке, это ужасное, ужасное решение для такой тяжелой операции, и я бы очень хотел избежать этого, кроме как в крайнем случае. Даже в крайнем случае у меня было бы гораздо больше проблем с тем, чтобы убедить моего работодателя разрешить мне перейти со Swift на Flutter, если фоновая потоковая передача невозможна для базовой задачи, такой как кэширование онлайн-данных в локальную базу данных.
В результате я исследовал Изоляты. В процессе я сталкивался с ошибкой "'Window_sendPlatformMessage' (4 arguments) cannot be found"
всякий раз, когда пытался кэшировать данные с помощью sqflite и path_provider на Isolate
.
Сейчас я читаю на github и stackoverflow, что Isolates не поддерживает использование плагинов (возможно, пакетов?), кроме как в шаткий способ обходного пути. Я пробовал плагин, который просто вылетает из моего приложения с очень загадочной трассировкой стека, когда я пытаюсь использовать это, так что похоже, что обходной путь - единственный способ.
Я только начал создавать с флаттером около недели назад и только два дня назад начал работать с Isolates, так что мое базовое понимание всего в настоящее время поверхностное. В репозитории флаттера есть комментарий, который, кажется, описывает обходной путь для проблемы с плагином, который, я надеюсь, позволит мне использовать path_provider
и sqflite
для кэширования данных, которые я получаю из своего веб-API.
Может ли более опытный разработчик Flutter разбить это объяснение на детские укусы?
изменить:
Как отмечено в ответе ниже, sqflite
уже является асинхронным и, по-видимому, работает в другом потоке, чем основной, поэтому похоже, что моя конкретная ситуация будет решена путем использования вычислений для моего вызова API-интерфейса dart-pure для получения данных JSON и использования обычный sqflite
для хранения. Тем не менее потребность в руководстве для начинающих по нестандартным обходным путям Isolate сохраняется, поэтому я оставляю вопрос открытым.