buildForecastWeatherView function

Widget buildForecastWeatherView({
  1. required BuildContext context,
  2. required bool isLoading,
  3. required HourlyWeatherData? forecastWeatherData,
  4. required double latitude,
  5. required double longitude,
  6. String? address,
  7. required String selectedDataType,
  8. required void onDataTypeChanged(
    1. String
    ),
})

Build forecast weather view.

Implementation

Widget buildForecastWeatherView({
  required BuildContext context,
  required bool isLoading,
  required HourlyWeatherData? forecastWeatherData,
  required double latitude,
  required double longitude,
  String? address,
  required String selectedDataType,
  required void Function(String) onDataTypeChanged,
}) {
  if (isLoading) {
    return const Center(child: CircularProgressIndicator());
  }

  if (forecastWeatherData == null) {
    return const Center(child: Text('Tap to load 7-day forecast weather data'));
  }

  return SingleChildScrollView(
    padding: const EdgeInsets.all(16),
    child: Column(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: [
        Text(
          'Forecast Weather (Next 7 Days)',
          style: Theme.of(context).textTheme.titleLarge,
        ),
        const SizedBox(height: 8),
        if (address != null && address.isNotEmpty) ...[
          Text(address, style: Theme.of(context).textTheme.bodySmall),
          const SizedBox(height: 4),
        ],
        Text(
          'Coordinates: ${latitude.toStringAsFixed(4)}, ${longitude.toStringAsFixed(4)}',
          style: Theme.of(context).textTheme.bodySmall?.copyWith(
            color: Theme.of(
              context,
            ).textTheme.bodySmall?.color?.withValues(alpha: 0.7),
          ),
        ),
        const SizedBox(height: 16),
        buildDataTypeSelector(
          selectedDataType: selectedDataType,
          onSelectionChanged: onDataTypeChanged,
        ),
        const SizedBox(height: 16),
        HourlyWeatherChart(
          data: forecastWeatherData,
          dataType: selectedDataType,
          sortAscending: true, // Forecast: oldest to newest (today to future)
          latitude: latitude,
          longitude: longitude,
          address: address,
          dataSource: 'Forecast (7 Days)',
        ),
      ],
    ),
  );
}