簡體   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