Flutter: отправить данные обратно в указанный c элемент списка - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь отправить данные на указанный c элемент списка на экране.

Лог c заключается в том, что при нажатии на указанную карту c в списке открывается второй экран с полем ввода (см. Изображения ниже). Затем вы отправляете свой ввод, и он изменяет значение этой карты c на первом экране.

Как лучше всего этого добиться?

enter image description here enter image description here

Ответы [ 2 ]

1 голос
/ 06 мая 2020

Вы можете сделать это так:

Вместо того, чтобы просто переходить на другую страницу, ожидайте возврата

final data = await Navigator.push(context,
    MaterialPageRoute(builder: (context) => InputScreen()));

setState(()
   myList.add(data); //do whatever you want with the return here
});

И на вашем InputScreen вы делаете это:

Navigator.of(context).pop(data);

Кроме того, если ваш пользователь нажмет кнопку «Назад» на своем телефоне, он вернет значение null, поэтому вам нужно будет с этим справиться.

0 голосов
/ 07 мая 2020

Вы можете добиться этого, выполнив следующие шаги:

1) В функции карты onTap дождитесь результата, добавив следующий код:

                     // on tap function of your card
   onTap: () async {
   // navigate to the second screen and wait for input user enters
         final result = await Navigator.push(context
                     MaterialPageRoute(builder: (context) => SecondScreen()));

         // call setstate to see your changes 
         setState(() {
         // add the input to your list
         myList.add(result);
          );
        },

1 ) В функции onTap вашей кнопки отправки отправьте результат, добавив следующий код:

 // ontap function of your submit button
 onTap: () {
       // value is what the user has inputted in the text field
       Navigator.pop(context, value);
 },
...