mirror of
https://github.com/vleeuwenmenno/supplements.git
synced 2025-12-10 14:53:33 +00:00
feat: adds RDA for intake of vitamins and certain elements based on
canada health values
This commit is contained in:
40
lib/services/nutrient_data_service.dart
Normal file
40
lib/services/nutrient_data_service.dart
Normal file
@@ -0,0 +1,40 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:flutter/services.dart';
|
||||
|
||||
import '../models/nutrient.dart';
|
||||
|
||||
class NutrientDataService {
|
||||
static final NutrientDataService _instance = NutrientDataService._internal();
|
||||
|
||||
factory NutrientDataService() {
|
||||
return _instance;
|
||||
}
|
||||
|
||||
NutrientDataService._internal();
|
||||
|
||||
List<Nutrient>? _nutrients;
|
||||
|
||||
Future<List<Nutrient>> get nutrients async {
|
||||
if (_nutrients != null) {
|
||||
return _nutrients!;
|
||||
}
|
||||
await _loadNutrientData();
|
||||
return _nutrients!;
|
||||
}
|
||||
|
||||
Future<void> _loadNutrientData() async {
|
||||
try {
|
||||
final String response = await rootBundle.loadString('assets/canada_health.json');
|
||||
final data = await json.decode(response);
|
||||
final nutrientsData = data['nutrients'] as Map<String, dynamic>;
|
||||
|
||||
_nutrients = nutrientsData.entries.map((entry) {
|
||||
return Nutrient.fromJson(entry.key, entry.value);
|
||||
}).toList();
|
||||
} catch (e) {
|
||||
print('Error loading nutrient data: $e');
|
||||
_nutrients = [];
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user