首页 > 解决方案 > 堆栈油漆容器,但不是 DecoratedBox

问题描述

我只是想在堆栈中显示一个带有其他小部件的红色框,但是当我使用 DecoratedBox 而不是 Container 时,它不会在屏幕上绘制。我认为 DecoratedBox 只是一个更明确的 Container 版本,我错过了什么?

Widget build(BuildContext context) {
    return Stack(
      children: <Widget>[
        DecoratedBox( // doesn't work
          decoration: BoxDecoration(
            color: Colors.red,
          ),
        ),
      ],
    );
  }

标签: androidiosflutterdartflutter-layout

解决方案


Stack不渲染的原因DecoratedBox是它没有默认大小。另一方面,Container默认情况下将其父级。

Container不只是一个DecoratedBox。它还使用其他小部件,包括SizedBoxAlignment

像这样:

Container(
  color: Colors.red,
)

不等于:

DecoratedBox(
  decoration: BoxDecoration(color: Colors.red),
)

而是:

SizedBox.expand(
  child: DecoratedBox(
    decoration: BoxDecoration(color: Colors.red),
  ),
)

推荐阅读