首页 > 解决方案 > 如何在 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 的简单示例,我将不胜感激。我环顾四周,但我发现的所有示例都混合在授权示例中,我迷路了。

我希望我错误地解决了这个问题,但我不确定我在哪里偏离了轨道。

标签: flutterblocnavigator

解决方案


原来我只是有非常糟糕的 GoogleFu,你可以在以下位置找到问题的解决方案

https://bloclibrary.dev/#/recipesflutternavigation

它有一个很好的食谱,Bloc 的作者很好地解释了它


推荐阅读