Flutter滚动时两个Container之间会闪现一个分割线条

231 阅读1分钟

在Flutter开发中,Container是非常重要的一个控件,在此我不变累述。如果有细心的网友可能会发现一个奇葩问题:Flutter页面背景颜色是colorA,ContainerB控件的背景颜色是colorB,ContainerC控件的背景颜色是colorB,页面子控件包含ContainerB和ContainerC,当你滚动页面时会发现ContainerB和ContainerC之间闪现一个颜色为colorA的分割线条。

当滚动页面时分隔线条就会一直闪现,停止滚动页面有时会显示分隔线条,有时又不会显示。遇到该问题,有的人愁眉苦脸又毫无对策,有的人会说不容易看见就不处理,有的人会用Stack叠加一个colorB的线条控件覆盖上去(代价大并且快速滚动时还能看见闪现的分隔线条)。

我找到一个从根源上解决奇葩问题的方法,ContainerB控件代码加入

decoration: BoxDecoration(
color:colorB,
border: Border(
 bottom: BorderSide(
   color:colorB,
   width: 0,
 ),
),
)

ContainerC控件代码加入

decoration: BoxDecoration(
  color:colorB,
  border: Border(
    top: BorderSide(
      color:colorB,
      width: 0,
    ),
  ),
)

这可能是Flutter页面渲染的一个bug。2020年中旬我就遇到了这个问题,今年又遇到了,尴尬的是忘记了解决方法。好记性不如烂笔头,还是记录下来吧。