Flutter学习之旅 -网格布局

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

GridView列表三种形式

  • 可以通过GridView.count实现网格布局
/*
格式:
GridView.count(
      crossAxisCount: 一行显示数量,
      children: [
        component(),
        ...
      ],
    )
*/
class MyHomePage extends StatelessWidget {
  const MyHomePage({Key? key}) : super(key: key);

  
  Widget build(BuildContext context) {
    return GridView.count(
      crossAxisCount: 3,
      children: const [
        Icon(Icons.home),
        Icon(Icons.settings),
        Icon(Icons.all_inclusive),
        Icon(Icons.ac_unit)
      ],
    );
  }
}
  • 可以通过GridView.extent实现网格布局
class MyHomePage extends StatelessWidget {
  const MyHomePage({Key? key}) : super(key: key);

  
  Widget build(BuildContext context) {
    return GridView.extent(
      maxCrossAxisExtent: 40, //主要。横轴子元素为固定最大长度(自动计算)
      children: const [
        Icon(Icons.home),
        Icon(Icons.settings),
        Icon(Icons.ac_unit),
        Icon(Icons.time_to_leave),
      ],
    );
  }
}
  • 可以通过GridView.builder实现网格布局

参数:可以通过SliveGridDelegateWithFiexdCrossAxisCount来设置GridView.count
参数: 可以通过SliveGridDelegateWithMaxCrossAxisExtent来设置GridView.extent

List listData = [
  {
    "imageUrl": "http://124.223.18.34:5555/static/images/gdyg/gdyg1_1.jpg",
    "name": "孤独摇滚第1集"
  },
  {
    "imageUrl": "http://124.223.18.34:5555/static/images/gdyg/gdyg1_2.jpg",
    "name": "孤独摇滚第2集"
  },
  {
    "imageUrl": "http://124.223.18.34:5555/static/images/gdyg/gdyg1_3.jpg",
    "name": "孤独摇滚第3集"
  }
];
class MyHomePage extends StatelessWidget {
  const MyHomePage({Key? key}) : super(key: key);

  Widget _initDataWidget(context, index) {
    return Container(
      padding: const EdgeInsets.all(5),
      decoration: BoxDecoration(
          color: Colors.blue, borderRadius: BorderRadius.circular(5)),
      child: Column(
        children: [
          Image.network(listData[index]["imageUrl"]),
          Text(
            listData[index]["name"],
            style: const TextStyle(color: Colors.white),
          ),
        ],
      ),
    );
  }

  
  Widget build(BuildContext context) {
    return GridView.builder(
        padding: const EdgeInsets.all(10),
        itemCount: listData.length, //重点不然会报错(一直循环下去)
        gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
            crossAxisCount: 2, crossAxisSpacing: 10),
        itemBuilder: _initDataWidget);
  }
}
常用属性
名称 类型 说明
scrollDirection Axis 滚动方法
padding EdgeInsetsGeometry 内边距
resolve bool 组件反向排序
crossAxisSpacing double 水平子Widget之间间距
mainAxisSpacing double 垂直子Widget之间间距
crossAxisCount int,用在GridView.count 一行的Widget数量
maxCrossAxisExtent double用在GridView.extent 横轴子元素的最大长度
childAspectRatio double 子Widget宽高比例
children []
gridDelegate SliveGridDelegateWithFiexdCrossAxisCountSliveGridDelegateWithFiexdCrossAxisCount;SliveGridDelegateWithMaxCrossAxisExtent 控制布局主要用在GridView.builder里面

小案例

class MyHomePage extends StatelessWidget {
  const MyHomePage({Key? key}) : super(key: key);

  
  Widget build(BuildContext context) {
    return GridView.count(
      padding: const EdgeInsets.all(15),
      mainAxisSpacing: 15, //垂直子widget之间的间距
      crossAxisSpacing: 15, //水平子Widget之间的间距
      crossAxisCount: 2,
      //childAspectRatio: 1.2,//宽高比
      children: [
        Container(
          // padding: EdgeInsets.,

          decoration: BoxDecoration(
              color: Colors.blue, borderRadius: BorderRadius.circular(5)),
          child: Image.network(
            "http://124.223.18.34:5555/static/images/gdyg/gdyg1_1.jpg",
            alignment: Alignment.topCenter,
            fit: BoxFit.contain,
          ),
        ),
        Container(
          decoration: BoxDecoration(
              color: Colors.blue, borderRadius: BorderRadius.circular(5)),
          child: Image.network(
            "http://124.223.18.34:5555/static/images/gdyg/gdyg1_2.jpg",
            alignment: Alignment.topCenter,
            fit: BoxFit.contain,
          ),
        ),
        Container(
          decoration: BoxDecoration(
              color: Colors.blue, borderRadius: BorderRadius.circular(5)),
          child: Image.network(
            "http://124.223.18.34:5555/static/images/gdyg/gdyg1_3.jpg",
            alignment: Alignment.topCenter,
            fit: BoxFit.contain,
          ),
        )
      ],
    );
  }
}

