flutter 网格布局Gridview

这篇具有很好参考价值的文章主要介绍了flutter 网格布局Gridview。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Gridview

可以创建网格列表视图;主要通过Count、extent、custom、builder构造列表。有内边距、是否反向、滑动控制器等属性。
四个属性使用场景,Count、extent、custom适用于子布局较少时使用。可能会用到上拉刷新,数据较多时,则使用builder属性,其中count和builder使用较多
flutter 网格布局Gridview

GridView.count

GridView.count 接收下面的命名参数:
其中 crossAxisCount 是必传的,用来控制横轴上子项的个数,
crossAxisSpacing 用来指定横轴上两列的宽度间隙
mainAxisSpacing 用来指定纵轴上两行的高度间隙
childAspectRatio宽高比

代码演示

//网格布局演示
class GridView_test extends StatelessWidget{
  List<Widget> _initlistdata(){
    List<Widget> tmplist=[];    //创建一个存储widget的列表
    for(var i=0;i<list.length;i++){    //list为接收到的数据,在头文件引入
      tmplist.add(Container(
        alignment: Alignment.bottomRight,
        decoration: BoxDecoration(
          border: Border.all(color: Colors.red,width: 2),   //设置边框
           //设置图片填充方式
        ),
        child:Column(
          children: [
            Image(image: NetworkImage("${list[i]["cover"]}")), //设置显示图片
            const SizedBox(height: 10,),
            Text("${list[i]["name"]}",)//设置文字
          ],
        ),
      ),
      );
    }
    return tmplist;
  }
  
  Widget build(BuildContext context) {
    // TODO: implement build
    return GridView.count(
        crossAxisCount: 3,  //设置一行的个数
        crossAxisSpacing:10,  //设置列间距
        mainAxisSpacing: 10, //设置行间距
      children:_initlistdata()
    );
  }
}

效果如下
flutter 网格布局Gridview

GridView.builder

当子widget较多时可以使用该方法来动态创建子widget,在使用GridView.builder时有两个比传入参数gridDelegate与itemBuilder
flutter 网格布局Gridview

  • gridDelegate是SliverGridDelegate类型,主要是用来控制GridView的子Widget的样式
  • itemBuilder方法接收context和index两个参数,返回widget即可
    flutter 网格布局Gridview

itemCount参数,该参数表示展示的数据量,如果未定义可能会出现异常
flutter 网格布局Gridview

gridDelegate是SliverGridDelegate类型,SliverGridDelegate它有两个子类,SliverGridDelegateWithFixedCrossAxisCount和SliverGridDelegateWithMaxCrossAxisExtent,关于这两个类的更多资料参考:https://www.jianshu.com/p/a2481e0696d0

itembuilder和ListView.builder没这么差别
代码演示:

//网格布局演示二
class Gridview_test2 extends StatelessWidget{
  Widget _initlistdata(context,index){
    return Container(
        alignment: Alignment.bottomRight,
        decoration: BoxDecoration(
          border: Border.all(color: Colors.red,width: 2),   //设置边框
          //设置图片填充方式
        ),
        child:Column(
          children: [
            Image(image: NetworkImage("${list[index]["cover"]}")), //设置显示图片
            const SizedBox(height: 10,),
            Text("${list[index]["name"]}",)//设置文字
          ],
        ),
      );
    }
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return GridView.builder(
        itemCount: list.length,
        gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2
    ), itemBuilder: _initlistdata);
  }
}

引用来源:https://blog.csdn.net/u013290250/article/details/121853271
更多详细的参考:http://www.ptbird.cn/flutter-gridview-count-gridview-builder.html文章来源地址https://www.toymoban.com/news/detail-410744.html

