loadData method

Future<void> loadData({
  1. required Future<ModChartData> fetchData(
    1. String period
    ),
  2. required String period,
  3. dynamic onPeriodChange(
    1. String
    )?,
  4. dynamic onDataLoaded(
    1. String,
    2. List<ModChartDataItem>
    )?,
  5. dynamic onError(
    1. String
    )?,
})

Implementation

Future<void> loadData({
  required Future<ModChartData> Function(String period) fetchData,
  required String period,
  Function(String)? onPeriodChange,
  Function(String, List<ModChartDataItem>)? onDataLoaded,
  Function(String)? onError,
}) async {
  try {
    isLoading.value = true;
    hasError.value = false;
    errorMessage.value = '';
    selectedPeriod.value = period;

    onPeriodChange?.call(period);

    final data = await fetchData(period);
    chartData.value = data;

    onDataLoaded?.call(period, data.data);

  } catch (e) {
    hasError.value = true;
    errorMessage.value = e.toString();
    onError?.call(e.toString());
  } finally {
    isLoading.value = false;
  }
}