覆盖小部件样式

时间:2019-02-12 13:31:23

标签: dart flutter

是否可以添加或覆盖窗口小部件的特定方法或属性,同时仍然可以访问默认属性。我可以想象,当仍然需要完整的小部件功能但可能需要添加方法或提供默认值时,这将很有用。


例如:

让我们说我想为容器设置圆角样式

我想要这种风格,而不是在所有地方都这样做:

decoration: BoxDecoration(
  borderRadius: BorderRadius.all(Radius.circular(15)),
)

我创建一个CustomRoundedDecoration类,并默认设置borderRadius属性:

class CustomRoundedDecoration extends BoxDecoration {
  RoundedDecoration( /* somehow keep all BoxDecoration properties */ )

  @override
  BorderRadiusGeometry get borderRadius => BorderRadius.all(Radius.circular(15)); // my default
}         

然后,我可以使用新的CustomRoundedDecoration,但最重要的是仍然可以访问默认的BoxDecoration属性,并且可能仍覆盖borderRadius。

decoration: CustomRoundedDecoration(/* access other BoxDecoration properties but now I've got borderRadius defaulted */),

显然,在实践中,您会添加或覆盖许多属性,而不仅仅是一个。


我知道可以将源代码复制到您自己的小部件中并更改其中所需的内容,但是仅提供默认值似乎有些过大

0 个答案:

没有答案