到了这里,关于flutter 网格布局Gridview的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【CSS】网格布局(简单布局、网格合并、网格嵌套)

    CSS网格布局(Grid Layout)是一种强大且灵活的CSS布局系统,允许开发者以网格形式组织和定位HTML元素。网格布局可以帮助我们在一个容器中定义行(rows)和列(columns),然后将元素放置在这些网格中。这种布局方式比传统的基于浮动和定位的布局更直观和易于管理,特别适

    2024年02月13日
    浏览(33)
  • 【Qt】盒子布局、网格布局、表单布局和堆栈布局

    QBoxLayout可以在水平方向或垂直方向上排列控件,分别派生了QHBoxLayout、QVBoxLayout子类。 QHBoxLayout:水平布局,在水平方向上排列控件,即:左右排列。 QVBoxLayout:垂直布局,在垂直方向上排列控件,即:上下排列。 水平布局、垂直布局除了构造时的方向(LeftToRight、TopToBotto

    2024年02月06日
    浏览(32)
  • Android基本布局-GridLayout_网格布局

    概述 :网格布局相对于表格布局来说自由度更高,是以行数和列数来确定位置进行排列。就像一间教室,确定好行数与列数就能让同学有序入座。 1. 可以设置布局中组件的排列方式 2. 可以自定行列数 GridLayout 常用布局标签: android:columnCount=\\\"4\\\" :设置最大列数,这里设置为4。

    2023年04月08日
    浏览(33)
  • CSS网格布局

    CSS 网格布局(CSS Grid)是 CSS 中的一种二维布局系统,可以非常方便地进行网页布局。网格布局的工作原理是将页面划分成一个个网格,然后规定内容放在哪个网格中,从而实现复杂的布局结构。 基本用法 使用网格布局主要分为以下几个步骤:   1. 定义容器: 2. 设置列和行: 3. 定义子

    2024年02月09日
    浏览(26)
  • 网格布局应用css

    常用属性总结 父盒子 属性名 属性值 简介 grid-template-columns 具体数值 / fr / repeat(auto-fill, minmax(100px, 1fr)) 1.几个具体数值代表几行,2.几个fr代表几行,3.没有固定宽度最小100px直到放不下换行,也可以使用auto-fit有同样效果 grid-template-rows 具体数值 / fr 1.几个具体数值代表几行,

    2024年02月11日
    浏览(28)
  • 【前端|CSS系列第4篇】CSS布局之网格布局

    最近在做的一个项目前台首页有一个展示词条的功能,每一个词条都以一个固定大小的词条卡片进行展示,要将所有的词条卡片展示出来,大概是下面这种布局 每一行的卡片数目会随着屏幕大小自动变化,并且希望整个卡片区域周围不要有太大的留白,可是由于本人css学的并

    2024年02月16日
    浏览(29)
  • 小程序中的网格布局

    在日常小程序开发中,第一个遇到的问题是页面布局的问题。设计师给的设计稿通常是一个静态的图片,我们要把图片转换成实际可以使用的布局。在电商场景中,我们经常会看到商品的两列布局,通常在CSS中,两列布局可以使用网格布局的方案解决。我们本篇就讲解一下

    2024年02月10日
    浏览(29)
  • WPF网格拖动自动布局效果

    使用Canvas和鼠标相关事件实现如下的效果: XAML代码: C#代码 项目地址github

    2024年02月11日
    浏览(25)
  • grid 栅格/网格布局学习笔记

             栅格布局或者说网格布局是很好用的东西,像一些商城类的排版就很适合用栅格布局,但是存在一定的兼容性问题,兼容性暂时还没有研究,这边学习总结是针对grid也就是栅格布局的使用的学习总结,下面将介绍我认为的常用的几个属性,如果想要更详细的学习

    2024年02月05日
    浏览(38)
  • 在DevExpress的GridView的列中,动态创建列的时候,绑定不同的编辑处理控件

    在使用DevExpress的GridView的时候,我们为了方便,往往使用一些扩展函数,动态创建GridView列的编辑控件对象,然后我们可以灵活的对内容进行编辑或者使用一些弹出的对话框窗体进行处理内容的录入,本篇随笔就是介绍这一主题:在DevExpress的GridView的列中,动态创建列的时候

    2024年02月17日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包