Flutter中关于StaggeredGridView的点滴「建议收藏」

Flutter中关于StaggeredGridView的点滴「建议收藏」木辛老师来了,本节课咱们一起来看看如何在Flutter中使用StaggeredGridView吧!

欢迎大家来到IT世界,在知识的湖畔探索吧!

木辛老师来了,本节课咱们一起来看看如何在Flutter中使用StaggeredGridView吧!

请点击右上角“关注”按钮关注我们哟:跟着木辛老师学习Flutter基础编程知识,变身快乐的编程达人吧~

Flutter中关于StaggeredGridView的点滴「建议收藏」

在Flutter中有一个支持自定义的GridView组件,它的名字叫做StaggeredGridView。

这是一个可以呈现交错网格样式的小部件,非常适合用在一些电影或者产品介绍类的应用程序中。往往在这类的程序中展现的图片或者描述都是不定长度的,有的会很长,有的却很短。

因此,通过今天的内容,让我们一起学习一下这个组件的知识吧。

口说没概念,上图表诚意,请看:

Flutter中关于StaggeredGridView的点滴「建议收藏」

看到这图是不是被StaggeredGridView的效果震撼住了捏?

那么,我们来详细讲讲吧。

通过引入flutter_staggered_grid_view可以使用StaggeredGridView

  • 创建Flutter项目

使用你最喜欢的编辑器创建一个Flutter项目

  • 添加依赖

因为这是第三方的依赖项,所以需要先安装它。我们通过在pubspec.yaml文件中添加如下代码:

dependencies: flutter_staggered_grid_view: 0.4.0

欢迎大家来到IT世界,在知识的湖畔探索吧!

添加之后,执行命令

欢迎大家来到IT世界,在知识的湖畔探索吧!flutter pub get

将需要的代码同步到本地项目中。

  • 开始使用

导入这个库

import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
  • 创建StaggeredGridView

StaggeredGridView 使用的是和 GridView 相同的构造函数的调用方式。这里有两个构造函数countBuilder 和 extentBuilder。这些构造函数允许您为布局定义一个构建器,同时也支持为子项定义一个构建器。

所以要创建一个 StaggeredGridView非常简单,第一步:实例化它;第二步:调用countBuilder并传递 crossAxisCount、itemCount 和 itemBuilder ,如下所示:

欢迎大家来到IT世界,在知识的湖畔探索吧!new StaggeredGridView.countBuilder(
 crossAxisCount: 4,
 itemCount: 8,
 itemBuilder: (BuildContext context, int index) => new Container(
 color: Colors.green,
 	child: new Center(
 		child: new CircleAvatar(
 			backgroundColor: Colors.white,
 			child: new Text('$index'),
 		),
 	),
 ),
 staggeredTileBuilder: (int index) =>
 new StaggeredTile.count(2, index.isEven ? 2 : 1),
 mainAxisSpacing: 4.0,
 crossAxisSpacing: 4.0,
)

写完之后执行一下,你那边的效果是不是如下图所示的样子呢?

Flutter中关于StaggeredGridView的点滴「建议收藏」

调用就是这么滴简单,要不我们再来个完整的程序看看吧?

(一)

多彩的带有小图标的GridView效果

import 'package:flutter/material.dart';
import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';

const List<StaggeredTile> _staggeredTiles = <StaggeredTile>[
  StaggeredTile.count(2, 2),
  StaggeredTile.count(2, 1),
  StaggeredTile.count(1, 2),
  StaggeredTile.count(1, 1),
  StaggeredTile.count(2, 2),
  StaggeredTile.count(1, 2),
  StaggeredTile.count(1, 1),
  StaggeredTile.count(3, 1),
  StaggeredTile.count(1, 1),
  StaggeredTile.count(4, 1),
];

const List<Widget> _tiles = <Widget>[
  _Example01Tile(Colors.green, Icons.widgets),
  _Example01Tile(Colors.lightBlue, Icons.wifi),
  _Example01Tile(Colors.amber, Icons.panorama_wide_angle),
  _Example01Tile(Colors.brown, Icons.map),
  _Example01Tile(Colors.deepOrange, Icons.send),
  _Example01Tile(Colors.indigo, Icons.airline_seat_flat),
  _Example01Tile(Colors.red, Icons.bluetooth),
  _Example01Tile(Colors.pink, Icons.battery_alert),
  _Example01Tile(Colors.purple, Icons.desktop_windows),
  _Example01Tile(Colors.blue, Icons.radio),
];

class Example01 extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('example 01'),
      ),
      body: Padding(
        padding: const EdgeInsets.only(top: 12),
        child: StaggeredGridView.count(
          crossAxisCount: 4,
          staggeredTiles: _staggeredTiles,
          mainAxisSpacing: 4,
          crossAxisSpacing: 4,
          padding: const EdgeInsets.all(4),
          children: _tiles,
        ),
      ),
    );
  }
}

class _Example01Tile extends StatelessWidget {
  const _Example01Tile(this.backgroundColor, this.iconData);

  final Color backgroundColor;
  final IconData iconData;

  @override
  Widget build(BuildContext context) {
    return Card(
      color: backgroundColor,
      child: InkWell(
        onTap: () {},
        child: Center(
          child: Padding(
            padding: const EdgeInsets.all(4),
            child: Icon(
              iconData,
              color: Colors.white,
            ),
          ),
        ),
      ),
    );
  }
}

程序写完,是不是就迫不及待地想执行看看效果啦?

Flutter中关于StaggeredGridView的点滴「建议收藏」

看着还不错!

再来看一个例子

(二)带有数字的GridView

import 'package:flutter/material.dart';
import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';

class Example02 extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('example 02'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(4),
        child: StaggeredGridView.countBuilder(
          crossAxisCount: 4,
          itemCount: 8,
          itemBuilder: (BuildContext context, int index) => Container(
            color: Colors.green,
            child: Center(
              child: CircleAvatar(
                backgroundColor: Colors.white,
                child: Text('$index'),
              ),
            ),
          ),
          staggeredTileBuilder: (int index) =>
              StaggeredTile.count(2, index.isEven ? 2 : 1),
          mainAxisSpacing: 4,
          crossAxisSpacing: 4,
        ),
      ),
    );
  }
}

执行,执行!

Flutter中关于StaggeredGridView的点滴「建议收藏」

好了,程序就写到这,如果意犹未尽,那就等接下来的文章吧。

请大家关注木辛老师的课程哟,获取更多编程知识和编程技巧。接下来,木辛老师和大家一步一步地学习Flutter知识吧。

快乐编程,快乐成长!

咱们下节课再见,88~

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/17808.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信