5-4 轮播图Banner功能开发


5-4 轮播图Banner功能开发_第1张图片

5-4 轮播图Banner功能开发_第2张图片

5-4 轮播图Banner功能开发_第3张图片
路径保存 起个名字叫做flutter_trip
5-4 轮播图Banner功能开发_第4张图片

5-4 轮播图Banner功能开发_第5张图片
点击完成
5-4 轮播图Banner功能开发_第6张图片
这里是模拟器
5-4 轮播图Banner功能开发_第7张图片
dart的入口
5-4 轮播图Banner功能开发_第8张图片
5-4 轮播图Banner功能开发_第9张图片

运行按钮
5-4 轮播图Banner功能开发_第10张图片
运行看下初始化的项目
5-4 轮播图Banner功能开发_第11张图片

5-4 轮播图Banner功能开发_第12张图片
点击数字持续+1
5-4 轮播图Banner功能开发_第13张图片

创建navigator的目录文件夹。
5-4 轮播图Banner功能开发_第14张图片

5-4 轮播图Banner功能开发_第15张图片
5-4 轮播图Banner功能开发_第16张图片
再创建dart文件
5-4 轮播图Banner功能开发_第17张图片
5-4 轮播图Banner功能开发_第18张图片

首先要导入material
5-4 轮播图Banner功能开发_第19张图片

5-4 轮播图Banner功能开发_第20张图片
继承有状态的组件StatefulWidget。这里提示我们要复写一个方法。
5-4 轮播图Banner功能开发_第21张图片

5-4 轮播图Banner功能开发_第22张图片
在dart里面,定义内部类,前面加一个下划线。
5-4 轮播图Banner功能开发_第23张图片

5-4 轮播图Banner功能开发_第24张图片
state接收一个类继承自StatefulWidget
5-4 轮播图Banner功能开发_第25张图片
这里红线报错。提示我们有些必须的方法没有实现
5-4 轮播图Banner功能开发_第26张图片
实现方法
5-4 轮播图Banner功能开发_第27张图片

5-4 轮播图Banner功能开发_第28张图片
返回值改成_TabNavigatorState
5-4 轮播图Banner功能开发_第29张图片
然后这里就可以通过箭头函数的形式,创建_TabNavigatorState的实例。
5-4 轮播图Banner功能开发_第30张图片
接下来实现build方法。用Scaffold来作为整个页面的根节点。
5-4 轮播图Banner功能开发_第31张图片

body里面用一个PageView,pageView里面接受一个controller
5-4 轮播图Banner功能开发_第32张图片
PageController接受一个initialPage
5-4 轮播图Banner功能开发_第33张图片
5-4 轮播图Banner功能开发_第34张图片
pageView里面是children,里面就是要显示的页面。
5-4 轮播图Banner功能开发_第35张图片
我们需要显示这四个。

 

创建Dart类快捷键

输入stfu或者是stfless 选择对应的快捷键即可,。

5-4 轮播图Banner功能开发_第36张图片

例如这里选择了stful就可以看到。生成了类的基本结构。这时候有个红色的光标在类这里,

5-4 轮播图Banner功能开发_第37张图片

这时候我们输入类的名字HomePage,然后下面的也会跟着类名自动生成对应的参数名和类名。

5-4 轮播图Banner功能开发_第38张图片

 

定义子页面

创建一个page目录
5-4 轮播图Banner功能开发_第39张图片
修改为pages
5-4 轮播图Banner功能开发_第40张图片
home_page是复制了Tabnavigator页面。
5-4 轮播图Banner功能开发_第41张图片
5-4 轮播图Banner功能开发_第42张图片
所以需要重新命名
5-4 轮播图Banner功能开发_第43张图片


5-4 轮播图Banner功能开发_第44张图片

重命名后,这样关键字都改了
5-4 轮播图Banner功能开发_第45张图片

首页里面就放一个Center然后里面放一个Text
5-4 轮播图Banner功能开发_第46张图片

创建其他页面

复制home_page页面,然后叫做下面三个名字。
5-4 轮播图Banner功能开发_第47张图片

5-4 轮播图Banner功能开发_第48张图片

