家人也中招了,这几天得照顾他们,存货不多,可能哪天就断更了。今天聊个轻松的话题,ColoredBox。

ColoredBox 介绍

ColoredBox 先绘制颜色,然后再绘制 child。

看到源码会更清晰一些。

void paint(PaintingContext context, Offset offset) {
    if (size > Size.zero) {
      context.canvas.drawRect(offset & size, Paint()..color = color);
    }
    if (child != null) {
      context.paintChild(child!, offset);
    }
  }

在布局方面,如果有 ColoredBox 有 child,ColoredBox 和child 一样大,如果没有 child, 取约束的最小值。

在使用 ColoredBox 之前,先简单说下 Color。

如何表示颜色

Color(0x00FFFFFF) 透明白色,00 表示完全透明,可以省略掉 Color(0xFFFFFF)Color(0xFFFFFFFF) 不透明白色,FF 表示完全不透明,不可以省略掉 。

开始的两位介于 00-FF 之间就表示半透明。如果你是前端开发,可能不大习惯于 0xFFFFFFFF 这样格式,幸运的是我们还可以这样写 Color.fromRGBO(100, 200, 200, 0.6),最后一位代表透明,这就和 css 中的格式一样了。

知道如何写颜色值,再看 ColoredBox 就非常轻松了。

使用 ColoredBox

首先就是 Container Widget,他的背景色就是用的 ColoredBox。

if (color != null) {
      current = ColoredBox(color: color!, child: current);
}

我们大多时候都直接用 Container了。但是如果只是增加一个背景色,还是用 ColoredBox 为好。比如我们给 Row 加一个背景色。

ColoredBox(
      color: Colors.greenAccent,
      child: Row(children: [Text('IAM17'),SizedBox(width: 10,),Text('天天更新')],)
);

用 ColoredBox 个人认为可读性会好些。不过如果你喜欢用 Container 也没有问题。

今天就聊到这了,谢谢观看!