为什么 Dart 扩展方法不适用于图像 class

Why Dart extension methods don't work for Image class

大家好,我遇到了一个简单的问题,我有这个小代码,但无法正常工作

extension ImageExt on Image {
  static Image base64(String encode, {double? width, double? height}) {
  final reserveWord = 'base64,';
  final codePart = encode.contains(reserveWord)
    ? encode.substring(encode.indexOf(reserveWord) + reserveWord.length)
    : encode;

  return Image.memory(base64Decode(codePart), width: width, height: height);
}

}

当我尝试使用 VSCode 的自动完成时,该方法不存在。

我在文件顶部包含了指向定义我的扩展名的正确文件的导入语句。所以我不知道出了什么问题,请在这里提供任何帮助,我们将不胜感激。在同一个文件中,在这些情况下还存在对 String 和 Map 类型的其他扩展,并且工作正常。

您可以像 ImageExt.base64('...', width: 24, height: 24); 一样在 ImageExt 上调用 base64。目前扩展的静态成员只能在扩展本身的命名空间中访问(在本例中是 ImageExt 而不是 Image)。

您可能有兴趣阅读前一段时间在 dart 语言存储库上提交的功能请求,要求更改静态扩展方法以支持此功能。 https://github.com/dart-lang/language/issues/723