我正在尝试向BorderRadius
添加扩展方法,该方法将圆角应用于container
扩展码:
extension on BorderRadius{
static get r10 => const BorderRadius.all(Radius.circular(10));
}
以下是我如何在容器上使用它:
Container(
alignment: Alignment.center,
width: width * 0.7,
padding: EdgeInsets.only(top: 20, bottom: 20),
decoration: BoxDecoration(
borderRadius: BorderRadius.r10,
gradient: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [_buttonColor, Colors.purple]),
boxShadow: const [
BoxShadow(color: Colors.black87, blurRadius: 5)
]),
child: Text(_lable))
问题是r10
方法不在BorderRadius
类的建议之列,并且未被识别。
您正在BorderRadius
上使用扩展。为了在价值上使用。你需要先提供BorderRadius
,然后才能使用它。
就像这里在零BorderRadius上使用一样。
borderRadius: BorderRadius.zero.r10,
extension on BorderRadius {
BorderRadius get r10 => const BorderRadius.all(Radius.circular(10));
}
现在,按照您使用的方式,您可以创建一个自定义类和静态变量。
class MyBorderRadius {
static BorderRadius get r10 => const BorderRadius.all(Radius.circular(10));
}
和用例
borderRadius: MyBorderRadius.r10,
这个扩展名是私有的,这意味着你不能在创建它的文件之外使用它。
要使其全球化,这就是你需要做的
extension BorderRadiusExt on BorderRadius {
static get r10 => const BorderRadius.all(Radius.circular(10));
}
你不能导入一些私有的东西并能够使用它。这是一个匿名扩展。
要了解更多信息,请参阅本文。
https://wilsonwilson.dev/articles/dart-extension-methods
您需要为扩展添加Name,以便IDE可以为您检测并导入该扩展。就像这里我给的名字MyExtenstion
你可以添加任何你想要的名字
extension MyExtenstion on BorderRadius{
static get r10 => const BorderRadius.all(Radius.circular(10));
}