#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
и назначьте результат так, как вы хотите.