【发布时间】:2020-08-22 00:02:10
【问题描述】:
我正在尝试将数据发送到屏幕上的特定列表项。
逻辑是您单击列表中的特定卡片,它会打开带有输入字段的第二个屏幕(见下图)。然后您提交您的输入,它会在第一个屏幕上更改该特定卡的值。
实现这一目标的最佳方法是什么?
【问题讨论】:
标签: flutter dart flutter-layout
我正在尝试将数据发送到屏幕上的特定列表项。
逻辑是您单击列表中的特定卡片,它会打开带有输入字段的第二个屏幕(见下图)。然后您提交您的输入,它会在第一个屏幕上更改该特定卡的值。
实现这一目标的最佳方法是什么?
【问题讨论】:
标签: flutter dart flutter-layout
你可以这样做:
不只是推送到另一个页面,而是等待返回
final data = await Navigator.push(context,
MaterialPageRoute(builder: (context) => InputScreen()));
setState(()
myList.add(data); //do whatever you want with the return here
});
然后在您的 InputScreen 中执行以下操作:
Navigator.of(context).pop(data);
此外,如果您的用户按下手机的后退按钮,它将返回 null,因此您需要处理它。
【讨论】:
您可以通过以下步骤实现此目的:
1) 在卡片的onTap函数中,加入如下代码等待结果:
// on tap function of your card
onTap: () async {
// navigate to the second screen and wait for input user enters
final result = await Navigator.push(context
MaterialPageRoute(builder: (context) => SecondScreen()));
// call setstate to see your changes
setState(() {
// add the input to your list
myList.add(result);
);
},
1) 在提交按钮的 onTap 函数中,通过添加以下代码发送回结果:
// ontap function of your submit button
onTap: () {
// value is what the user has inputted in the text field
Navigator.pop(context, value);
},
【讨论】: