我想动态更改用于在页面之间导航的过渡。
为此,我创建了一个枚举,它给出了两个不同的转换名称,例如TransitionType.fade
和TransitionType.slide
。
然后我创建了一个围绕导航器的StatefulWidget,这个有状态的Widget会被更新以反映最顶端路径(isCurrent
)的转换,所有页面都会跟随这个转换,状态可以随时更新。
然而,这似乎是不必要的复杂,我想知道这是否可以用NavigatorObserver
来代替。所有的观察者必须做的是包含转换的状态,并允许在任何时候设置该状态。这可能吗?
1条答案
按热度按时间nkoocmlb1#
我认为
InheritedWidget
将是代替NavigatorObserver
的方法。下面是一个实现
GoRouterTransition
小部件的代码示例,您可以使用GoRouterTransition.of(context)
或GoRouterTransition.maybeOf(context)
访问该小部件,以读取和设置您的TransitionType
(您必须将此小部件 Package 在您的MaterialApp
之上):然后,您只需创建自己的自定义
GoRoute
对象,该对象将使用正确的过渡构建您的页面:You can try the complete sample on zapp.run