• Flutter中的可滚动列表组件-PageView


    PageVIew,可滚动的视图列表组件,而且每一个子组件的大小都和视图窗口大小一样。

    属性:

    • controller -> PageController 用于控制视图页面滚动到的位置
    • children 视图页面列表
    • scrollDirection 页面滚动的方向,从左往右,或者从上往下
    • onPageChanged 视图页面发生转换的时候进行的函数操作
    • reverse 对视图页面的排列顺序进行反转

    效果:

    PageView的用法

    在项目的main.dart中的代码:

    import 'package:flutter/material.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.pink,
          ),
          home: MyHomePage(),
        );
      }
    }
    
    class MyHomePage extends StatefulWidget {
    
      @override
      _MyHomePageState createState() => _MyHomePageState();
    }
    
    class _MyHomePageState extends State<MyHomePage> {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text('Demo Code',style: TextStyle(color: Colors.white),),
            centerTitle: true,
          ),
          body: Container(
            height: 500.0,//确保pageview的高度
            child: PageView(
              controller: PageController(
                initialPage: 0,//让初始页为第一个pageview的实例
                viewportFraction: 1.0//让页面视图充满整个视图窗口 即充满400px高的视图窗口
              ),
              children: <Widget>[
                Container(
                  color: Colors.yellow,
                  child: Center(
                    child: Text('这是第一个pageView的实例',style: TextStyle(color: Colors.white,fontSize: 20.0),),
                  ),
                ),
                Container(
                  color: Colors.red,
                  child: Center(
                    child: Text('这是第二个pageView的实例',style: TextStyle(color: Colors.white,fontSize: 20.0),),
                  ),
                ),
                Container(
                  color: Colors.green,
                  child: Center(
                    child: Text('这是第三个pageView的实例',style: TextStyle(color: Colors.white,fontSize: 20.0),),
                  ),
                )
              ],
              scrollDirection: Axis.vertical,//上下滚动
              onPageChanged: (int index) {
                print('这是第${index}个页面');
              },
              reverse: false,//是否反转页面的顺序
            ),
          ),
        );
      }
    }

     如果container的高度500没有设置的话,每个页面的大小将是手机的可视高度。

    如果controller中的initialPage设置为1,则当前显示的页面时第二个页面

    viewprotFraction的默认值为1.0,表示页面视图充满整个父容器。若是0.5,则页面视图的高度是父容器高度的一半。

  • 相关阅读:
    2021“MINIEYE杯”中国大学生算法设计超级联赛(1)1005. Minimum spanning tree(min25筛)
    2021“MINIEYE杯”中国大学生算法设计超级联赛(1)1008. Maximal submatrix(DP/单调栈)
    2021牛客暑期多校训练营2 K. Stack(拓扑排序)
    2021牛客暑期多校训练营2 F. Girlfriend(阿波罗尼斯圆/计算几何)
    牛客小白月赛36 C. 杨辉三角(组合数/推柿子)
    牛客小白月赛36 I. 四面楚歌(DFS)
    链路聚合
    python 重复尝试【retry】编写
    groovy 错误retry函数
    Jenkins【共享库功能】开发通用流水线模板
  • 原文地址:https://www.cnblogs.com/zengfp/p/10918597.html
Copyright © 2020-2023  润新知