能告诉我一些方法,如何在不按下按钮的情况下从一个屏幕导航到另一个屏幕。 当从API获得响应后,当条件为true时,我将使用三元运算符,它会向我显示循环进度记录器,如果为false,则会导航至新屏幕。
_con.loading
? Padding(
padding: EdgeInsets.all(55),
child: CircularProgressIndicator(),)
:
Navigator.of(context).pushNamed('/FindingDriver',
arguments: RouteArgument(param: _con.order.id, param2: _con.order.foodOrders.first.food.restaurant.id)),
答案 0 :(得分:0)
这取决于应用程序的体系结构,但是最简单的解决方案可能是在屏幕上添加如下的帧后回调:
class FirstPage extends StatefulWidget {
@override
_FirstPageState createState() => _FirstPageState();
}
class _FirstPageState extends State<FirstPage> {
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) async {
final response = await Future.delayed(Duration(seconds: 3));
Navigator.of(context).pushReplacement(MaterialPageRoute(builder: (_) => SecondPage()));
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('First'),),
body: Center(child: CircularProgressIndicator()));
}
}
class SecondPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Second'),),
body: Container(),);
}
}
作为替代方案,请考虑利用FutureBuilder
而不是替换整个屏幕,而仅替换其内容。