WT 1.1.5+2 remote images for menu

This commit is contained in:
bossanyit
2021-01-31 12:59:52 +01:00
parent 71efd3f349
commit c1a57dd10e
88 changed files with 743 additions and 316 deletions
+41 -9
View File
@@ -13,6 +13,7 @@ import 'package:bloc/bloc.dart';
import 'package:equatable/equatable.dart';
import 'package:flutter/cupertino.dart';
import 'package:meta/meta.dart';
import 'package:aitrainer_app/library/image_cache.dart' as wt;
part 'menu_event.dart';
part 'menu_state.dart';
@@ -21,9 +22,9 @@ class MenuBloc extends Bloc<MenuEvent, MenuState> with Trans, Logging {
final WorkoutTreeRepository menuTreeRepository;
final ExerciseRepository exerciseRepository = ExerciseRepository();
ExerciseDeviceRepository exerciseDeviceRepository = ExerciseDeviceRepository();
int parent;
int parent = 0;
WorkoutMenuTree workoutItem;
List<int> listFilterDevice = List();
final List<int> listFilterDevice = List();
String infoTitle = "";
String infoText = "";
@@ -95,25 +96,27 @@ class MenuBloc extends Bloc<MenuEvent, MenuState> with Trans, Logging {
if (event is MenuCreate) {
yield MenuLoading();
//await menuTreeRepository.createTree();
//menuTreeRepository.getBranch(this.parent);
setMenuInfo();
exerciseDeviceRepository.setDevices(Cache().getDevices());
/* exerciseDeviceRepository.getGymDevices().forEach((element) {
listFilterDevice.add(element.exerciseDeviceId);
}); */
yield MenuReady();
} else if (event is MenuRecreateTree) {
yield MenuLoading();
// ie. at language changes
await menuTreeRepository.createTree();
yield MenuReady();
} else if (event is MenuTreeDown) {
// get child menus or exercises
yield MenuLoading();
parent = event.parent;
workoutItem = event.item;
if (workoutItem != null) {
setAbility(workoutItem.nameEnglish);
}
menuTreeRepository.getBranch(event.parent);
final LinkedHashMap<String, WorkoutMenuTree> branch = menuTreeRepository.getBranch(event.parent);
await getImages(branch);
//await Future.delayed(Duration(seconds: 2));
yield MenuReady();
} else if (event is MenuTreeUp) {
yield MenuLoading();
@@ -121,10 +124,13 @@ class MenuBloc extends Bloc<MenuEvent, MenuState> with Trans, Logging {
parent = event.parent;
workoutItem = menuTreeRepository.getParentItem(parent);
LinkedHashMap<String, WorkoutMenuTree> branch;
if (workoutItem != null) {
menuTreeRepository.getBranch(workoutItem.parent);
setAbility(workoutItem.nameEnglish);
branch = menuTreeRepository.getBranch(workoutItem.parent);
await getImages(branch);
}
yield MenuReady();
} else if (event is MenuTreeJump) {
yield MenuLoading();
@@ -132,9 +138,12 @@ class MenuBloc extends Bloc<MenuEvent, MenuState> with Trans, Logging {
workoutItem = menuTreeRepository.getParentItem(parent);
if (workoutItem != null) {
menuTreeRepository.getBranch(workoutItem.parent);
setAbility(workoutItem.nameEnglish);
}
final LinkedHashMap<String, WorkoutMenuTree> branch = menuTreeRepository.getBranch(workoutItem.parent);
if (branch != null) {
await getImages(branch);
}
yield MenuReady();
} else if (event is MenuClickExercise) {
yield MenuLoading();
@@ -171,6 +180,29 @@ class MenuBloc extends Bloc<MenuEvent, MenuState> with Trans, Logging {
log("Ability: " + ability.toString() + " name:" + name);
}
Future<void> getImages(LinkedHashMap<String, WorkoutMenuTree> branch) async {
wt.ImageCache().clearImageList();
await putBranchImageToHash(branch);
log("downloaded image size in KB: " + wt.ImageCache().downloadSize.toString());
}
Future<void> putBranchImageToHash(LinkedHashMap<String, WorkoutMenuTree> branch) async {
await Future.forEach(branch.keys, (key) async {
final WorkoutMenuTree value = branch[key];
if (!value.imageName.contains("asset")) {
await wt.ImageCache().putImageToList(value.id, value.imageName);
}
});
}
String getImage(int id, String name) {
String imageString;
if (name.contains("http")) {
imageString = wt.ImageCache().getImageString(id, name);
}
return imageString;
}
bool selectedDevice(int deviceId) {
return !listFilterDevice.contains(deviceId);
}