如何从一个屏幕导航到另一个屏幕而不会颤动?

时间:2020-02-08 13:56:35

标签: flutter dart navigation

能告诉我一些方法,如何在不按下按钮的情况下从一个屏幕导航到另一个屏幕。 当从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)),

1 个答案:

答案 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而不是替换整个屏幕,而仅替换其内容。

相关问题