zoukankan      html  css  js  c++  java
  • 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,则页面视图的高度是父容器高度的一半。

  • 相关阅读:
    Codechef EDGEST 树套树 树状数组 线段树 LCA 卡常
    BZOJ4319 cerc2008 Suffix reconstruction 字符串 SA
    Codechef STMINCUT S-T Mincut (CodeChef May Challenge 2018) kruskal
    Codeforces 316G3 Good Substrings 字符串 SAM
    Codechef CHSIGN Change the Signs(May Challenge 2018) 动态规划
    BZOJ1396 识别子串 字符串 SAM 线段树
    CodeForces 516C Drazil and Park 线段树
    CodeForces 516B Drazil and Tiles 其他
    CodeForces 516A Drazil and Factorial 动态规划
    SPOJ LCS2
  • 原文地址:https://www.cnblogs.com/zengfp/p/10918597.html
Copyright © 2011-2022 走看看