gpt4 book ai didi

来自另一个屏幕的 Flutter 更新状态

转载 作者:IT王子 更新时间:2023-10-29 06:37:39 24 4
gpt4 key购买 nike

我有两个屏幕。在第一个中,有一个 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 小部件上,当您选择这样的项目时返回值:

        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

关于来自另一个屏幕的 Flutter 更新状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51913308/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com