利用Flutter打造ViewPager(0基础教程)

本文适合Flutter初学者,没有过多的深入内容,一起来感受flutter的魅力吧。

在原生安卓中,viewPager还是有一定难度的,通常我们要配合fragment及adapter使用,还要去管理fragment的生命周期。代码量还是有的。
如何在flutter里实现ViewPager呢?
答案很简单,flutter为我们封装了一个PageView的Widget,只要善用它,就可以搞定了。
先来看最简单的情况,我们的Page均为Image的情况,而且我们不需要监听事件,仅仅是用户可以滑动,展示。
先把Flutter的模版写好。

import 'package:flutter/material.dart';

void main() {
  runApp(ViewPager());
}

class ViewPager extends StatelessWidget {
}

class ViewPagerStateful extends StatefulWidget {
}

class ViewPagerState extends State<ViewPagerStateful> {
}

顺序如下,main函数创建ViewPager,ViewPager中代码创建ViewPagerStateFul,ViewPagerStateFul中创建ViewPagerState,通过ViewPagerState改变状态。在这里,我们不需要改变ViewPager的状态,所以ViewPagerStateful应该继承于StatelessWidget。
改继承自然要改名,于是,我们的模版如下:

import 'package:flutter/material.dart';

void main() {
  runApp(ViewPager());
}

class ViewPager extends StatelessWidget {
}

class ViewPagerStateless extends StatelessWidget {
}

根据上述的顺序,我们开始往其中填写代码。
先填ViewPager,它就是我们的整个可见页面。

class ViewPager extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: "ViewPager",
      theme: ThemeData(primaryColor: Colors.blue),
      home: ViewPagerStateless(),
    );
  }
}

设置一个主题,并包裹我们的ViewPagerStateless。
接下来就是重中之重了,使用PageView来创建我们的ViewPager。

class ViewPagerStateless extends StatelessWidget {
// 小米官网找的图。嗯,来源,小米新出的cc。
  var imgs = [
    "https://i1.mifile.cn/f/i/2019/micc9/summary/specs-02.png",
    "https://i1.mifile.cn/f/i/2019/micc9/summary/specs-03.png",
    "https://i1.mifile.cn/f/i/2019/micc9/summary/specs-04.png",
    "https://i1.mifile.cn/f/i/2019/micc9/summary/specs-05.png",
    "https://i1.mifile.cn/f/i/2019/micc9/summary/specs-06.png"
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("ViewPager")),
      body: PageView(
        children: <Widget>[
          Image.network(imgs[0]),
          Image.network(imgs[1]),
          Image.network(imgs[2]),
          Image.network(imgs[3]),
          Image.network(imgs[4]),
        ],
      ),
    );
  }
}

appBar用来设置标题栏。
Image.network的命名构造方法可以直接帮我们把网络的图片下载并显示出来。
PageView也很容易,设置一下children的list,就可以显示了。
目前的完整代码如下:

import 'package:flutter/material.dart';

void main() {
  runApp(ViewPager());
}

class ViewPager extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: "ViewPager",
      theme: ThemeData(primaryColor: Colors.blue),
      home: ViewPagerStateless(),
    );
  }
}

class ViewPagerStateless extends StatelessWidget {
  var imgs = [
    "https://i1.mifile.cn/f/i/2019/micc9/summary/specs-02.png",
    "https://i1.mifile.cn/f/i/2019/micc9/summary/specs-03.png",
    "https://i1.mifile.cn/f/i/2019/micc9/summary/specs-04.png",
    "https://i1.mifile.cn/f/i/2019/micc9/summary/specs-05.png",
    "https://i1.mifile.cn/f/i/2019/micc9/summary/specs-06.png"
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("ViewPager")),
      body: PageView(
        children: <Widget>[
          Image.network(imgs[0]),
          Image.network(imgs[1]),
          Image.network(imgs[2]),
          Image.network(imgs[3]),
          Image.network(imgs[4]),
        ],
      ),
    );
  }
}

run起来效果如下:
利用Flutter打造ViewPager(0基础教程)
这时候,我们已经可以左右的滑动了,也会有回弹的效果。

上一篇:tensorflow tensorboard可视化并保存训练结果


下一篇:16 CFR 1220测试报告 非全尺寸婴儿床ASTM F406-19