import 'dart:collection'; import 'package:aitrainer_app/localization/app_language.dart'; import 'package:aitrainer_app/model/auth.dart'; import 'package:aitrainer_app/model/exercise_tree.dart'; import 'package:aitrainer_app/model/exercise_type.dart'; import 'package:aitrainer_app/model/workout_tree.dart'; import 'package:aitrainer_app/service/exercise_tree_service.dart'; import 'package:aitrainer_app/service/exercisetype_service.dart'; import 'package:flutter/material.dart'; class MenuTreeRepository { final LinkedHashMap tree = LinkedHashMap(); Future createTree() async { final AppLanguage appLanguage = AppLanguage(); bool isEnglish = appLanguage.appLocal == Locale('en'); List exerciseTree = Auth().getExerciseTree(); if ( exerciseTree == null || exerciseTree.length == 0) { await ExerciseTreeApi().getExerciseTree(); } exerciseTree.forEach( (treeItem) async { String treeName = isEnglish ? treeItem.name : treeItem.nameTranslation; String assetImage = 'asset/menu/' + treeItem.imageUrl.substring(7); this.tree[treeItem.name] = WorkoutTree( treeItem.treeId, treeItem.parentId, treeName, assetImage, Colors.white, 32, false, 0, null, false ); }); List exerciseTypes = Auth().getExerciseTypes(); if ( exerciseTypes == null || exerciseTypes.length == 0) { await ExerciseTypeApi().getExerciseTypes(); } exerciseTypes.forEach( (exerciseType) { String exerciseTypeName = isEnglish ? exerciseType.name : exerciseType.nameTranslation; String assetImage = 'asset/menu/' + exerciseType.imageUrl.substring(7); this.tree[exerciseType.name] = WorkoutTree( exerciseType.exerciseTypeId, exerciseType.treeId, exerciseTypeName, assetImage, Colors.white, 16, true, exerciseType.exerciseTypeId, exerciseType, exerciseType.base ); }); } LinkedHashMap getBranch(int parent) { LinkedHashMap branch = LinkedHashMap(); tree.forEach((key, value) { WorkoutTree workoutTree = value as WorkoutTree; if ( parent == workoutTree.parent) { branch[key] = value; } }); return branch; } }