美文网首页
Flutter初步探索(一)页面跳转 Navigation

Flutter初步探索(一)页面跳转 Navigation

作者: 安啡他命 | 来源:发表于2018-12-23 10:02 被阅读27次

一、 指引

  1. 创建两个页面
  2. 跳转到第二个页面使用Navigator.push
  3. 返回第一个页面使用Navigator.pop
  4. 完整例子

1. 创建两个页面

首先,我们会创建两个页面,每个页面都包含一个按钮。点击第一个页面的按钮会跳转到第二个页面,点击第二个页面的按钮会返回第一个页面。
初始结构:

class FirstScreen extends StatelessWidget{
  @override
  Widget build(BuildContext context){
    return Scaffold(
      appBar: AppBar(
        title: Text('第一个页面'),
      ),
      body: Center(
        child: RaisedButton(
          child: Text('启动页'),
          onPressed: (){
            Navigator.push(
              context, 
              
            );
          },
        ),
      ),
    );
  }
}


class SecondScreen extends StatelessWidget{
  @override
  Widget build(BuildContext context) {
      return Scaffold(
        appBar: AppBar(
          title: Text('第二个页面'),
        ),
        body: Center(
          child: RaisedButton(
            onPressed: (){
            
            },
            child: Text('返回'),
          ),
        ),
      );
    }
}

2. 跳转到第二个页面使用'Navigator.push'

为了能够跳转到第二个页面,我们将会使用 Navigator.push 方法。这个push方法将会添加一个Route到由Navigator所管理的路由堆中。
Push方法要求有一个Route,但是这里的Route是从哪里来呢?我们可以创建我们自己的Route,或者使用 MaterialPageRouteMaterialPageRoute 很方便,它会使用特定平台的动画跳转到新的页面。
FirstScreenWidget的build方法中,更新onPressed回调:

// Within the `FirstScreen` Widget
onPressed: () {
  Navigator.push(
    context,
    MaterialPageRoute(builder: (context) => SecondScreen()),
  );
}

3. 返回第一个页面使用'Navigator.pop'

现在我们在第二个屏幕上,我们如何关闭它并返回第一个屏幕?使用Navigator.pop方法!pop方法将从Navigator管理的路由堆栈中删除当前的Route
在这个部分,更新在SecondScreenWidget的onPressed回调

// Within the SecondScreen Widget
onPressed: () {
  Navigator.pop(context);
}

4. 完整例子

import 'package:flutter/material.dart';


void main() => runApp(MyNavigaton());


class MyNavigaton extends StatelessWidget{
  @override
  Widget build(BuildContext context) {
      
      return MaterialApp(
        home: FirstScreen(),
      );
    }
}

class FirstScreen extends StatelessWidget{
  @override
  Widget build(BuildContext context){
    return Scaffold(
      appBar: AppBar(
        title: Text('First Screen'),
      ),
      body: Center(
        child: RaisedButton(
          child: Text('Lanuch Screen'),
          onPressed: (){
            Navigator.push(
              context, 
              MaterialPageRoute(builder: (context)=> SecondScreen()),
            );
          },
        ),
      ),
    );
  }
}


class SecondScreen extends StatelessWidget{
  @override
  Widget build(BuildContext context) {
      return Scaffold(
        appBar: AppBar(
          title: Text('Second Screen'),
        ),
        body: Center(
          child: RaisedButton(
            onPressed: (){
              Navigator.pop(context);
            },
            child: Text('Go Back'),
          ),
        ),
      );
    }
}

二、效果图

效果图

三、原文链接

1.简书-Flutter初步探索(一)页面跳转 Navigation

四、参考文档

1.Navigate to a new screen and back

五、公众号

不器猿

相关文章

网友评论

      本文标题:Flutter初步探索(一)页面跳转 Navigation

      本文链接:https://www.haomeiwen.com/subject/fxvgkqtx.html