Flutter学习之旅 -网格布局

class MyHomePage extends StatelessWidget {
  const MyHomePage({Key? key}) : super(key: key);

  
  Widget build(BuildContext context) {
    return GridView.count(
      padding: const EdgeInsets.all(15),
      mainAxisSpacing: 15, //垂直子widget之间的间距
      crossAxisSpacing: 15, //水平子Widget之间的间距
      crossAxisCount: 2,
      //childAspectRatio: 1.2,//宽高比
      children: [
        Container(
            // padding: EdgeInsets.,

            decoration: BoxDecoration(
                color: Colors.blue, borderRadius: BorderRadius.circular(5)),
            child: Column(
              children: [
                Image.network(
                  "http://124.223.18.34:5555/static/images/gdyg/gdyg1_1.jpg",
                  alignment: Alignment.topCenter,
                  fit: BoxFit.contain,
                  width: 530,
                  height: 110,
                ),
                const Text(
                  "孤独摇滚第一集",
                  style: TextStyle(
                    color: Colors.white,
                  ),
                )
              ],
            )),
        Container(
            decoration: BoxDecoration(
                color: Colors.blue, borderRadius: BorderRadius.circular(5)),
            child: Column(
              children: [
                Image.network(
                  "http://124.223.18.34:5555/static/images/gdyg/gdyg1_2.jpg",
                  alignment: Alignment.topCenter,
                  fit: BoxFit.contain,
                  width: 530,
                  height: 110,
                ),
                const Text(
                  "孤独摇滚第二集",
                  style: TextStyle(
                    color: Colors.white,
                  ),
                )
              ],
            )),
        Container(
            decoration: BoxDecoration(
                color: Colors.blue, borderRadius: BorderRadius.circular(5)),
            child: Column(
              children: [
                Image.network(
                  "http://124.223.18.34:5555/static/images/gdyg/gdyg1_3.jpg",
                  alignment: Alignment.topCenter,
                  fit: BoxFit.contain,
                  width: 530,
                  height: 110,
                ),
                const Text(
                  "孤独摇滚第三集",
                  style: TextStyle(
                    color: Colors.white,
                  ),
                )
              ],
            ))
      ],
    );
  }
}

Flutter学习之旅 -网格布局文章来源地址https://www.toymoban.com/news/detail-434894.html

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

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

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

相关文章

  • flutter-GridView使用

    先看效果 代码实现 关键部分 其中physics属性  physics: const NeverScrollableScrollPhysics()会禁止页面滚动 shrinkWrap 让容器被内容撑满

    2024年02月14日
    浏览(45)
  • Flutter学习之旅 - 路由

    Flutter路由介绍 flutter中的路由通俗就是页面跳转。在Flutter中通过 Navigator (学过 reactjs 或 小程序 的小伙伴应该很清楚)组件管理路由导航 Flutter给我们提供了俩种配置路由跳转的方式: 1.基本路由 2.命名路由 普通路由 模板的知识请看这里 普通路由传值 跳转传值和调用组件传值

    2024年02月03日
    浏览(69)
  • flutter学习之旅(二)

    如果不知道怎么安装编写可以查看这篇 创建项目 另一个创建方法 热部署 vscode 热部署 vscode很简单:可以通过Debug进行调试 使用flutter查看设备 如图所见我现在用的是windows所以,我们检测不到 ios 因为 我们看看我的华为手机(HarmonyOS) Flutter 真机调试 识别到的手机 注意: 时间会

    2024年02月02日
    浏览(39)
  • flutter学习之旅(一)

    初学Flutter flutter官网和中文开发手册 安装flutter - windows 官方文档-windows flutter_windows_3.7.9-stable.zip 编辑环境变量 在 用户变量 一栏中,检查是否有 Path 这个条目: 如果存在这个条目,以 ; 分隔已有的内容,加入 flutterbin 目录的完整路径。 如果不存在的话,在用户环境变量中创

    2024年02月07日
    浏览(32)
  • Flutter GridView 自定义宽高

            首先在children获取控件中进行高度设置,是不生效的。因为系统默认 宽高比属性childAspectRatio控制,默认宽高比1:1。         先介绍一下系统自带的方式调整大小,但是这个不能控制他的宽高固定是多少,只能修改他的比例         还有一种方式就是直接重写gird

    2024年02月10日
    浏览(47)
  • HarmonyOS应用开发学习笔记 UI布局学习 List(){}创建列表 列表形式显示 简单使用

    List 创建列表 列表形式显示 官方文档:创建列表(List) 关键代码 List(){} 列表控件 ListItem() {} 子元素 例如 关键代码:listDirection(Axis.Horizontal) 默认竖直方向 Axis.Vertical 分隔线的宽度会使ListItem之间存在一定间隔,当List设置的内容间距小于分隔线宽度时,ListItem之间的间隔会使用

    2024年02月02日
    浏览(46)
  • 【CSS】网格布局(简单布局、网格合并、网格嵌套)

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

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

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

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

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

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

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

    2023年04月08日
    浏览(44)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包