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

main.dart изображение homeview.dart

У меня есть проблема, у меня есть 2 различных файла дартс, 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 ответ

Вы могли бы работать с 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.

HomeView(
  onStringSelected: (myDataString) {
    print("The user clicked $myDataString");
  },
);
Другие вопросы по тегам