import 'dart:convert'; import 'package:flutter/services.dart' show rootBundle; import 'species_repository.dart'; const _catalogAsset = 'assets/catalog/species.json'; /// Parses the bundled catalog JSON into [SpeciesSeed]s. Kept separate from asset /// loading so it is trivially unit-testable without a Flutter binding. List parseSpeciesCatalog(String jsonString) { final data = jsonDecode(jsonString) as Map; final entries = (data['species'] as List).cast>(); return entries.map((e) { final common = (e['common'] as Map? ?? const {}).map( (lang, names) => MapEntry(lang, (names as List).cast()), ); return SpeciesSeed( scientificName: e['scientific_name'] as String, family: e['family'] as String?, commonNames: common, ); }).toList(); } /// Loads and parses the bundled species catalog asset. Future> loadBundledSpecies() async { final jsonString = await rootBundle.loadString(_catalogAsset); return parseSpeciesCatalog(jsonString); }