Flutter学习日记之PageView+Indicator指示器实现引导页

Posted Android_小黑

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flutter学习日记之PageView+Indicator指示器实现引导页相关的知识,希望对你有一定的参考价值。

本文地址:https://blog.csdn.net/qq_40785165/article/details/118400571,转载需附上此地址

大家好,我是小黑,一个还没秃头的程序员~~~

天下事以难而废者十之一,以惰而废者十之九

本次给大家分享的是如何用Flutter中的PageView组件配合Indicator指示器实现常见的App引导页,源码地址:https://gitee.com/fjjxxy/flutter-study.git,效果如下:

在这里插入图片描述

(一)PageView介绍

PageView用来实现一个可以显示的逐页滑动的列表,基本参数如下:

参数说明
scrollDirection滑动的方向
reversechildren是否反过来
controller控制器,可以定义初始索引、是否沾满屏幕等
onPageChanged页面变化的监听
children页面集合
pageSnapping页面是否会自动返回上一页/翻页等效果,设置为false便不会有这些效果

代码如下:

          PageView(
            scrollDirection: Axis.horizontal,
            reverse: false,
            onPageChanged: (index) {
              setState(() {
                _index = index;
              });
            },
            controller: PageController(
                initialPage: 0, keepPage: false, viewportFraction: 1),
            pageSnapping: true,
            physics: ClampingScrollPhysics(),
            children: [
              Container(
                width: double.infinity,
                height: double.infinity,
                decoration: BoxDecoration(
                    image: DecorationImage(
                        image: AssetImage(
                            "assets/images/image_guide_2.jpg"),
                        fit: BoxFit.fill)),
              ),
              Container(
                width: double.infinity,
                height: double.infinity,
                decoration: BoxDecoration(
                    image: DecorationImage(
                        image: AssetImage(
                            "assets/images/image_guide_1.jpg"),
                        fit: BoxFit.fill)),
              ),
              Container(
                width: double.infinity,
                height: double.infinity,
                decoration: BoxDecoration(
                    image: DecorationImage(
                        image: AssetImage(
                            "assets/images/image_guide_3.jpg"),
                        fit: BoxFit.fill)),
                child: Stack(
                  alignment: Alignment.bottomCenter,
                  children: [
                    Positioned(
                        bottom: 100,
                        child: ElevatedButton(
                            onPressed: () {
                              Navigator.pushNamed(context, "/main");
                            },
                            style: ButtonStyle(
                                backgroundColor:
                                    MaterialStateProperty.all(Colors.white),
                                foregroundColor:
                                    MaterialStateProperty.all(Colors.black),
                                shape: MaterialStateProperty.all(
                                    RoundedRectangleBorder(
                                        borderRadius:
                                            BorderRadius.circular(10))),
                                side: MaterialStateProperty.all(
                                    BorderSide(color: Colors.white))),
                            child: Text("开启Flutter学习之旅")))
                  ],
                ),
              )
            ],
          )

(二)指示器

Demo中用到的指示器插件是dots_indicator
添加依赖:

dots_indicator: ^2.0.0

引入:

import 'package:dots_indicator/dots_indicator.dart';

基本参数如下:

参数说明
dotsCount指示器数量
position当前的位置
decorator指示器的样式
reversed是否反过来
mainAxisAlignment对齐方式

代码如下:

 DotsIndicator(
                  mainAxisAlignment: MainAxisAlignment.center,
                  reversed: false,
                  dotsCount: 3,
                  position: _index.toDouble(),
                  decorator: DotsDecorator(
                    color: Colors.black87, // Inactive color
                    activeColor: Colors.redAccent,
                  ))

使用Stack+Positioned就可以完成布局中组件的摆放了,很简单的一个页面需求,因为很经常被使用,所以记录下来,本次PageView组件配合Indicator指示器实现App引导页的内容就介绍完了,感兴趣的小伙伴可以下载源码看一下,希望大家可以点个Star,支持一下小白的flutter学习经历,最后,希望喜欢我文章的朋友们可以帮忙点赞、收藏,也可以关注一下,如果有问题可以在评论区提出,后面我会持续更新Flutter的学习记录,与大家分享,谢谢大家的支持与阅读!

以上是关于Flutter学习日记之PageView+Indicator指示器实现引导页的主要内容,如果未能解决你的问题,请参考以下文章

Flutter学习日记之集成极光推送

Flutter学习日记之集成极光推送

Flutter学习日记之集成极光推送

Flutter学习日记之初识ListView组件

Flutter学习日记之Image组件详解

Flutter学习日记之Dialog的使用