5-4 轮播图Banner功能开发_第49张图片
搜索页面
5-4 轮播图Banner功能开发_第50张图片
5-4 轮播图Banner功能开发_第51张图片
旅拍页面
5-4 轮播图Banner功能开发_第52张图片

继续实现首页导航

第一个显示我们的HomePage页面。这里红线提示我们找不到这个类。
5-4 轮播图Banner功能开发_第53张图片
光标放在这里,点一下红色的灯泡。帮我们自动导入。
5-4 轮播图Banner功能开发_第54张图片

5-4 轮播图Banner功能开发_第55张图片

这样四个页面就定义好了
5-4 轮播图Banner功能开发_第56张图片

设置底部的四个按钮

tab_navigator.dart内

底部的四个按钮通过bottomNavigationBar来设置
5-4 轮播图Banner功能开发_第57张图片
接收一个BoottomNavigationBar 里面参数items是必须传值的
5-4 轮播图Banner功能开发_第58张图片
我们可以点进去items
5-4 轮播图Banner功能开发_第59张图片
看到他接收的是一个List 也就是一个数组。
5-4 轮播图Banner功能开发_第60张图片
这里我们来定义这个数组。数组里面是个BottomNavigationBarItem
5-4 轮播图Banner功能开发_第61张图片
定义颜色的常量,默认灰色,选中为白色
5-4 轮播图Banner功能开发_第62张图片
默认颜色为_defaultColor
5-4 轮播图Banner功能开发_第63张图片
BarItem还接收一个激活状体下的Icon
5-4 轮播图Banner功能开发_第64张图片
也就是说 Icon 激活状态和非激活状态 我们可以分别定义。
激活状态下我们只需要改它的颜色就可以了。
5-4 轮播图Banner功能开发_第65张图片
设置它的标题,接收一个Text的widget。设置文字的样式用TextStyle
5-4 轮播图Banner功能开发_第66张图片
这里的TextStyle主要设置它的color

在上面定义全局的变量,来判断当前显示的哪一个tab
5-4 轮播图Banner功能开发_第67张图片
这样底部的首页的tab就设置好了。
5-4 轮播图Banner功能开发_第68张图片


搜索的tab。复制首页的tab改下图标和数字就可以了。
5-4 轮播图Banner功能开发_第69张图片


旅拍
5-4 轮播图Banner功能开发_第70张图片

 

我的
5-4 轮播图Banner功能开发_第71张图片

设置BottomNavgatonBar的其他参数

例如当前选中的是哪一个
5-4 轮播图Banner功能开发_第72张图片
然后是点击事件,获取到当前的索引,传递到对应的页面
5-4 轮播图Banner功能开发_第73张图片
最后不要忘记setState里面改变 当前选中的索引值。
5-4 轮播图Banner功能开发_第74张图片

运行测试

运行看效果,并没有效果。
5-4 轮播图Banner功能开发_第75张图片
这是因为我们虽然创建了TabNavigation但是并没有在main.dart中使用。在main.dart中删除多余的代码。这里只保留home的代码。
5-4 轮播图Banner功能开发_第76张图片

main.dart的代码

5-4 轮播图Banner功能开发_第77张图片
然后再来运行查看效果
5-4 轮播图Banner功能开发_第78张图片

tab有没有当前被选中都需要底部的文字 都要显示出来。fixed就是把底部的文字label进行固定。
5-4 轮播图Banner功能开发_第79张图片

5-4 轮播图Banner功能开发_第80张图片
有个bug选中状态下文字的颜色没有对应
5-4 轮播图Banner功能开发_第81张图片

索引是从0开始的。把所以改成从0开始。0123
5-4 轮播图Banner功能开发_第82张图片

5-4 轮播图Banner功能开发_第83张图片

 

本节代码

 main.dart

import 'package:flutter/material.dart';
import 'package:flutter_trip/navigator/tab_navigator.dart';

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

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: TabNavigator(),
    );
  }
}

 

 

 

 github:5-4的分支

https://github.com/zhengeili/flutter_trip/tree/5-4

 

结束




 

你可能感兴趣的:(5-4 轮播图Banner功能开发)