Flutter GridView 自定义宽高

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

        首先在children获取控件中进行高度设置,是不生效的。因为系统默认宽高比属性childAspectRatio控制,默认宽高比1:1。
        先介绍一下系统自带的方式调整大小,但是这个不能控制他的宽高固定是多少,只能修改他的比例
GridView.builder(
          padding: EdgeInsets.fromLTRB(20, 20, 20, 0),
          itemCount: 10,
          gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
             //一行多少个
            crossAxisCount: 2,
            crossAxisSpacing: 20, //设置列间距
            mainAxisSpacing: 10, //设置行间距
          ),
          itemBuilder: _initlistdata)
        还有一种方式就是直接重写girdview的源码,这个也是我在网上找大神提供的代码,非常好用,废话不多说直接上代码

 

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

/// 多按钮布局,可用于单行及多行按钮布局
/// 平均分配每个按钮宽度,自适应每行最高高度
/// 可添加按钮之间的间距,可添加多行之间的间距
class OptionGridView extends StatelessWidget {
  final int itemCount;
  final int rowCount;
  final int columnCount;
  final double mainAxisSpacing;
  final double crossAxisSpacing;
  final EdgeInsetsGeometry? padding;
  final IndexedWidgetBuilder itemBuilder;

  /// [itemCount] 按钮总个数
  /// [rowCount] 每行按钮个数
  /// [mainAxisSpacing] 行间距
  /// [crossAxisSpacing] 按钮间距
  OptionGridView({
    Key? key,
    required this.itemCount,
    required this.rowCount,
    this.mainAxisSpacing = 0.0,
    this.crossAxisSpacing = 0.0,
    this.padding = const EdgeInsets.all(0),
    required this.itemBuilder,
  })  : assert(itemCount >= 0),
        assert(rowCount > 0),
        columnCount = (itemCount / rowCount).ceil(),
        assert(mainAxisSpacing >= 0),
        assert(crossAxisSpacing >= 0),
        super(key: key);

  @override
  Widget build(BuildContext context) {
    return ListView.separated(
      itemCount: columnCount,
      padding: padding,
      physics: const NeverScrollableScrollPhysics(),
      shrinkWrap: true,
      controller: ScrollController(keepScrollOffset: false),
      separatorBuilder: (context, index) => SizedBox(height: mainAxisSpacing),
      itemBuilder: (context, index) => buildRow(context, index),
    );
  }

  Widget buildRow(BuildContext context, int index) {
    if (index < columnCount - 1) {
      List<Widget> row = [];
      for (int i = 0; i < rowCount; i++) {
        row.add(Expanded(
          flex: 1,
          child: itemBuilder(context, i + index * rowCount),
        ));
        if (crossAxisSpacing > 0.0 && i < rowCount - 1) {
          row.add(SizedBox(width: crossAxisSpacing));
        }
      }
      return Row(crossAxisAlignment: CrossAxisAlignment.start, children: row);
    } else {
      // 最后一行
      List<Widget> row = [];
      for (int i = 0; i < rowCount; i++) {
        int currentIndex = i + index * rowCount;
        if (currentIndex < itemCount) {
          row.add(Expanded(
            flex: 1,
            child: itemBuilder(context, i + index * rowCount),
          ));
          if (crossAxisSpacing > 0.0 && i < rowCount - 1) {
            row.add(SizedBox(width: crossAxisSpacing));
          }
        } else {
          row.add(const Expanded(flex: 1, child: SizedBox()));
        }
      }
      return Row(crossAxisAlignment: CrossAxisAlignment.start, children: row);
    }
  }
}

重写后的代码使用 

OptionGridView(
          itemCount: 12,
          rowCount: 3,
          mainAxisSpacing: 10,
          crossAxisSpacing: 10,
          itemBuilder: _initlistdata,
        ),

上述就是修改GridView展示的全部代码了,喜欢的留个赞吧 文章来源地址https://www.toymoban.com/news/detail-688653.html

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

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

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

相关文章

  • Flutter 宽高自适应

    在Flutter开发中也需要宽高自适应,手动写一个工具类,集成之后在像素后面直接使用 px或者 rpx即可。 工具类代码如下: 扩展(extension)代码 开始使用 1、需要在 main中进行初始化 2、在使用的地方导入扩展文件直接使用即可

    2024年02月12日
    浏览(22)
  • 安卓中GridView的使用

    一、概述 GridView(网格视图)是按照行列的方式来显示内容的,一般用于显示图片,图片文字等内容,比如实现十六宫格,九宫格,四宫格等,用GridView是首选,也是最简单的。 常用属性: Android:columnWidth:设置列的宽度。 android:gravity:设置此组件中的内容在组件中的位置。可

    2024年02月16日
    浏览(25)
  • GridView的绑定,添加,删除,更改;

    GridView的绑定,添加,删除,更改; 在用GridView控件时候的操作如下 用的的数据库如下 接下来是gridview的使用 前台代码如下 后台代码如下 结果如下

    2024年02月11日
    浏览(30)
  • Android studio之GridView使用

    效果图: 代码: UserGridviewAdapter UserGridviewBean MainActivity item activity_main.xml

    2024年02月11日
    浏览(41)
  • QT quick基础:组件gridview

    组件gridview与android中gridview布局效果相同。 一、下面记录qt quick该组件的使用方法。 方法一: 运行效果 方法二: 列表和代理分开。 效果图如上。 我自己的需求,点击gridview的item,修改对应item的图片,并且改变该item的字体颜色。上述代码中,Image没有点击信号,gridview也没

    2024年01月19日
    浏览(32)
  • ASP.net web应用 GridView控件常用方法

    GridView 控件是 ASP.NET Web Forms 中常用的数据展示控件之一。它提供了一个网格形式的表格,用于显示和编辑数据。GridView 控件对于包含大量数据、需要进行分页、排序和筛选的情况非常有用。 GridView 控件的主要特性包括: 数据绑定:GridView 可以与各种数据源进行绑定,如数据

    2024年02月09日
    浏览(27)
  • flex 布局 子元素不设置宽高,高度撑满父元素的问题

    在 flex 布局中,我们通过 align-items 来控制元素在交叉轴上的对齐方式。 它可能取5个值: flex-start: 交叉轴的起点对齐 flex-end: 交叉轴的终点对齐 center: 交叉轴的中点对齐。 baseline: 项目的第一行文字的基线对齐。 stretch (默认值): 如果子元素未设置高度或者高度为auto,将占满

    2024年02月11日
    浏览(34)
  • 【Android从零单排系列二十二】《Android视图控件——GridView》

    目录 前言 一 GridView基本介绍 二 GridView使用方法 三 GridView常见属性及方法 四 总结 小伙伴们,在上文中我们介绍了Android视图组件ExpandableListView,本文我们继续盘点,介绍一下视图控件的GridView。 GridView是一个在Android中常用的布局控件,它可以以网格形式展示数据,类似于表

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

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

    2024年02月17日
    浏览(27)
  • 在DevExpress的GridView的列中,使用RepositoryItemSearchLookUpEdit控件实现产品列表信息的展示和选择

    有时候,我们为了方便,我们往往使用扩展函数的代码方式创建很多GridView的操作功能,如在随笔《在DevExpress中使用BandedGridView表格实现多行表头的处理》中介绍过多行表头的创建及绑定处理,在《基于DevExpress的GridControl实现的一些界面处理功能》也介绍了一些特殊的展示效

    2024年02月07日
    浏览(29)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包