dart - 水合 block 不持久

标签 dart flutter-bloc

我正在尝试使用水合 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();
  }

我已经设置了单元测试,以确保我的 toMapfromMap 函数正常工作。测试已通过,以下是测试代码:

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/

相关文章:

flutter - 如何为 'onEvent' 的事件实现去抖动器?

dart - 更少使用AngularDart组件和Bootstrap

dart - Dart ,聚合物生成失败,找不到聚合物/polymer.dart吗?

flutter - 如何使用仅包含键的项列表创建新变量

android - flutter_bloc 中的 context.watch 和 context.read 有什么区别?

Flutter Bloc 不会改变 TextFormField initialValue

flutter - 我们什么时候应该使用 freeze 作为密封类或构造函数?

flutter - 如何在行中放置容器

Flutter Future<void> vs Future<Null> vs void

flutter - 电子邮件验证不随电子邮件文本字段更改而更新