【问题标题】:Invalid constructor name无效的构造函数名称
【发布时间】:2018-08-21 05:10:25
【问题描述】:

这里是初学者的问题:

我有这样的课

class Data {
  String name;
  String imgUrl;
  Data(this.name, this.imgUrl);
}

我正在尝试创建这样的列表

var list = new List<Data>();
var data = new Data("caca", "toto");
list.add(data);

但是我收到一个错误,说无效的构造函数名称。 我在这里做错了什么? 感谢您的帮助

【问题讨论】:

  • 哪一行导致这个错误?请在您的问题中添加完整且准确的错误消息。您是否导入了包含class Data {...} 的文件,或者您上面的所有代码都在同一个文件中?
  • var list = new List();和艺术家。添加(数据); ??
  • Data 类在同一个文件中。错误显示在 list.add() 行
  • 该行与构造函数没有任何关系。您能否发布显示错误的 IDE 窗口的屏幕截图?这是来自静态分析还是运行代码时出现错误?
  • 如果你在 Visual Studio Code 中尝试这种类型的事情有时会发生,但如果运行它,将完美运行,你可以尝试重新启动编辑器。

标签: dart flutter


【解决方案1】:

我的猜测是您的代码不在函数内部。比如:

class Something {
  var list = new List<Data>();
  var data = new Data("caca", "toto");
  list.add(data);
}

可能是由于代码上方的大括号过多,或者是其他语法错误。

确保您的代码实际上位于函数体内,而不仅仅是直接位于类中。

class Something {
  void tutu() {
    ...
    var list = new List<Data>();
    var data = new Data("caca", "toto");
    list.add(data);
    ... use list ...
  }
}

【讨论】:

  • 你是对的!对不起大家。无脑初学者错误。我将这些代码行放在类级别而不是函数中。谢谢你的时间
  • 很高兴我能提供帮助。考虑将问题标记为已回答,以便其他有相同问题的人更容易找到答案。
  • 你能解释一下为什么我们需要在一个函数中定义它吗??
  • Dart 只允许函数体内的语句。没有运行的“顶级代码”。从这个意义上说,Dart 就像 Java,而不像 JavaScript。除此之外,您可以进行声明,但没有将要执行的代码。 list.add(data); 是一个语句,所以它必须在函数体内。 var list = ...var data = ... 声明可以出现在函数体内部和外部。
猜你喜欢
  • 2018-12-14
  • 2018-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-30
  • 1970-01-01
相关资源
最近更新 更多