应该使用哪个 Riverpod Provider 与 Navigator 2.0 结合处理导航状态?

问题描述

我正在 Flutter 中开发一个相当复杂的跨平台(Android/iOS/Web)应用程序。我是 Flutter 的新手,从 Android 和 iOS 的原生开发背景开始接触它。

我一直在研究在 Flutter 中处理导航和状态管理的最佳方法,到目前为止我的结论是最好的方法是将 Navigator 2.0 API 与 Riverpod 状态结合使用管理库。就我所见,这些似乎是 Flutter 中用于导航和状态管理的最新、最强大的库。

但是,我发现弄清楚如何将 Riverpod 与 Navigator 2.0 集成并不容易。作为对这两个库和 Flutter 总体上都不熟悉的人,我理想情况下希望在文档(Navigator 或 Riverpod 的)中找到一些规范示例,该示例展示了如何完成此操作,但我还没有找到了这样一个例子。如果没有,我将非常感谢有关如何执行此操作的任何指导,特别是关于多种类型的 Riverpod Provider 中的哪一种最适合处理导航状态的工作。例如,比 ChangeNotifierProvider 更喜欢 StateNotifierProvider 的理由是什么,反之亦然?有没有其他类型的 Riverpod Provider 比这两种都更好?

解决方法

我把这个问题复杂化了很多,甚至做了一个巨大的路由器来解决它(ray wenderlich 有一个颤振路由器的例子以及其他一些教程)。我还尝试了其他一些用于路由的包,但它总是以某种方式弄乱我的 UI

实际上归结为我必须将上下文传递给我的子类。因此,在 MaterialApp 路由中不直接包含的任何内容的构造函数中,您将执行 MyClass(BuildContext context,{required this.whatever});然后将其称为 MyClass(上下文,无论如何)。其余的对我来说很好用 Navigator.pushnamed(context,routename)。我有应用栏和带有导航选项的菜单,所以它更复杂。

我希望这是有道理的。 Flutter 的网站上有关于设置 MaterialApp() 以及命名路由的信息。

您始终可以将自己的列表设置为堆栈,他们在 flutter 文档中提到了其中的一些内容,但听起来这将是一种更复杂的处理方式。我知道提供者与类一起工作,所以通过扩展,我认为他们可以使用列表。