【问题标题】:Hydrated Bloc not persisting水合块不持久
【发布时间】:2022-07-05 03:21:34
【问题描述】:

我正在尝试使用 hydrad bloc 让我的状态持续存在,但它不起作用。当我重新启动应用程序时,状态不会持续

这是我必须启动应用程序的代码:

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);
    });

请告诉我我做错了什么

【问题讨论】:

    标签: dart flutter-bloc


    【解决方案1】:

    我刚刚解决了一个类似的问题。

    尝试深入研究 hydrad_bloc.dart hydrate() 方法,您可能会发现它拒绝加载您的状态的原因:)。

    可能是集合之间的类型转换问题 - 就我而言。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-04
      • 2011-02-07
      • 2023-03-25
      • 1970-01-01
      • 2021-11-09
      • 1970-01-01
      • 2018-02-10
      相关资源
      最近更新 更多