【问题标题】:How to navigate from one screen to another without onpressed in flutter?如何在不颤动的情况下从一个屏幕导航到另一个屏幕?
【发布时间】:2020-05-24 10:01:40
【问题描述】:

你能告诉我如何在不按下按钮的情况下从一个屏幕导航到另一个屏幕。 在从 API 获得响应后,当条件为真时,我使用三元运算符,它向我显示循环进度指示符,当它变为假时,它导航到新屏幕。

     _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)),

【问题讨论】:

    标签: flutter dart navigation


    【解决方案1】:

    这取决于应用架构,但最简单的解决方案可能是像这样在屏幕上添加帧后回调:

    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 并且不替换整个屏幕,而只是替换内容。

    【讨论】:

    • 即使使用 FutureBuilder,也可以使用后帧回调来导航。
    • 上述方法给了我一个媒体查询错误。请再次编辑代码。
    • Ted Henry 能给我看一下代码吗,怎么做?这将是一个很大的帮助
    猜你喜欢
    • 2010-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 2020-09-03
    • 2020-07-27
    • 1970-01-01
    相关资源
    最近更新 更多