是否有不需要上下文的 Navigator.push 替代方案?这是我的问题。

我有一个非常嵌套和深入的调用堆栈,并不是每个函数都有一个 BuildContext 参数。除了将当前 BuildContext 从一个函数传递到另一个函数之外,还有其他方法可以获取当前 BuildContext 吗?

test1.dart

Widget build(BuildContext) {
...
new GestureDetector(
    onTap: () => foo1() // very deep callstack until it calls foo30
...
}

test2.dart
void foo30() {
    // need context here like:
    BuildContext context = IHopeThatExists.getCurrentContext();

    // why do I need that? Navigator.push needs a context or is there an alternative? FYI: I don't need to go back to the previous page though
    Navigator.push(context, ..)
}

最佳答案

您可以使用 Builder 小部件:

return Builder(
  builder: (context) {
    return RaisedButton(
      onPressed: () {
        Navigator.of(context).push(...);
      },
      ...
    );
  },
);

关于dart - 通过参数不可用时获取 BuildContext,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52176921/

10-11 14:57