Flutter - получить значение в тексте ListView для вставки в TextField в другой файл дротика - PullRequest
0 голосов
/ 08 мая 2019

main.dart image homeview.dart

У меня проблема. У меня есть 2 разных файла dart, main.dart и homeview.dart, здесь я намеренно сделал собственный диалог на homeview.dart, диалог содержит просмотр списка и только строки данных, я хочу сделать это и на Список элементов Я создаю виджет Inkwell, чтобы иметь возможность OnTap:, и в main.dart он содержит TextFormField,

Вопрос в том, как, когда в элементе списка onTap текстовая строка перемещается в TextFormField на main.dart?

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

1 Ответ

0 голосов
/ 08 мая 2019

Вы можете работать с обратным вызовом Function.Таким образом, в вашем homeview.dart вы хотите добавить функцию как свойство.

class HomeView extends StatelessWidget {

  final void Function(String) onStringSelected;

  const HomeView({Key key, @required this.onStringSelected}) : super(key: key);

  ...

Теперь вы можете вызывать эту функцию, как только пользователь нажмет кнопку в вашем диалоговом окне.
Так что это будет ваш onTap() function:

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 обратный вызов функции и, например, установить свойство text вашего TextFormField.

HomeView(
  onStringSelected: (myDataString) {
    print("The user clicked $myDataString");
  },
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...