Возвращает данные с экрана с помощью .pop()

#flutter

#flutter

Вопрос:

В screenA у меня есть текстовая строка и кнопка с событием onTap, подобным этому:

       String onScreenA;
      void initState(){
       super.initState();
       onScreenA = "";
       setState(() {}); 
      }
      onTap: () {
        showDialog(
          context: context,
          builder: (BuildContext context) => ScreenB(),
        );           
      },
  

ScreenB

             new FlatButton(
            onPressed: () {
              
              Navigator.of(context).pop("ValueFromB");
            },
            child: new Text("ValueFromB"))
  

Это означает, когда я нажимаю кнопку на screenA . Это приведет к screenB . Когда пользователь FlatButton войдет ScreenB в onTap, он вернется обратно screenA и установится String onScreenA = "ValueFromB" .

Как я могу это сделать?

Комментарии:

1. можете ли вы показать нам больше кода вашего виджета возврата screenB?

2. @Reign Спасибо за ваш ответ. По сути, это кнопка со строкой значения или номером, как в моем сообщении.

Ответ №1:

В вашем onTap , await для результата showDialog и присвоите его onScreenA .

 onTap: () async {
  onScreenA = await showDialog(
    context: context,
      builder: (BuildContext context) => ScreenB(),
    );           
},
  

showDialog Функция возвращает Future , которая разрешается с помощью переданного значения pop , поэтому просто обработайте Future и назначьте результат так, как вы хотите.