Flutter ListBody


简介

ListBody “列表组件”

  • 作用是按给定的轴方向,按照顺序排列子节点。
  • 是一个不常直接使用的控件,一般都会配合ListView或者Column等控件使用。

基本用法

布局行为

  • 在主轴上,子节点按照顺序进行布局,在交叉轴上,子节点尺寸会被拉伸,以适应交叉轴的区域。
  • 在主轴上,给予子节点的空间必须是不受限制的(unlimited),使得子节点可以全部被容纳,ListBody不会去裁剪或者缩放其子节点。
  • ListBody的布局代码非常简单,根据主轴的方向,对子节点依次排布。

实例演示

import 'package:flutter/material.dart';

/*
* Checkbox 默认ListBody的实例
* */
class ListBodyFullDefault extends StatefulWidget {
  const ListBodyFullDefault() : super();

  @override
  State<StatefulWidget> createState() => _ListBodyFullDefault();
}

/*
* ListBody 默认的实例,有状态
* */
class _ListBodyFullDefault extends State {
  @override
  Widget build(BuildContext context) {
    return ListBody(
      // ...  // 如果没有,就是不需要有状态的 StatefulWidget
    );
  }
}

/*
* ListBody 默认的实例,无状态
* */
class ListBodyLessDefault extends StatelessWidget {
  final widget;
  final parent;

  const ListBodyLessDefault([this.widget, this.parent])
      : super();

  @override
  Widget build(BuildContext context) {
    return ListBody(
          mainAxis: Axis.vertical, // 排列的主轴方向
          reverse: false, // 是否反向
          children: <Widget>[
            Container(color: Colors.red,
                width: 50.0,
                height: 150.0,
                child: Text('标题1', style: TextStyle(color: Color(0xffffffff)))),
            Container(color: Colors.yellow,
                width: 50.0,
                height: 50.0,
                child: Text('标题2', style: TextStyle(color: Color(0xffffffff)))),
            Container(color: Colors.green,
                width: 50.0,
                height: 50.0,
                child: Text('标题3', style: TextStyle(color: Color(0xffffffff)))),
            Container(color: Colors.blue,
                width: 50.0,
                height: 50.0,
                child: Text('标题4', style: TextStyle(color: Color(0xffffffff)))),
            Container(color: Colors.black,
                width: 50.0,
                height: 50.0,
                child: Text('标题5', style: TextStyle(color: Color(0xffffffff))))
          ],
        );
  }
}