Flutter 对话框以某种方式触发父小部件的导航器路由

Flutter dialog is somehow triggering navigators routing for parent widget

我的对话框有问题。

我有一个主屏幕,其中包含导航到第二个屏幕的代码:

Navigator.push(context, MaterialPageRoute(
            builder: (context) {
              return SecondScreen("myData");
            }
          ));

这将转到下一个屏幕。在第二个屏幕上,我最终显示了一个对话框,它正确显示,但是一旦我在对话框中单击 TextFormField,就会再次调用上面的构建器函数,重新创建我的 SecondScreen。然后,一旦我用 pop() 关闭对话框,它就会再次调用上面的代码。

我希望能够在不触发上述代码片段的情况下使用我的对话框。有谁知道该怎么做或为什么会这样?

编辑 - 这是显示对话框显示方式的代码:

StreamBuilder<String>(
  stream: model.taxStream,
  builder: (context, snapshot) {
    return ListTile(
      onTap: () async {
        double taxAmount = await showEditAmountDialog(
          context, "Tax", model.taxValue());
        if (taxAmount != null) {
          model.setTax(taxAmount);
        }
      },
      title: Text("Tax"),
      trailing: Text(snapshot.hasData ? snapshot.data : ""),
     );
   },
 );

根据flutter开发者的说法,重建widgets是理想的场景。他们在 git issues 中提到了这一点。架构设计的设计应牢记小部件应该被重建。不再一次又一次地重建 widgets,是 flutter 提供的一种优化。但不应假定这是 flutter 中小部件的默认行为。默认行为是重建。希望这对您有所帮助!