【发布时间】:2023-01-29 18:32:57
【问题描述】:
在 flutter 中处理水合块时,我遇到了问题。我试图保留一些数据,但每次都会出错。
Storage was accessed before it was initialized.
Please ensure that storage has been initialized.
For example:
final storage = await HydratedStorage.build();
HydratedBlocOverrides.runZoned(
() => runApp(MyApp()),
storage: storage,
);
这很奇怪,因为我目前正在正确初始化它。
Future<void> main() async {
//Because hydrated bloc communicates with the native code, we must first ensure everything is natively initialised.
WidgetsFlutterBinding.ensureInitialized();
final storage = await HydratedStorage.build(
storageDirectory: await getApplicationDocumentsDirectory(),
);
HydratedBlocOverrides.runZoned(
() => runApp(MultiRepositoryProvider(
providers: [
RepositoryProvider(
create: (context) => AdviceRepository()),
RepositoryProvider(
create: (context) => FavouritesRepository(),
)
],
child: const MyApp(),
)),
storage: storage,
);
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
home: MultiBlocProvider(
providers: [
BlocProvider(
create: (context) => AdviceBloc(
RepositoryProvider.of<AdviceRepository>(context),
)..add(LoadAdviceEvent())),
BlocProvider(
create: (context) => FavouritesBloc(
RepositoryProvider.of<FavouritesRepository>(context),
)),
],
child: const Home(),
),
);
}
}
这是我使用 MultiBlocProvider 或 MultiRepositoryProvider 小部件的方式的问题吗?
我像这样将数据保存到 bloc 中:
context.read<FavouritesBloc>().add(AddFavourites(
AdviceModel(slip: state.advice.slip!)));
【问题讨论】: