#flutter #dart
Вопрос:
Я создал метод расширения, который я могу использовать для преобразования Maplt;Datetime,doublegt;
в строку, как показано здесь
extension MapParsing on Maplt;DateTime,doublegt; { String toStringFromMap() { String valueList=""; forEach((key, value) { valueList=valueList key.toIso8601String() "#" value.toString() ","; }); return valueList.toString(); } }
Мой тест сработал так, как я и ожидал, как показано ниже.
test("Should Convert Data Map to String ", (){ Maplt;DateTime,doublegt; data={}; data[DateTime.now()]=23.0; data[DateTime.now().add(Duration(seconds: 100))]=25.0; data[DateTime.now().add(Duration(seconds: 300))]=24.0; print(data.toStringFromMap()); });
И результат был такой 2021-11-30T10:06:41.859719#23.0,2021-11-30T10:08:21.860054#25.0,2021-11-30T10:11:41.860837#24.0,
Однако, когда я использую этот метод в своем коде, например
... @override Maplt;String, dynamicgt; toDB() { final data = lt;String, dynamicgt;{}; data['id']=id; data['chartName']=chartName; data['chartCode']=chartCode; data['symbol']=symbol; data['isHomeMonitoringData']=isHomeMonitoringData.toString(); data['chartValues']=chartValues!.toStringFromMap; data['schedule']=schedule; return data; } ...
Он возвращает {id: null, chartName: Name, chartCode: CHART, symbol: val, isHomeMonitoringData: true, chartValues: Closure: () =gt; String, schedule: daily}
то, что есть Getting Closure: () =gt; String
, что это такое ? Почему я получаю такой результат? .
Спасибо.
Комментарии:
1. Это строковое представление функции (с контекстом), которая не принимает аргументов и возвращает a
String
. Вы добавляетеchartValues!.toStringFromMap
в свойMap
, который является функцией.