【Flutter组件】Expanded详解

本文详细介绍了Flutter中的Expanded组件,它用于在Column, Row或Flex的子组件中填充剩余空间。Expanded的父组件必须是这些类型,且不能嵌套在非直接支持的组件内。每个Expanded有一个flex属性,用于分配空间比例。示例代码展示了如何使用Expanded创建三色块布局,不同flex值决定了颜色块的大小。理解Expanded对于创建自适应布局至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Expanded特点

  • 只能在ColumnRowFlex以及它们的子组件,这里指的是子组件而不是子结点,是指继承ColumnRowFlex的子组件。
  • Expanded的父结点必须是ColumnRowFlex以及它们的子组件,不能是Column->Container->Expanded(表示结点路径)
  • 在使用Expanded时,如果在它的上层结点中有List类型的结点,比如SingleChildScrollView,或者ListTile等,其滑动方向应该与Expanded填充方向不同,不然会报错。
  • Expanded作用是,填充剩余空间。
class Expanded extends Flexible {
  /// Creates a widget that expands a child of a [Row], [Column], or [Flex]
  /// so that the child fills the available space along the flex widget's
  /// main axis.
  const Expanded({
    Key? key,
    int flex = 1,
    required Widget child,
  }) : super(key: key, flex: flex, fit: FlexFit.tight, child: child);
}
  • flex:表示弹性系数,弹性系数越高,所占空间越大,类似于Android原生的LinearLayoutweight属性。
  • child:子节点

示例

flutter代码

Scaffold(
      appBar: AppBar(
        // Here we take the value from the MyHomePage object that was created by
        // the App.build method, and use it to set our appbar title.
        title: Text(widget.title),
      ),
      body: Column(
        children: [
          Expanded(
              flex: 1,
              child: Container(
                color: Colors.black,
              )),
          Expanded(
              flex: 2,
              child: Container(
                color: Colors.red,
              )),
          Expanded(
              flex: 1,
              child: Container(
                color: Colors.blue,
              ))
        ],
      ), // This trailing comma makes auto-formatting nicer for build methods.
    );

截图
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值