我正在为我的应用程序考虑这种模式,并且找不到合适的方法。 用户在列表页面中,她点击一个项目并转到编辑页面。她编辑,然后点击保存。现在我想要应用程序 - 显示旋转轮,同时保存项目 - 保存后弹出返回列表页面的路线,并在列表页面上显示小吃栏。 我似乎没有找到一种方法将参数传递给前一个路线来告诉它有关状态的信息,即显示小吃吧。
答案 0 :(得分:2)
要显示点击“保存”按钮的进度,您可以使用类似的内容。
首先初始化一个变量static bool isSaving = false;
然后在你的脚手架中使用它就像这样。
child:Stack(
children: <Widget>[
isSaving
? new Container(
child: new CircularProgressIndicator(
value: null,
strokeWidth: 2.0,
),
alignment: Alignment.center,
)
: new Container(
child: new RaisedButton(
onPressed: () {
setState(() {
isSaving = true;
//Other Implementations here
});
},
child: new Text("Save"),
),
),
],
),
当操作完成后,再次设置state并使变量为false。 现在,当您收到通知操作已完成时,请使用Navigator返回。
Navigator.pop(context);
要在上一个屏幕中显示小吃栏,请使用Global Key。
GlobalKey<ScaffoldState> scaffoldKey = new GlobalKey<ScaffoldState>();
将此键分配给您的脚手架。
new Scaffold(
key: scaffoldKey,
...
)
正如所回答的那样,here显示了像这样的弹出操作之后的零食吧。
scaffoldKey.currentState
.showSnackBar(new SnackBar(content: new Text("Saved Successfully")));
或者可以尝试不同的方法,如sample中所述。 希望它有所帮助。
答案 1 :(得分:0)
您可以通过pop方法将数据发送回去。你可以做类似的事情。
在您的编辑页面中:
bool saved = item.save();
Navigator.pop(context, saved);
在您的列表页面中:
var saved = await Navigator.push(
context,
MaterialPageRoute(builder: (context) => EditRoute(item)),
);
if (saved) {
// Show success snackbar
} else {
// Show error snackbar
}