import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:provider/provider.dart'; import 'package:resume/constants.dart'; import 'package:resume/providers/locale_provider.dart'; class ContentProvider extends ChangeNotifier { static final ContentProvider _instance = ContentProvider._(); factory ContentProvider() => _instance; ContentProvider._(); static const String _baseJsonPath = 'assets/content/content'; Map _content = { 'experience': >[], 'education': >[], 'skills': >[], 'text': [], 'general_skills': [], }; Future loadContent(BuildContext context) async { String currentLocale = context.read().locale.languageCode; final String localizedPath = '${_baseJsonPath}_$currentLocale.json'; try { String file = await rootBundle.loadString(localizedPath); _content = json.decode(file); notifyListeners(); return true; } catch (e) { // If localized version fails, fall back to default German String file = await rootBundle.loadString('${_baseJsonPath}_de.json'); _content = json.decode(file); notifyListeners(); return true; } } T getContent(ContentType contentType) { switch (contentType) { case ContentType.experience: return _content['experience'] as T; case ContentType.education: return _content['education'] as T; case ContentType.skills: return _content['skills'] as T; case ContentType.text: return _content['text'] as T; case ContentType.generalSkills: return _content['general_skills'] as T; default: return [] as T; } } }