这两个实现都做同样的事情,即用
child
对 BorderRadis
进行舍入:
ClipRRect(
borderRadius: BorderRadius.circular(4),
child: /*...*/
)
ClipRRect(
borderRadius: const BorderRadius.all(Radius.circular(4)),
child: /*...*/
)
它们之间有重大区别吗?我应该使用什么?
没有区别,它们是相同的。
BorderRadius.circular()
只是一个方便的构造函数。
.circular()
的实施需要.all()
和Radius.circular()
:
BorderRadius.circular(double radius) : this.all(
Radius.circular(radius),
);
有区别,但在于性能。
视觉上没有区别。然而就像你的代码所示:
borderRadius: const BorderRadius.all(Radius.circular(4))
this 有 const,可以提高重建小部件时的性能。
BorderRadius.circular(4)
是一个工厂构造函数,每次调用都会返回一个新实例。
我推荐第一种方法