我的对话有问题。
我有一个主屏幕,其代码可以导航到第二个屏幕,如下所示:
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 : ""),
);
},
);
答案 0 :(得分:1)
根据开发人员的情况,重建小部件是理想的方案。他们在git issues中提到了这一点。在设计体系结构设计时,应牢记应该重建小部件。 flutter提供的优化是不一次又一次地重建小部件。但是,不应假定这是窗口小部件在flutter中的默认行为。默认行为是重建。希望这会有所帮助!