Estoy usando getx en mi proyecto, tengo una página principal Bianding:
class MainBinding implements Bindings {
@override
Future<void> dependencies() async {
Get.putAsync<HiveService>(() => HiveService().init(), permanent: true);
Get.lazyPut<HomeController>(
() => HomeController(
dbclient: Get.find<HiveService>()),
);
}
}
Tengo un GETXService para inicializar Hive
class HiveService extends GetxService {
late Box<Model> vBox;
Future<HiveService> init() async {
final appDocumentDirectory =
await path_provider.getApplicationDocumentsDirectory();
Hive
..init(appDocumentDirectory.path)
..registerAdapter<Model>(ModelAdaptor())
return this;
}
Después de almorzar, se iniciarán App HomePage y HomeController, pero recibí este error:
══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
The following message was thrown building Builder:
"HiveService" not found. You need to call "Get.put(HiveService())" or
"Get.lazyPut(()=>HiveService())"
The relevant error-causing widget was:
ScrollConfiguration
porque el servicio Hive es un futuro. Tiene un retraso para cargarse, pero lo usé Future<void> dependencies() async
en esta clase de enlace. ¿Cómo tengo que esperar para asegurarme de que HiveService se cargue por completo y después de que se cargue la página de inicio? Estoy usando MainBinding Inside GetMaterialApp
;
Future main() async {
await MainBinding().dependencies();
...
runApp(MyApp()
return GetMaterialApp(
debugShowCheckedModeBanner: false,
useInheritedMediaQuery: true,
locale: DevicePreview.locale(context),
theme: ThemeData(
primarySwatch: Colors.blue,
),
initialRoute: Routes.HOME,
getPages: AppPages.pages,
initialBinding: MainBinding(),
prueba esto
await Get.putAsync<HiveService>(() => HiveService().init(), permanent: true);
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras