DartPad一直在说2,在构造函数中接收3个参数

时间:2016-01-19 22:19:36

标签: dart

Email( List<String> to, String from, {String subject:null, String message:null, DateTime datetime:null, HashMap<String, List<String>> meta:null, List<Attachment> attachments:null})

得到此错误:

Uncaught NoSuchMethodError: incorrect number of arguments passed to method named ''
Receiver: ""
Tried calling: (Instance of 'JSArray<String>', "will@fallenreaper.com", Instance of '_HashMap<String, Object>')
Found: (to, from, subject, message, datetime, meta, attachments)

我的课程是:

class Email{
  Email( List<String> to, String from, {String subject:null, String message:null, DateTime datetime:null, HashMap<String, List<String>> meta:null, List<Attachment> attachments:null}){
    //do stuff.
  }
}

我试图让它成为必需的往返,但其余的可选地将在地图中传入。我以为我这样做是正确的,但它似乎不正确。

DartPad位于:How to get JTextField name in which is Document placed?

搜索TODO

Composer类是我实现的部分,利用我创建的Email类。

向主题添加一些文本,然后单击“发送”按钮

1 个答案:

答案 0 :(得分:2)

您的Email类'构造函数

Email( List<String> to, String from, {String subject:null, String message:null, DateTime datetime:null, HashMap<String, List<String>> meta:null, List<Attachment> attachments:null}) { ... }

有2个位置参数和5个可选的命名参数。

您可以像在

中那样简单地传递位置参数
new Email(map["to"], map["from"], map);

但是可选的名称参数需要像

一样“命名”
new Email(map["to"], map["from"], subject: map);

如果希望可选参数是位置的,则需要将构造函数更改为

Email( List<String> to, String from, [String subject=null, String message=null, DateTime datetime=null, HashMap<String, List<String>> meta=null, List<Attachment> attachments=null]) { ... }

您不能同时拥有可选的命名可选位置参数。如果您的Email构造函数中有更长的参数列表,则命名的可选参数通常更好,因为您可以使用名称指定传递的值应分配给哪个参数,并且不需要传递{{1} } s或null s用于您要跳过的参数。