exportWeatherChartToPdf function

Future<void> exportWeatherChartToPdf(
  1. BuildContext context, {
  2. required HourlyWeatherData data,
  3. required Map<DateTime, double> dailyData,
  4. required Map<DateTime, (double, double)> dailyMinMax,
  5. Map<DateTime, double>? dailyMaxData,
  6. Map<DateTime, double>? dailyMinData,
  7. required double minValue,
  8. required double maxValue,
  9. DateTime? minDate,
  10. DateTime? maxDate,
  11. required String title,
  12. required String unit,
  13. String? dataType,
  14. double? latitude,
  15. double? longitude,
  16. String? address,
  17. Map<DateTime, int>? precipitationHours,
  18. String? dataSource,
})

Export weather data to PDF.

Implementation

Future<void> exportWeatherChartToPdf(
  BuildContext context, {
  required HourlyWeatherData data,
  required Map<DateTime, double> dailyData,
  required Map<DateTime, (double, double)> dailyMinMax,
  Map<DateTime, double>? dailyMaxData,
  Map<DateTime, double>? dailyMinData,
  required double minValue,
  required double maxValue,
  DateTime? minDate,
  DateTime? maxDate,
  required String title,
  required String unit,
  String? dataType,
  double? latitude,
  double? longitude,
  String? address,
  Map<DateTime, int>? precipitationHours,
  String? dataSource,
}) async {
  try {
    // Build PDF document.
    final pdf = buildWeatherPdfDocument(
      data: data,
      dailyData: dailyData,
      dailyMinMax: dailyMinMax,
      dailyMaxData: dailyMaxData,
      dailyMinData: dailyMinData,
      minValue: minValue,
      maxValue: maxValue,
      minDate: minDate,
      maxDate: maxDate,
      title: title,
      unit: unit,
      dataType: dataType,
      latitude: latitude,
      longitude: longitude,
      address: address,
      precipitationHours: precipitationHours,
      dataSource: dataSource,
    );

    // Save PDF and get bytes.
    final bytes = await pdf.save();

    // Handle platform-specific export.

    if (context.mounted) {
      await handlePdfExport(context, bytes);
    }
  } catch (e) {
    // Show error message if PDF export fails.
    if (context.mounted) {
      SnackBarHelper.showError(
        context,
        'Failed to export PDF: $e',
        duration: const Duration(seconds: 3),
      );
    }
  }
}