【问题标题】:Flutter - get value in ListView text to paste on TextField on another dart fileFlutter - 在 ListView 文本中获取值以粘贴到另一个 dart 文件的 TextField 上
【发布时间】:2019-09-25 18:22:53
【问题描述】:

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(),
),

【问题讨论】:

    标签: flutter flutter-layout flutter-listview


    【解决方案1】:

    您可以使用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");
      },
    );
    

    【讨论】:

    • 感谢 Robin,但是如何定义 onStringSelected(data); ?
    • 我的意思是“另一个文件飞镖”吗?
    • onStringSelected 在 Homeview.dart 中定义。它是一个属性。您在某处实例化 HomeView() 小部件。您现在只需为 onStringSelected 属性传递一个函数。
    • 请分享更多代码。尤其是 homeview.dart 和您使用 HomeView() 小部件的文件。
    猜你喜欢
    • 2021-05-22
    • 1970-01-01
    • 1970-01-01
    • 2011-07-27
    • 2012-01-19
    • 2013-09-20
    • 1970-01-01
    • 1970-01-01
    • 2019-09-08
    相关资源
    最近更新 更多