Prepared for aqi distribution API Integration.

This commit is contained in:
Faris Armoush
2025-06-02 16:13:58 +03:00
parent 7bc9079212
commit 8e11749ed7
13 changed files with 296 additions and 213 deletions

View File

@ -1,24 +1,24 @@
import 'package:equatable/equatable.dart';
import 'package:flutter/material.dart';
import 'package:syncrow_web/utils/color_manager.dart';
class AirQualityDataModel {
class AirQualityDataModel extends Equatable {
const AirQualityDataModel({
required this.date,
this.good,
this.moderate,
this.poor,
this.unhealthy,
this.severe,
this.hazardous,
required this.data,
});
final DateTime date;
final double? good;
final double? moderate;
final double? poor;
final double? unhealthy;
final double? severe;
final double? hazardous;
final List<AirQualityPercentageData> data;
factory AirQualityDataModel.fromJson(Map<String, dynamic> json) {
return AirQualityDataModel(
date: DateTime.parse(json['date'] as String),
data: (json['data'] as List<dynamic>)
.map((e) => AirQualityPercentageData.fromJson(e as Map<String, dynamic>))
.toList(),
);
}
static final Map<String, Color> metricColors = {
'good': ColorsManager.goodGreen.withValues(alpha: 0.7),
@ -28,4 +28,30 @@ class AirQualityDataModel {
'severe': ColorsManager.severePink.withValues(alpha: 0.7),
'hazardous': ColorsManager.hazardousPurple.withValues(alpha: 0.7),
};
@override
List<Object?> get props => [date, data];
}
class AirQualityPercentageData extends Equatable {
const AirQualityPercentageData({
required this.type,
required this.name,
required this.percentage,
});
final String type;
final String name;
final double percentage;
factory AirQualityPercentageData.fromJson(Map<String, dynamic> json) {
return AirQualityPercentageData(
type: json['type'] as String? ?? '',
name: json['name'] as String? ?? '',
percentage: (json['percentage'] as num?)?.toDouble() ?? 0,
);
}
@override
List<Object?> get props => [type, name, percentage];
}