#ios #flutter
#iOS #трепетать
Вопрос:
Как открыть базу данных этажей с flutter_background_service на устройствах iOS
- Я попытался использовать GetIt (DI), но он выдает ошибку, в которой говорится, что dao равен нулю
- Я попытался создать синглтон, такой как DaoProvider, но так получилось, что хэш-код DaoProvider отличается в приложении от внутри flutter_background_service#OnStart, что указывает на то, что возвращаются разные объекты, хотя ожидался синглтон.
- база данных этажей равна нулю, и, следовательно, dao также равна нулю при попытке создать/открыть базу данных изнутри flutter_background_service#OnStart
Есть ли способ открыть базу данных этажа и получить доступ к Dao изнутри flutter_background_service#OnStart.
Пожалуйста, обратите внимание: в Android он работает нормально и может получать доступ к базе данных этажей и dao.
void onStart() async { WidgetsFlutterBinding.ensureInitialized(); final service = FlutterBackgroundService(); await DaoProvider().prepareDatabase(); await resourceLocator(); // bring to foreground service.setForegroundMode(true); // fetchCurrentPrice from CurrentPriceRepository, tries to access DAO on DB, but fails var currencyInfo = await GetIt.Ilt;CurrentPriceRepositorygt;().fetchCurrentPrice(); log("current_rate: ${currencyInfo?.rate}"); service.sendData( {"current_rate": currencyInfo?.rate}, ); }
Исключение:
[VERBOSE-2:ui_dart_state.cc(209)] Unhandled Exception: MissingPluginException(No implementation found for method getDatabasesPath on channel com.tekartik.sqflite) #0 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:154:7) lt;asynchronous suspensiongt; #1 wrapDatabaseException (package:sqflite/src/exception_impl.dart:7:20) lt;asynchronous suspensiongt; #2 SqfliteDatabaseFactoryMixin.getDatabasesPath (package:sqflite_common/src/factory_mixin.dart:152:20) lt;asynchronous suspensiongt; #3 DatabaseFactoryExtension.getDatabasePath (package:floor/src/sqflite_database_factory.dart:24:27) lt;asynchronous suspensiongt; #4 _$AppDatabaseBuilder.build (package:bc_tracker/data/local/db/database.g.dart:47:11) lt;asynchronous suspensiongt; #5 DaoProvider.prepareDatabase (package:bc_tracker/data/local/dao/dao_provider.dart:14:9) lt;asynchronous suspensiongt; #6 onStart (package:bc_tracker/main.dart:36:3) lt;asynchronous suspensiongt;
Пожалуйста, помогите и дайте мне знать, если потребуется дополнительная информация.
Трепещущий доктор:
[✓] Flutter (Channel stable, 2.5.3, on macOS 11.6 20G165 darwin-x64, locale en-AE) [✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0) [✓] Xcode - develop for iOS and macOS [✓] Chrome - develop for the web [✓] Android Studio (version 2020.3) [✓] IntelliJ IDEA Community Edition (version 2021.2.2) [✓] Connected device (3 available)