【问题标题】:Dart - NoSuchMethodError: Class 'Module' has no instance getter 'String'Dart - NoSuchMethodError:类“模块”没有实例获取器“字符串”
【发布时间】:2018-04-30 11:56:03
【问题描述】:

请问有什么问题可以解释一下吗?

我尝试从 HashMap 中按键获取一个项目:

如果我这样做:

var stringProvider = providersHolder[String] 我收到一个错误:

NoSuchMethodError:“模块”类没有实例获取器“字符串”。

如果我用下一个方法:

var stringProvider = providersHolder[providersHolder.keys.last] 其中providersHolder.keys.last == String

我成功了。

这是一个完整的列表:

class Module {
  HashMap providersHolder = new HashMap<Type, ItemCreator>();

  void addProvider<T, M extends Module>(ItemCreator<T, M> itemCreator) {
     providersHolder[T] = itemCreator;
  }
}

class Test {
    Test() {
      var module = Module();
      module.addProvider((module) => new Ticker());
      module.addProvider((module) => "hello");
      var ticketProvider = module.providersHolder[Ticker]; //success
      var stringProvider = module.providersHolder[String]; //error
    } 
}

这是一个观察者:

【问题讨论】:

  • 您能否提供更多详细信息?你的代码对我有用。我将 ItemCreator 定义为 typedef T ItemCreator&lt;T, M&gt;(Module);,这可能与您的不同。这是调试器错误吗?
  • @RichardHeap,感谢您详细研究此事,甚至运行代码。到目前为止,我只能在调试器中重现它。所以,我猜你认为这是调试器问题的假设是正确的。

标签: dart flutter


【解决方案1】:

您能否提供有关如何定义 ItemCreator 的更多详细信息?这将帮助我们复制您遇到的行为。如果您仍然遇到相同的错误,您还可以运行flutter doctor -v 来检查是否有任何错误或警告。

【讨论】:

    猜你喜欢
    • 2020-03-09
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    • 1970-01-01
    • 2021-08-02
    • 1970-01-01
    • 2021-05-01
    • 1970-01-01
    相关资源
    最近更新 更多