Быстрый вопрос: как выполнить навигацию внутри метода построения виджета?
- Я занимаюсь разработкой приложения Flutter.
- Я использую архитектуру Blo c ,
У меня есть экран с формой создания. Когда пользователь нажимает кнопку, он вызывает API REST. Пока выполняется вызов, я показываю круговой прогресс. Когда процесс завершится, я хочу, чтобы экран выскочил (используя навигацию).
Для отображения статуса задания я использую Stream в блоке blo c и StreamBuilder в виджете. Поэтому я хочу сделать что-то вроде этого:
return StreamBuilder<Job<T>>(
stream: jobstream,
builder: (context, snapshot) {
if (snapshot.hasData) {
if (snapshot.data.jobStatus == JobStatus.progress)
// job being executed, display progress
return Center(child: CircularProgressIndicator());
else if (snapshot.data.jobStatus == JobStatus.success)
Navigator.pop(context); // Problem here!
return Center(child: CircularProgressIndicator());
} else {
return DisplayForm();
}
});
У меня проблемы со строкой: Navigator.pop (context); Поскольку навигация не разрешена во время сборки.
Как я могу сделать эту навигацию?
Мое решение пакостное использует следующую функцию, но уродливо:
static void deferredPop(BuildContext context) async{
Future.delayed(
Duration(milliseconds: 1),
() => Navigator.pop(context)
);
}