calcolatrice/lib/features/converter/converter_provider.dart

38 lines
1.5 KiB
Dart
Raw Permalink Normal View History

2026-03-04 14:33:15 +01:00
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:dio/dio.dart';
class ConversionUnit {
final String name;
final String symbol;
final String category;
final double rateToValue;
ConversionUnit({required this.name, required this.symbol, required this.category, required this.rateToValue});
}
class ConverterNotifier extends StateNotifier<List<ConversionUnit>> {
ConverterNotifier() : super(_initialUnits);
static final List<ConversionUnit> _initialUnits = [
ConversionUnit(name: 'Chilometri', symbol: 'km', category: 'Distanza', rateToValue: 1000),
ConversionUnit(name: 'Metri', symbol: 'm', category: 'Distanza', rateToValue: 1),
ConversionUnit(name: 'Kilogrammi', symbol: 'kg', category: 'Peso', rateToValue: 1),
ConversionUnit(name: 'Libbre', symbol: 'lb', category: 'Peso', rateToValue: 0.453592),
];
Future<void> fetchLiveRates() async {
try {
final response = await Dio().get('https://api.frankfurter.app/latest?from=EUR');
final rates = response.data['rates'] as Map<String, dynamic>;
state = [
...state,
ConversionUnit(name: 'Dollaro USA', symbol: 'USD', category: 'Valuta', rateToValue: rates['USD']),
ConversionUnit(name: 'Euro', symbol: 'EUR', category: 'Valuta', rateToValue: 1.0),
];
} catch (e) {
print("Errore API: $e");
}
}
}
final converterProvider = StateNotifierProvider<ConverterNotifier, List<ConversionUnit>>((ref) => ConverterNotifier());