Flutter elevation 属性导致的颜色变更

创建一个 BottomShee 里面包含了一个 AppBar 组件,发现 AppBarBottomSheet 主体存在颜色差距:

showModalBottomSheet(
  context: context,
  builder: (context) {
    return Column(children: [
      AppBar(
        shape: const RoundedRectangleBorder(
          borderRadius: BorderRadius.vertical(top: Radius.circular(28.0)),
        ),
      )
    ]);
  },
);

Image

刚开始我准备改变 AppBarbackupColor 属性,认为只是把颜色调整为 BottomSheet 的默认颜色就 ok 了。但是奇怪的是 Theme.of(context) 里的颜色试了一个遍也没找到这个颜色,我都傻了🥲。

后面才发现是 BottomSheet 里的 elevation 属性默认设置为了 1.0,才产生了这个颜色。把 AppBarelevation 也设置为 1.0 就可以了。

showModalBottomSheet(
  context: context,
  builder: (context) {
    return Column(children: [
      AppBar(
        shape: const RoundedRectangleBorder(
          borderRadius: BorderRadius.vertical(top: Radius.circular(28.0)),
        ),
        elevation: 1.0,
      )
    ]);
  },
);

Image