用例
我有一个 ShellRoute
,以及一个 MyShell 小部件,它引入了一些针对该 MyShell 的范围。MyShell 中可能有任意状态、数据获取、缓存等。
对于一个 GoRouteData
,它是包含 TypedGoRoute
的 TypedShellRoute
的 redirect
,我希望能够编写一个 redirect
,使其利用 Shell 的提供者,而不是将这些提供者提升到整个路由器之上。
建议
不要像下面这样使用树形结构:
- Provider
- State
- Router
- Shell
- 通过提供者/状态重定向
让我写:
- Router
- Shell
- Provider
- State
- 通过提供者/状态重定向
7条答案
按热度按时间az31mfrm1#
你好,@aran,你能分享一个例子以及实际/预期的结果吗?这样使用案例会更清晰。
jxct1oxe2#
这是一个不起作用的代码示例,我认为可能有必要提供一种使其起作用的方法: aran/flutter-shell-redirect@5a5ed14
xkftehaa3#
感谢您的更新。在运行your sample project时,我得到了以下错误,这可能为使用案例提供了详细信息。将问题标记以供进一步调查。
样本代码的输出日志
vulvrdjw4#
确认错误是故意/预期的。功能请求是进行框架更改,以使代码运行(或提供其他支持机制来实现相同的基本目标)
cgh8pdjw5#
这是我今天发现的一件事。如果能修复它就太好了。我的用例是使用Bloc模式 - 我希望有一个Bloc,我只能在页面的子集(在重定向回调中)上使用shell路由,但目前这是不可能的。
pw136qt26#
当你进行重定向时,你期望在当前的小部件树中访问提供者还是在新导航后的新的小部件树中访问提供者?
yqhsw0fo7#
在我们的情况下,至少我们通常在同一个 shell 内导航到另一个路线,所以我们希望提供者在新的小部件树中保持稳定。示例项目重定向显示了这种模式。