flutter - 如何在 BLoC 设置中使用 Flutters Navigator?
问题描述
我正在编写一个使用 Cubits 进行状态管理的应用程序。它是一个有声读物播放器,您可以查找不同的有声读物并显示它们。然后跳转到作者或系列并在您的图书馆中探索。
就目前而言,您在其之间移动的不同页面正在使用 BLoC 构建器呈现,如下所示。
class ScreenSelector extends StatelessWidget {
@override
Widget build(BuildContext context) {
return BlocBuilder<ScreenCubit, ScreenState>(builder: (context, state) {
if (state is HomeScreenState) {
return HomeScreen();
}
if (state is BookScreenState) {
return BookScreen(bookId: state.bookId);
}
return null;
});
}
}
还有流派、作者和系列屏幕,它们的工作方式与书籍屏幕相同。有一个肘部发出适当的状态,连接到主页和书籍页面上的不同可点击小部件。这一切都按预期工作。还有一个授权流程用于呈现 HomeScreen 或转到 Loginscreen。这也很好用。
但我想改用导航器,这样你就可以回到以前的页面。这似乎是正确的导航方式,但我不知道让 Navigator 与 BLoC 一起工作。
我尝试构建 MaterialPageRoutes 并在状态更改而不是加载页面时推送它们,我尝试将 BlocBuilder 转换为 BlocListener。尝试在 BlocBuilder 中推送页面什么也没做,BlocListener 只会抛出异常。
如果有人能指点我如何做这件事,或者知道在 Flutter 中使用带有 Navigator 1.0 的 Cubits 的简单示例,我将不胜感激。我环顾四周,但我发现的所有示例都混合在授权示例中,我迷路了。
我希望我错误地解决了这个问题,但我不确定我在哪里偏离了轨道。
解决方案
原来我只是有非常糟糕的 GoogleFu,你可以在以下位置找到问题的解决方案
https://bloclibrary.dev/#/recipesflutternavigation
它有一个很好的食谱,Bloc 的作者很好地解释了它
推荐阅读
- css - 使用 react-native 在用户界面中放置一个特定于平台的按钮
- c++ - 如何在 C++ 中从键盘读取可变数量的整数?
- r - 将文本数据转换为表格/csv 格式
- python - 导入 .txt 文件时将字符串转换为 int
- jquery - ready() 工作,on('ready') 不工作,为什么?
- html - 在按钮单击时创建允许/阻止浏览器请求
- django - Django 中的 JWT 配置
- java - 尝试将新的 dialogFragment 添加到片段上的现有 dialogfragmen 时,在空对象引用上的 FragmentManager.beginTransaction()
- javascript - KnockoutJS - 使用选择 2 的多选仅显示第一个选择
- java - 从 CalendarView 中获取日期