美文网首页
flutter视图

flutter视图

作者: wrootlflvl | 来源:发表于2019-06-14 15:10 被阅读0次

    PageView滚动视图

    使用PageView.builder方式构造视图

    class PageViewBuilderDemo extends StatelessWidget {
      // 定义PageView的item项
      Widget _pageItemBuilder(BuildContext context, int index) {
        return Stack(
          children: <Widget>[
            SizedBox.expand(// expand让SizeBox的尺寸可以占满所有可用空间
              child: Image.network(items[index].imageUrl, fit: BoxFit.cover,),
            ),
            Positioned(
              bottom: 8.0,
              left: 8.0,
              child: Column(
                crossAxisAlignment: CrossAxisAlignment.start,
                children: <Widget>[
                  Text(items[index].title, style: TextStyle(fontWeight: FontWeight.bold),),
                  Text(items[index].subTitle),
                ],
              )
            ),
          ],
        );
      }
      // 使用PageView.builder方式构造视图
      @override
      Widget build(BuildContext context) {
        return PageView.builder(itemCount: items.length, itemBuilder: _pageItemBuilder,);
      }
    }
    

    直接添加在PageView的children里面添加简单的滚动视图

    class PageViewDemo extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return PageView(
    //      pageSnapping: false, // 设置是否有分页效果
    //      reverse: true, // 设置视图顺序是否颠倒
          scrollDirection: Axis.horizontal, // 设置滚动方向,默认是水平方向
          // 显示当前页面的回调
          onPageChanged: (currentPage) => debugPrint('Page : $currentPage'),
          controller: PageController(
            initialPage: 0, // 控制初始显示的页面,默认为0
            // 默认PageView会记住用户滚动到哪个页面,如果不想记住就设置此属性为false,默认为true
            keepPage: false,
    //        viewportFraction: 0.9, // 设置视图占用可视口的比例。默认为1即100%
          ),
    
          children: <Widget>[
            Container(
              color: Colors.brown[900],
              alignment: Alignment(0.0, 0.0),
              child:  Text('ONE', style:  TextStyle(fontSize: 32.0, color: Colors.white),),
            ),
            Container(
              color: Colors.green,
              alignment: Alignment(0.0, 0.0),
              child:  Text('TWO', style:  TextStyle(fontSize: 32.0, color: Colors.white),),
            ),
            Container(
              color: Colors.orange,
              alignment: Alignment(0.0, 0.0),
              child:  Text('THREE', style:  TextStyle(fontSize: 32.0, color: Colors.white),),
            ),
          ],
        );
      }
    }
    

    GridView网格视图

    使用GridView.count构造网格视图

    class GridViewCountDemo {
      // 定义网格列表项集合
      List<Widget> _buildTiles(int length) {
        return List.generate(length, (int index){
          return Container(
            color: Colors.grey[300],
            alignment: Alignment(0, 0),
            child: Text('Item', style: TextStyle(fontSize: 18.0, color: Colors.grey),),
          );
        });
      }
    
      @override
      Widget build(BuildContext context) {
        return GridView.count(
          crossAxisCount: 3, // 设置在交叉轴上每一行显示的数量
          crossAxisSpacing: 15.0, // 设置交叉轴边距
          mainAxisSpacing: 10.0, // 设置主轴边距
          scrollDirection: Axis.vertical, // 设置滚动方向,默认为垂直方向
          children: _buildTiles(100),
        );
      }
    }
    

    使用GridView.extent构造网格视图

    class GridViewExtentDemo extends StatelessWidget {
      // 定义网格列表项集合
      List<Widget> _buildTiles(int length) {
        return List.generate(length, (int index){
          return Container(
            color: Colors.grey[300],
            alignment: Alignment(0, 0),
            child: Text('Item', style: TextStyle(fontSize: 18.0, color: Colors.grey),),
          );
        });
      }
    
      @override
      Widget build(BuildContext context) {
        return GridView.extent(
          maxCrossAxisExtent: 100.0, // 网格视图item在交叉轴上的最大尺寸
          crossAxisSpacing: 15.0, // 设置交叉轴边距
          mainAxisSpacing: 10.0, // 设置主轴边距
          scrollDirection: Axis.vertical, // 设置滚动方向,默认为垂直方向
          children: _buildTiles(100),
        );
      }
    }
    

    使用GridView.builder构造网格视图

    class GridViewBuilderDemo extends StatelessWidget {
      // 定义GridView的item
      Widget _gridItemBuilder(BuildContext context, int index) {
        return Container(
          child: Image.network(items[index].imageUrl, fit: BoxFit.cover,),
        );
      }
    
      @override
      Widget build(BuildContext context) {
        return GridView.builder(
          itemCount: items.length,
          itemBuilder: _gridItemBuilder,
          // 控制网格视图item的显示,也可用SliverGridDelegateWithMaxCrossAxisExtent
          gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
            crossAxisCount: 3, // 交叉轴显示的个数
            crossAxisSpacing: 10, // 交叉轴间距
            mainAxisSpacing: 10, // 主轴间距
          ),
        );
      }
    }
    

    相关文章

      网友评论

          本文标题:flutter视图

          本文链接:https://www.haomeiwen.com/subject/zfxpfctx.html