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>', "[email protected]", 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 находится по адресу: https://dartpad.dartlang.org/4d32b88095a6509da511.
Найдите TODO
Класс Composer — это часть, которую я реализую, используя класс Email, который я создал.
Добавьте текст в тему, а затем нажмите кнопку «Отправить».
Email (List<String> to, String from, [HashMap<String, Object> options = null]){...}
, и таким образом я создам карту до опций вместо того, чтобы передавать кучу переменных. Затем просто прочитайте эту карту для определенных ключей и обработайте ее соответствующим образом? 20.01.2016Email( List<String> to, String from, [HashMap<String, Object> options = null]) { this._to = to; this._from = from; if (options == null) return; this._subject = options.containsKey("subject")?options["subject"]:null; this._message = options.containsKey("message")?options["message"]:null; this._metadata = options.containsKey("meta")?options["meta"]:null; this._datetime = options.containsKey("datetime")?options["datetime"]:new DateTime.now(); this._attachments = options.containsKey("attachments")?options["attachments"]:null; }
20.01.2016Map
, вероятно, будет лучше, чемHashMap
. Я не вижу необходимости указывать конкретную реализацию карты. Я бы предпочел классEmailOptions
, потому что я предполагаю, что набор поддерживаемых опций фиксирован. Это обеспечило бы правильное автодополнение, проверку типов анализатора и более простой синтаксис для пользователя классаEmail
. 20.01.2016Email
. Мне это нравится. Я думаю, что вместо этого я пойду по этому пути.... с картой опций. таким образом, существующая карта может быть передана, и нужно будет просто изменить ссылку сsubject
наoptions["subject"]
20.01.2016