Flutter修仙传第二章:路由详解

兄弟们,咱们又见面了。

在上一章中,咱们入门学习了Flutter神功,会了些皮毛,知道了输入框,单选复选等这些基础组件的使用,小生并没有讲解按钮这种基础组件的使用,像这种easy的不能再easy的组件知识点,如果你看了还不会,那么请照一下镜子,告诉自己:放弃编程吧。

万丈红尘财路多,何必非做一码农?

咱们已经学会了Flutter的一些皮毛,在一个页面里,咱们能够整个输入框,整个按钮了,咱们很高兴,就想着大展身手,多整几个页面,这时,懵了,我怎么构建其他页面?我怎么打开其他页面?

这时候,就用到了路由的概念。

什么是路由?

路由(Route)在移动开发中通常指页面(Page),这跟web开发中单页应用的Route概念意义是相同的,Route在Android中通常指一个Activity,在iOS中指一个ViewController。

什么是路由管理?

所谓路由管理,就是管理页面之间如何跳转,通常也可被称为导航管理。Flutter中的路由管理和原生开发类似,无论是Android还是iOS,导航管理都会维护一个路由栈,路由入栈(push)操作对应打开一个新页面,路由出栈(pop)操作对应页面关闭操作,而路由管理主要是指如何来管理路由栈。

兄弟们对上面的概念可能有点模糊,别担心,看完下面的内容就明白了。

咱们先创建三个页面,page1.dart,page2.dart,page3.dart。
每个页面的基本结构如下:

import 'package:flutter/material.dart';

class PageOne extends StatelessWidget {
   
  @override
  Widget build(BuildContext context) {
   
    return Scaffold( // 一个页面骨架容器类型组件,在这里可以设置导航栏,主要页面等内容
      appBar: AppBar(
        title: Text("第一个页面"),
      ),
      body: Column(
        children: <Widget>[
          RaisedButton(
              child: Text("跳转第二页"),
              onPressed: (){
   
                // 这里执行按钮的点击事件,如跳转页面,获取数据等操作
              }
          )
        ],
      ),
    );
  }
}

Scaffold组件,兄弟们可以认为就是一个页面骨架组件,创建页面,就用这个组件就行,详细内容,小生后续章节讲解。

好,页面咱们已经创建了,下一步就是要让这个页面显示出来。

兄弟们别忘了一个概念:组件。

按钮是组件,输入框是组件,图片是组件,你创建的这个.dart文件也可以看成组件。并不是官方提供的东西才是组件,你创建的.dart文件,可以是页面,也可以是按钮,输入框等,或者自定义的内容,都可以看成组件。

既然是组件,那就可以引入。

兄弟们在你们的main.dart里面将page1.dart引入,不会引入?开什么玩笑,你敲一个import就会有提示,无论是…/还是./或者还是直接lib/这种,只要你能引入进来不报错就行,引入个两三遍你就心领神会了。

引入后,在页面中添加一个按钮,在按钮的onPressed事件中添加以下操作:

//导航到新路由   
 Navigator.push( context,
  MaterialPageRoute(builder: (context) {
   
     return PageOne(); // 你每个页面的类名是什么,这里就是什么
  }));

兄弟们又懵了,这又是Navigator又是MaterialPageRoute,这都是什么玩意?就这么写就行吗?
对,就这么写就行,不信你点点按钮,啪嚓,直接跳转到了page1.dart这个页面了。

先来说下MaterialPageRoute这个东西,通俗一点讲,这玩意提供了显示路由页面的功能,比如说,你怎么显示页面?用什么动画效果显示页面?显示哪一个页面?都可以用这玩意来操作,如果兄弟们觉得小生说的不够官方,不够学术,你就搜一搜官方文档,这里不多做解释。

啥是Navigator?

Navigator是一个路由管理的组件,它提供了打开和退出路由页方法。Navigator通过一个栈来管理活动路由集合。通常当前屏幕显示的页面就是栈顶的路由。Navigator提供了一系列方法来管理路由栈,比如push,pop等。

有朋友又迷惑了,什么是栈?学Flutter怎么还整上客栈了?

这个栈啊,兄弟们可以认为是一个盒子,打个比方,你偷偷给你女朋友写情书,写完一张往这个盒子里放一张,你看到的永远都是最上面的一张,也就是你当前看到的页面,你往这个盒子里一张张放情书的过程就是入栈push,你一张张拿出来的过程就是出栈pop。

Navigator就是Flutter为咱们提供的控制页面打开关闭的一个工具,有朋友恍然大悟ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值