【Flutter】GridView 网格布局 ( GridView.count 构造函数 | crossAxisCount 参数指定每行元素个数 )

简介: 【Flutter】GridView 网格布局 ( GridView.count 构造函数 | crossAxisCount 参数指定每行元素个数 )

文章目录

一、GridView 网格布局简介

二、完整代码示例

三、相关资源





一、GridView 网格布局简介


GridView 可用于显示网格布局 ;


一般使用 GridView.count 函数构造一个 GridView 组件 ;


GridView.count 构造函数如下 :


 

GridView.count({
    Key? key,
    Axis scrollDirection = Axis.vertical,
    bool reverse = false,
    ScrollController? controller,
    bool? primary,
    ScrollPhysics? physics,
    bool shrinkWrap = false,
    EdgeInsetsGeometry? padding,
    required int crossAxisCount,    // 每行显示元素个数
    double mainAxisSpacing = 0.0,
    double crossAxisSpacing = 0.0,
    double childAspectRatio = 1.0,
    bool addAutomaticKeepAlives = true,
    bool addRepaintBoundaries = true,
    bool addSemanticIndexes = true,
    double? cacheExtent,
    List<Widget> children = const <Widget>[], // 显示的组件列表 
    int? semanticChildCount,
    DragStartBehavior dragStartBehavior = DragStartBehavior.start,
    ScrollViewKeyboardDismissBehavior keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual,
    String? restorationId,
    Clip clipBehavior = Clip.hardEdge,
  })


一般只需要设置 required int crossAxisCount , List<Widget> children = const <Widget>[] 两个参数即可显示出列表组件 ;


/// 网格组件
GridView.count(
  /// 指定一行显示多少列
  crossAxisCount: 4,
  /// 指定显示的 List<Widget>
  children: _buildList(),
),





二、完整代码示例


import 'package:flutter/material.dart';
const NAMES = [ '宋江', '卢俊义', '吴用', '公孙胜', '关胜',
  '林冲', '秦明', '呼延灼', '花荣', '柴进',
  '李应', '朱仝', '鲁智深', '武松', '董平',
  '张清', '杨志', '徐宁', '索超', '岱宗',
  '刘唐', '李逵', '史进', '穆弘' '雷横' ];
/// 垂直列表
void main() {
  runApp(MyApp());
}
class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);
  @override
  _MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
  @override
  Widget build(BuildContext context) {
    /// 材料设计主题
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          /// 标题组件
          title: Text("GridView 示例"),
        ),
        /// 网格组件
        body: GridView.count(
          /// 指定一行显示多少列
          crossAxisCount: 4,
          /// 指定显示的 List<Widget>
          children: _buildList(),
        ),
      ),
    );
  }
  /// 创建列表
  List<Widget> _buildList(){
    /// 遍历 NAMES 数组
    /// 调用 map 方法遍历数组元素
    return NAMES.map((name) => _generateWidget(name)).toList();
  }
  Widget _generateWidget(name){
    return Container(
      height: 80,
      margin: EdgeInsets.only(bottom: 5, right: 5),
      alignment: Alignment.center,
      decoration: BoxDecoration(color: Colors.black),
      child: Text(
        name,
        style: TextStyle(
            color: Colors.yellowAccent,
            fontSize: 20
        ),
      ),
    );
  }
}


执行结果 :

image.png


目录
相关文章
|
3月前
|
容器
Flutter笔记:Box协议的布局约束原理与应用
Flutter笔记:Box协议的布局约束原理与应用
48 0
|
3月前
|
索引
Flutter.源码分析.flutter/packages/flutter/lib/src/widgets/scroll_view.dart/GridView
Flutter.源码分析.flutter/packages/flutter/lib/src/widgets/scroll_view.dart/GridView
32 0
|
3月前
|
开发者 索引 容器
Flutter开发笔记:Flutter 布局相关组件
Flutter开发笔记:Flutter 布局相关组件
121 0
|
10月前
|
容器
Flutter灵活布局要掌握的两个控件Expanded和Flexible
Flutter灵活布局要掌握的两个控件Expanded和Flexible
|
10月前
|
容器
利用Flutter的LayoutBuilder、BoxConstraints创建自适应布局控件
利用Flutter的LayoutBuilder、BoxConstraints创建自适应布局控件
|
10月前
|
Dart 容器
flutter两个非常常用的布局小空间SizedBox和Divider
flutter两个非常常用的布局小空间SizedBox和Divider
|
10月前
|
Dart 容器
Flutter非常常用的几个布局小控件Center,SizeBox,Divider
Flutter非常常用的几个布局小控件Center,SizeBox,Divider
|
11月前
|
Dart IDE 开发工具
Flutter 基础 | 控件 & 布局(一)
Flutter 基础 | 控件 & 布局(一)
201 0
|
开发工具 Android开发 iOS开发
如何使用 Draggable 和 DragTarget 在 Flutter 中创建拖放 UI 元素?
如何使用 Draggable 和 DragTarget 在 Flutter 中创建拖放 UI 元素?
343 0
|
容器
Flutter | 布局流程(下)
Flutter | 布局流程(下)
Flutter | 布局流程(下)