我正试图将数据发送到屏幕上的一个特定列表项。
其逻辑是,您点击列表中的特定卡片,它将打开第二个屏幕,其中有一个输入字段(见下图)。然后你提交你的输入,它就会改变第一个屏幕上那个特定卡片的值。
实现这个目标的最佳方法是什么?
你可以这样做。
而不是只推送到另一个页面,等待返回。
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);
},