Серия Flutter конструктор - PullRequest
0 голосов
/ 01 августа 2020

Я обнаружил следующий фрагмент кода при попытке построить данные с помощью библиотеки флаттер-диаграмм.

_getSeriesData() {
    List<charts.Series<PopulationData, String>> series = [
      charts.Series(
        id: "Population",
        data: data,
        domainFn: (PopulationData series, _) => series.year.toString(),
        measureFn: (PopulationData series, _) => series.population,
        colorFn: (PopulationData series, _) => series.barColor
      )
    ];
    return series;
}

Я изо всех сил пытаюсь понять код, особенно следующие строки.

    domainFn: (PopulationData series, _) => series.year.toString(),
    measureFn: (PopulationData series, _) => series.population,
    colorFn: (PopulationData series, _) => series.barColor

Не знаю, как графики. Серии представляют данные. Я не могу найти никаких руководств по классу "Серии".

1 Ответ

1 голос
/ 01 августа 2020

A Series - это класс-оболочка вокруг списка «точек» - проще всего представить пары [x, y] - вместе с горсткой функций, которые умеют интерпретировать / форматировать эти [ x, y] указывает на (обычно) строки. Член серии data представляет собой список этих точек; члены xxxFn - это функции.

Что может немного запутать, так это то, что эти точки представлены произвольным классом (в вашем случае PopulationData), а не, скажем, парой целых чисел ( один для x, один для y). Итак, charts не знает, как интерпретировать PopulationData, если вы этого не скажете. Для этого предназначены вспомогательные функции, которые вы предоставляете.

measureFn - это функция, которая принимает PopulationData и возвращает переменную оси «y». domainFn то же самое для переменной оси «x». (Второй параметр - index, на случай, если вам нужно знать, какая точка / полоса отображается.)

Текущий код особенно трудно понять, поскольку автор перегрузил word series, где может иметь смысл использовать pd, означающее «экземпляр данных о совокупности», и что это функции, которые возвращают соответствующую часть экземпляра.

Перепишите его как:

    domainFn: (PopulationData pd, _) => pd.year.toString(),
    measureFn: (PopulationData pd, _) => pd.population,
    colorFn: (PopulationData pd, _) => pd.barColor,

, чтобы легче было увидеть, что year, population и barColor являются членами PopulationData.

Также см. простой пример в графиках примеры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...