poi*_*rez 2 state navigator flutter
我有一个第一个屏幕,要求用户输入内容,然后当用户单击按钮时,应用程序会进入第二个屏幕,该屏幕使用 FutureBuilder 调用 API。
如果 API 返回错误,我想使用 Navigator.pop 返回到上一个屏幕。当我尝试在 FutureBuilder 的构建器中执行此操作时,我收到错误,因为我在构建树时修改了树......
在构建期间调用 setState() 或 markNeedsBuild()。该 Overlay 小部件无法标记为需要构建,因为框架已经在构建小部件的过程中
如果发生错误,转到上一屏幕的正确方法是什么?
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();
},
)
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
PS:我尝试使用addPostFrameCallback并使用里面的Navigator.pop,但由于某种未知的原因,它被多次调用
当构建方法运行时,您无法直接导航,因此最好显示一些错误屏幕并给用户机会返回到上一个屏幕。
但是,如果您想这样做,则可以使用以下语句来执行此操作。
Future.microtask(() => Navigator.pop(context));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6174 次 |
| 最近记录: |