簡體   English   中英

如何將類型參數傳遞給 Dart 中的 function?

[英]How to pass a Type parameter to a function in Dart?

我想將類型參數傳遞給我的 function。 那可能嗎?

例如:

List getSomething(Type typeToReturn) {
    return List<dynamic, typeToReturn>();
}

我的代碼:

List<charts.Series> getSeriesData(Type typeToReturn) {
    List<DateTime> dates = getDaysInBetween(startTime, DateTime.now());
    List<Map> data = [];
    dates.forEach((DateTime date) => data.add({
          'date': '${date.day.toString()}.${date.month.toString()}',
          'score': _getTotalScoreInSpecificDate(date)
        }));

    return [
      new charts.Series<dynamic, typeToReturn>(
        id: 'Score',
        colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault,
        domainFn: (data, _) => data['date'],
        measureFn: (data, _) => data['score'],
        data: data,
      )
    ];
  }

是的,您可以使用Generics ,因此 function 將是這樣的:

List<dynamic, T> getSomething<T>(T typeToReturn) {
    return List<dynamic, T>();
}

你想用 generics 做這樣的事情,完全放棄你的typeToReturn參數:

List<charts.Series> getSeriesData<T>() {
    // ...

    return [
      new charts.Series<dynamic, T>(
        // ...
      )
    ];
  }

另外,我不相信您可以動態使用Type object 作為類型參數。 認為您可以使用dart:mirrors ,但是該庫與 Flutter 不兼容,並且不再真正維護。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM