我正在尝试使用水合 block 让我的状态持续存在,但它不起作用。当我重新启动应用程序时,状态不会持续
这是我必须启动应用程序的代码:
void bootstrap() async {
WidgetsFlutterBinding.ensureInitialized();
final storage = await HydratedStorage.build(
storageDirectory: await getApplicationDocumentsDirectory(),
);
HydratedBlocOverrides.runZoned(
() => runApp(
RepositoryProvider<void>(
create: (context) => DatabaseCubit(),
child: const RunApp(),
),
),
storage: storage,
);
}
这是以肘为单位的相关代码:
class DatabaseCubit extends HydratedCubit<DatabaseState>{
DatabaseCubit() : super(databaseInitial);
@override
DatabaseState? fromJson(Map<String, dynamic> json) {
return DatabaseState.fromMap(json);
}
@override
Map<String, dynamic> toJson(DatabaseState state) {
return state.toMap();
}
我已经设置了单元测试,以确保我的 toMap
和 fromMap
函数正常工作。测试已通过,以下是测试代码:
test('Database state should be converted to and from json', () {
final databaseStateAsJson = databaseState.toMap();
final databaseStateBackToNormal =
DatabaseState.fromMap(databaseStateAsJson);
expect(databaseStateBackToNormal, databaseState);
});
请告诉我我做错了什么
最佳答案
我刚刚解决了类似的问题。
尝试深入研究 Hydrated_bloc.dart Hydro() 方法,您可能会发现为什么它拒绝加载您的状态:)。
可能是集合之间的类型转换问题 - 就像我的情况一样。
关于dart - 水合 block 不持久,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72336975/