Flutter 中的 Row 小部件:全面指南

Flutter 中的 Row 小部件:全面指南

在 Flutter 中,Row 是一个水平布局的小部件,用于将子控件沿着水平轴排列。Row 类似于 HTML 中的 div 标签,但仅限于水平布局。它非常适合用来创建行式布局,如表单输入、按钮组、标签栏等。

基础用法

Row 最基本的用法是将多个控件水平排列:

Row(
  children: <Widget>[
    Container(width: 50.0, height: 50.0, color: Colors.red),
    Container(width: 50.0, height: 50.0, color: Colors.blue),
    // ... 更多的控件
  ],
)

主轴对齐

RowmainAxisAlignment 属性用于控制子控件在主轴(水平轴)上的对齐方式:

开始对齐

Row(
  mainAxisAlignment: MainAxisAlignment.start,
  // ... 子控件
)

居中对齐

Row(
  mainAxisAlignment: MainAxisAlignment.center,
  // ... 子控件
)

两端对齐

Row(
  mainAxisAlignment: MainAxisAlignment.spaceBetween,
  // ... 子控件
)

均匀分布

Row(
  mainAxisAlignment: MainAxisAlignment.spaceEvenly,
  // ... 子控件
)

交叉轴对齐

RowcrossAxisAlignment 属性用于控制子控件在交叉轴(垂直轴)上的对齐方式:

Row(
  crossAxisAlignment: CrossAxisAlignment.center,
  // ... 子控件
)

间距和边距

RowmainAxisSize 属性决定了 Row 的大小是否应该占据所有可用空间:

Row(
  mainAxisSize: MainAxisSize.min,
  // ... 子控件
)

通过 padding 属性,可以为 Row 添加内边距:

Row(
  padding: EdgeInsets.all(8.0),
  // ... 子控件
)

子控件间距

使用 spacing 属性来设置子控件之间的水平间距:

Row(
  spacing: 10.0,
  children: List<Widget>.generate(5, (index) {
    return Container(width: 50.0, height: 50.0, color: Colors.primaries[index % Colors.primaries.length]);
  }).toList(),
)

子控件大小调整

使用 flex 属性来设置子控件在 Row 中的弹性比例:

Row(
  children: <Widget>[
    Expanded(
      flex: 1,
      child: Container(color: Colors.red),
    ),
    Expanded(
      flex: 2,
      child: Container(color: Colors.blue),
    ),
  ],
)

实例:水平表单

下面是一个使用 Row 创建水平表单的实例:

Row(
  children: <Widget>[
    Expanded(
      child: TextField(
        decoration: InputDecoration(
          labelText: 'Username',
          border: OutlineInputBorder(),
        ),
      ),
    ),
    SizedBox(width: 16.0),
    Expanded(
      child: TextField(
        decoration: InputDecoration(
          labelText: 'Password',
          border: OutlineInputBorder(),
        ),
        obscureText: true,
      ),
    ),
  ],
)

实例:按钮组

使用 Row 创建一组水平排列的按钮:

Row(
  mainAxisAlignment: MainAxisAlignment.center,
  children: <Widget>[
    ElevatedButton(
      onPressed: () {},
      child: Text('Button 1'),
    ),
    ElevatedButton(
      onPressed: () {},
      child: Text('Button 2'),
    ),
    ElevatedButton(
      onPressed: () {},
      child: Text('Button 3'),
    ),
  ],
)

结语

Row 是 Flutter 中处理水平布局的核心小部件,它提供了丰富的对齐和间距选项,使得在 Flutter 应用中实现各种水平布局变得简单而高效。掌握 Row 的使用,可以帮助你创建出既美观又实用的布局界面。

相关推荐

  1. Flutter Row 部件全面指南

    2024-05-13 11:34:02       14 阅读
  2. Flutter Image 部件全面指南

    2024-05-13 11:34:02       14 阅读
  3. Flutter ListView 部件全面指南

    2024-05-13 11:34:02       12 阅读
  4. Flutter TextField 部件全面指南

    2024-05-13 11:34:02       11 阅读
  5. Flutter Visibility 部件全面指南

    2024-05-13 11:34:02       12 阅读
  6. Flutter MaterialButton 部件全面指南

    2024-05-13 11:34:02       14 阅读
  7. Flutter AnimatedIcon 部件全面指南

    2024-05-13 11:34:02       9 阅读
  8. Flutter AnimatedList 部件全面指南

    2024-05-13 11:34:02       13 阅读
  9. Flutter ExpandIcon 部件全面指南

    2024-05-13 11:34:02       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-13 11:34:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-13 11:34:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-13 11:34:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-13 11:34:02       20 阅读

热门阅读

  1. Vue和Vue3前端面试频率较高的面试题和答案

    2024-05-13 11:34:02       16 阅读
  2. Python中的绝对路径与相对路径详解

    2024-05-13 11:34:02       12 阅读
  3. react 逻辑 AND 运算符 (&&)

    2024-05-13 11:34:02       15 阅读
  4. SpringMVC 4.3 nacos1.4 mock2.0 junit4.13 测试Controller

    2024-05-13 11:34:02       13 阅读
  5. sql-行转列2(转置)

    2024-05-13 11:34:02       14 阅读
  6. sql-行转列(转置)

    2024-05-13 11:34:02       13 阅读