Flutter 中常用的布局 Widget 有哪些?

推荐答案

在 Flutter 中,常用的布局 Widget 包括:

  1. Container:一个常用的布局 Widget,可以设置宽度、高度、边距、内边距、背景颜色等属性。
  2. RowColumn:用于在水平和垂直方向上排列子 Widget。
  3. Stack:允许子 Widget 堆叠在一起,通常用于重叠布局。
  4. ExpandedFlexible:用于在 Row 或 Column 中分配剩余空间。
  5. ListView:用于创建可滚动的列表布局。
  6. GridView:用于创建网格布局。
  7. Padding:用于设置子 Widget 的内边距。
  8. Align:用于将子 Widget 对齐到父容器的特定位置。
  9. Center:用于将子 Widget 居中显示。
  10. AspectRatio:用于设置子 Widget 的宽高比。
  11. ConstrainedBox:用于对子 Widget 施加额外的约束。
  12. SizedBox:用于设置固定大小的盒子,通常用于占位或设置间距。
  13. Wrap:用于在空间不足时自动换行排列子 Widget。
  14. Flow:用于自定义布局,允许更复杂的布局逻辑。

本题详细解读

Container

Container 是一个多功能的布局 Widget,它可以设置宽度、高度、边距、内边距、背景颜色等属性。Container 通常用于包裹其他 Widget,并为它们提供样式和布局约束。

Row 和 Column

RowColumn 是用于在水平和垂直方向上排列子 Widget 的布局 Widget。Row 将子 Widget 水平排列,而 Column 将子 Widget 垂直排列。

-- -------------------- ---- -------
----
  --------- ---------
    --------------
    ---------------
  --
--

-------
  --------- ---------
    --------------
    ---------------
  --
--
展开代码

Stack

Stack 允许子 Widget 堆叠在一起,通常用于重叠布局。Stack 的子 Widget 可以通过 Positioned Widget 来定位。

-- -------------------- ---- -------
------
  --------- ---------
    ----------
      ------ ----
      ------- ----
      ------ -----------
    --
    -----------
      ---- ---
      ----- ---
      ------ ----------
        ------ ---
        ------- ---
        ------ ------------
      --
    --
  --
--
展开代码

Expanded 和 Flexible

ExpandedFlexible 用于在 RowColumn 中分配剩余空间。Expanded 会强制子 Widget 占据所有剩余空间,而 Flexible 则允许子 Widget 根据需要进行伸缩。

-- -------------------- ---- -------
----
  --------- ---------
    ---------
      ------ ----------
        ------ -----------
      --
    --
    ---------
      ------ ----------
        ------ ------------
      --
    --
  --
--
展开代码

ListView

ListView 用于创建可滚动的列表布局。它可以垂直或水平滚动,并且支持多种构造函数,如 ListView.builderListView.separated 等。

-- -------------------- ---- -------
---------
  --------- ---------
    ---------
      ------ ---------- ----
    --
    ---------
      ------ ---------- ----
    --
  --
--
展开代码

GridView

GridView 用于创建网格布局。它支持多种构造函数,如 GridView.countGridView.builder 等。

-- -------------------- ---- -------
---------------
  --------------- --
  --------- ----------------- ------- -
    ------ ----------
      ------ ------------
      ------ -------
        ------ ---------- ---------
      --
    --
  ---
--
展开代码

Padding

Padding 用于设置子 Widget 的内边距。它通常用于为子 Widget 添加额外的空间。

Align

Align 用于将子 Widget 对齐到父容器的特定位置。它可以通过 alignment 属性来指定对齐方式。

Center

Center 用于将子 Widget 居中显示。它通常用于将子 Widget 放置在父容器的中心位置。

AspectRatio

AspectRatio 用于设置子 Widget 的宽高比。它通常用于保持子 Widget 的宽高比例。

ConstrainedBox

ConstrainedBox 用于对子 Widget 施加额外的约束。它通常用于限制子 Widget 的大小。

-- -------------------- ---- -------
---------------
  ------------ ---------------
    --------- ----
    ---------- ----
  --
  ------ ----------
    ------ ------------
  --
--
展开代码

SizedBox

SizedBox 用于设置固定大小的盒子,通常用于占位或设置间距。

Wrap

Wrap 用于在空间不足时自动换行排列子 Widget。它通常用于处理多个子 Widget 的排列问题。

-- -------------------- ---- -------
-----
  --------- ----------------- ------- -
    ------ ----------
      ------ ---
      ------- ---
      ------ ------------
      ------ -------
        ------ ---------------
      --
    --
  ---
--
展开代码

Flow

Flow 用于自定义布局,允许更复杂的布局逻辑。它通常用于需要精确控制子 Widget 位置的场景。

-- -------------------- ---- -------
-----
  --------- ---------------------
  --------- ----------------- ------- -
    ------ ----------
      ------ ---
      ------- ---
      ------ ------------
      ------ -------
        ------ ---------------
      --
    --
  ---
--
展开代码
纠错
反馈

纠错反馈