繁体   English   中英

Flutter - 在ListView文本中获取值以粘贴到另一个dart文件上的TextField上

[英]Flutter - get value in ListView text to paste on TextField on another dart file

main.dart image homeview.dart

我有一个问题我有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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM