图书馆管理软件中基于Bloc的书籍状态管理实现疑问及问题咨询
图书馆管理软件中基于Bloc的书籍状态管理实现疑问及问题咨询
各位好,我正在开发一款图书馆管理软件,系统里要管理数千本图书,每本书都会经历借出、归还、重新上架等多种状态变化。我用Bloc来做状态管理,设计了一个UiBloc负责UI层面的状态控制,另外给每本书对应了一个BookBloc,专门用来管理单本书的状态变化。
目前我写了这样的代码来处理Bloc的依赖注入:
Widget providerSetup({required Widget child}) { return BlocProvider<UiBloc>.value( value: uiBloc, child: BlocSelector<UiBloc, UiState, Book?>( selector: (uiState) => uiState.currentBook, builder: (context, book) { return BlocProvider<BookBloc>.value( value: BookBloc.forBook(book), child: child, ); }, ), ); }
这里的BookBloc.forBook方法会根据传入的书籍实例,查找并返回对应的BookBloc实例。我原本觉得这个方案是可行的:当UI选中的书籍(也就是currentBook)发生变化,或者对应BookBloc的状态更新时,所有子组件都会自动重绘,展示正确的书籍状态。不过我不确定这个逻辑是不是真的能按预期运行?
另外,我还在琢磨有没有更简洁的方式来处理这种后一个Bloc依赖前一个Bloc状态的关联关系?
还有个非常棘手的问题:UI完全可能处于没有选中任何书籍的状态,这时currentBook就是null,但BlocProvider是不能接收null值的。这种空值场景该怎么正确处理呢?
内容来源于stack exchange
相关产品推荐
相关产品推荐

