[英]Flutter - get value in ListView text to paste on TextField on another dart file
我有一个问题我有2个不同的dart文件,main.dart和homeview.dart在这里我故意在homeview.dart上做了一个自定义对话框,对话框包含listview和只有数据字符串,我想要它和项目列表上我创建一个Inkwell小部件,以便能够OnTap :,并在main.dart中包含TextFormField,
问题是如何在onTap列表项中,文本字符串移动到main.dart上的TextFormField?
homeview.dart
final List<String> _listViewTypeInvest = [
"12 Months Invest",
"18 Months Invest",
"24 Months Invest",
];
child: ListView(
children: _listViewTypeInvest
.map( (data) => ListTile(
title: Text(data),
onTap: () => _scaffoldKey.currentState.showSnackBar(SnackBar(
content: Text(
"$data Clicked!",
style: TextStyle(fontFamily: "Montserrat"),
),
duration: Duration(seconds: 1),
)),
))
.toList(),
),
您可以使用Function
回调。 所以在你的homeview.dart
你想要添加一个Function作为属性。
class HomeView extends StatelessWidget {
final void Function(String) onStringSelected;
const HomeView({Key key, @required this.onStringSelected}) : super(key: key);
...
现在,一旦用户按下对话框中的按钮,您就可以调用此函数。
所以这将是你的onTap()
函数:
onTap: () {
onStringSelected(data); // this fires the callback function
_scaffoldKey.currentState.showSnackBar(SnackBar(
content: Text(
"$data Clicked!",
style: TextStyle(fontFamily: "Montserrat"),
),
duration: Duration(seconds: 1),
));
}),
在实例化homeview.dart
文件的地方,您现在可以侦听新的onStringSelected
函数回调,例如设置TextFormField的text属性。
HomeView(
onStringSelected: (myDataString) {
print("The user clicked $myDataString");
},
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.