来自另一个屏幕的 Flutter 更新状态
Flutter update state coming from another screen
我有两个屏幕。在第一个中,有一个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;
}
在您的 FilterObject
小部件上 returns 当您 select 项目时的价值如下:
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
class
内
了解 Navigator pop:https://docs.flutter.io/flutter/widgets/Navigator/pop.html
我有两个屏幕。在第一个中,有一个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;
}
在您的 FilterObject
小部件上 returns 当您 select 项目时的价值如下:
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
class
了解 Navigator pop:https://docs.flutter.io/flutter/widgets/Navigator/pop.html