为什么智能感知无法识别我的扩展方法?

时间:2020-05-11 17:00:03

标签: flutter dart

我为get包编写了一个扩展方法,这样我就可以将依赖项放入构建方法中,而不必担心它们会被注册一次以上

import 'package:get/get.dart';

extension on Get{
  static T putIfNotRegistered<T>(T dependency, {bool find = false})
  {
    if(!Get.isRegistred<T>())
      return Get.put(dependency);
    if(find)
      return Get.find<T>();
    return null;
  }
}

但是当我尝试使用它时,它说无法在Get上找到putIfNotRegistered方法?我在名为extension_methods.dart的文件中具有扩展方法,并且我试图在main.dart中找到它。我导入了extension_methods.dart。那么我该怎么做才能使扩展方法起作用?

读取错误

The method 'putIfNotRegistered' isn't defined for the type 'Get'.
Try correcting the name to the name of an existing method, or defining a method named 'putIfNotRegistered'.

当我尝试在main.dart中使用它

Get.putIfNotRegistered<DatabaseService>(FirestoreService(authenticationService.user));

1 个答案:

答案 0 :(得分:0)

如果要在声明它的文件之外使用扩展方法,则必须为其命名。

extension AnyName on Get

应该解决您的问题。