颤振:无法识别扩展方法



我正在尝试向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));
}

最新更新