我有两个屏幕。在第一个中,有一个ListView
。在第一个元素中,我显示变量selectedObject
的值。
按下ListTile
时,将打开另一个屏幕。从第二个屏幕返回后,我想更新selectedObject
的值。
我需要将result
的值分配给selectedObject
变量。
我认为我必须调用setState
方法,但是我不知道如何。
这是我的代码:
class _FilterTaskState extends State<FilterTask> {
List taskList;
String selectedObject = "initial value";
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: _buildAppBar(context, "AppBar Title"),
body: Center(
child: new ListView(
children: <Widget>[
new ListTile(
leading: new Icon(Icons.home, color: Colors.black),
title: new Text("Selected Object", style: styleTitle),
subtitle: new Text(selectedObject),
trailing: new Icon(Icons.play_arrow, color: Colors.black),
onTap: () => _navigateToFilterObject(context),
),
...
],
)
),
);
}
}
_navigateToFilterObject(BuildContext context) async {
final result = await Navigator.push(context,
MaterialPageRoute(builder: (context) => FilterObject()),);
/// I want to set the 'selectedObject' value
/// selectedObject = result;
}
答案 0 :(得分:4)
在FilterObject
小部件上,当您选择以下项目时,将返回值:
Navigator.of(context).pop(theValueYouWantToReceive);
您将在result
变量中获取结果:
final result = await Navigator.push(context, MaterialPageRoute(builder: (context) => FilterObject()),);
最终密码
_navigateToFilterObject(BuildContext context) async {
final result = await Navigator.push(context,
MaterialPageRoute(builder: (context) => FilterObject()),);
//refresh the state of your Widget
setState(() {
selectedObject = result;
});
}
_navigateToFilterObject
必须在您的_FilterTaskState
类中
了解有关Navigator pop的信息:https://docs.flutter.io/flutter/widgets/Navigator/pop.html