У меня есть первый экран, который просит пользователя ввести данные для ввода, затем, когда пользователи нажимают на кнопку, приложение переходит на второй экран, который использует FutureBuilder для вызова API.
Если API возвращает ошибку, я бы хотел go вернуться на предыдущий экран с Navigator.pop. Когда я пытаюсь сделать это в конструкторе FutureBuilder, я получаю сообщение об ошибке, потому что я изменяю дерево во время его построения ...
setState () или markNeedsBuild (), вызываемые во время сборки. Этот виджет наложения не может быть помечен как необходимый для сборки, потому что каркас уже находится в процессе создания виджетов
Как правильно go перейти к предыдущему экрану в случае возникновения ошибки?
class Stackoverflow extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: FutureBuilder<Flight>(
future: fetchData(context),
builder: (context, snapshot) {
if (snapshot.hasData) {
return ScreenBody(snapshot.data);
} else if (snapshot.hasError) {
Navigator.pop(context, "an error");
}
// By default, show a loading spinner.
return CircularProgressIndicator();
},
)
),
);
}
}
PS: я пытался использовать addPostFrameCallback и использовать Navigator.pop внутри, но по неизвестной причине он вызывается несколько раз