Что такое закрытие: () => Строка из метода расширения dart

#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 , который является функцией.