【发布时间】:2018-08-24 15:55:30
【问题描述】:
我有以下情况:
- 第 1,2,3 行的主小部件
- 在第 2 行中,我最初设置了小部件 A
我想要什么:
- 一旦我在小部件 A 中发生状态更改,请将小部件 A 替换为小部件 B
- 在小部件 A 中而不是在主小部件中处理替换(所以我不想使用小部件 A 的回调或观察全局状态并在主小部件中对其做出反应)
- 替换意味着:小部件 B 仍然是主小部件的子小部件(在我的情况下,它停留在第二行并且不会像使用路由/导航器时那样全屏显示?)
我想要什么的理由:
- 在主窗口小部件的每一行中,用户可以与子菜单交互,例如第 2 行包含 WidgetA -> [用户交互] -> WidgetB [用户交互] -> WidgetC
- 我不想从主小部件管理所有这些不同的状态
我尝试了什么:
//in Widget A -> in order to switch to Widget B
Navigator.push(context, new MaterialPageRoute(
builder: (_) => new WidgetB(),
));
这不起作用,因为 Widget B 没有留在主 Widget 的 WidgetTree 中
如果这是不可能的,我想知道实现我想要的东西的颤振方式是什么:-)
【问题讨论】:
-
我不明白。你有真实世界的例子或图画吗?
-
听起来你想要一个条件小部件?像
(showB == true) ? WidgetB() : WidgetA();这样的东西我很确定无论如何你都必须将 something 传递回主小部件。
标签: layout widget dart flutter navigator