import 'package:wordguessing/data/game_data.dart'; import 'package:wordguessing/models/word.dart'; import 'package:wordguessing/utils/tools.dart'; class FetchDataHelper { FetchDataHelper(); List<Word> _words = []; String _lang = ''; void init(String lang) { _words = []; _lang = lang; try { const gameData = GameData.data; final Map<String, dynamic> rawWords = gameData['words'] as Map<String, dynamic>; rawWords.forEach((String key, rawWord) { final String text = rawWord[_lang] as String; final List<String> images = []; for (var rawImage in rawWord['images'] as List<dynamic>) { images.add(rawImage.toString()); } images.shuffle(); if (images.isNotEmpty) { _words.add(Word( key: key, text: text, images: images, )); } }); } catch (e) { printlog("$e"); } } List<Word> getWords(String lang, int count) { if (_words.isEmpty || lang != _lang) { init(lang); } List<Word> words = _words; words.shuffle(); return words.take(count).toList(); } }