0

main.dart 图像 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(),
),
4

1 回答 1

0

您可以使用Function回调。所以在homeview.dart你想要添加一个函数作为属性。

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");
  },
);
于 2019-05-08T06:36:53.227 回答