import 'dart:ui'; import 'package:aitrainer_app/bloc/menu/menu_bloc.dart'; import 'package:aitrainer_app/localization/app_localization.dart'; import 'package:aitrainer_app/model/auth.dart'; import 'package:aitrainer_app/model/workout_tree.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; // ignore: must_be_immutable class MenuPageWidget extends StatelessWidget { int parent; MenuPageWidget({this.parent}); @override Widget build(BuildContext context) { MenuBloc menuBloc = BlocProvider.of(context); return CustomScrollView( scrollDirection: Axis.vertical, slivers: [ buildMenuColumn(parent, context, menuBloc) ] ); } SliverList buildMenuColumn(int parent, BuildContext context, MenuBloc menuBloc) { final List _columnChildren = List(); menuBloc.menuTreeRepository.getBranch(menuBloc.parent).forEach((treeName, value) { WorkoutTree workoutTree = value as WorkoutTree; _columnChildren.add( Container( padding: EdgeInsets.only(top: 16.0), child: Center( child: Stack( alignment: Alignment.bottomLeft, overflow: Overflow.visible, children: [ FlatButton( child: _getButtonImage(workoutTree), padding: EdgeInsets.all(0.0), onPressed:() => { print("Hi!, Menu clicked " + workoutTree.id.toString()), if ( workoutTree.child == false ) { menuBloc.add(MenuTreeDown(parent: workoutTree.id)), } else { menuBloc.add(MenuClickExercise(exerciseTypeId: workoutTree.id)), if ( Auth().userLoggedIn == null ) { Scaffold.of(context).showSnackBar( SnackBar( backgroundColor: Colors.orange, content: Text( AppLocalizations.of(context).translate('Please log in'), style: TextStyle(color: Colors.white)) )) } else { if ( workoutTree.exerciseType.name == "Custom") { Navigator.of(context).pushNamed( 'exerciseCustomPage', arguments: workoutTree.exerciseType), } else { Navigator.of(context).pushNamed( 'exerciseNewPage', arguments: workoutTree.exerciseType), } } } } ), InkWell( child: Text(workoutTree.name, style: TextStyle(color: workoutTree.color, fontSize: workoutTree.fontSize, fontFamily: 'Arial', fontWeight: FontWeight.w900 ),), highlightColor: workoutTree.color, )] ) ) ) ); }); //_columnChildren.add(Spacer(flex: 3)); SliverList sliverList = SliverList( delegate: SliverChildListDelegate( _columnChildren ) ); return sliverList; } dynamic _getButtonImage(WorkoutTree workoutTree) { dynamic image; /*String url = workoutTree.imageName; if ( workoutTree.imageName.startsWith("https") ) { image = FadeInImage.assetNetwork( placeholder: 'asset/image/dots.gif', image: url, height: 180, ); } else { image = Image.asset(workoutTree.imageName, height: 180,); }*/ try { image = Image.asset( workoutTree.imageName, height: 180, errorBuilder: (context, error, stackTrace) { String url = Auth.mediaUrl + 'images/' + workoutTree.imageName.substring(11); Widget image = FadeInImage.assetNetwork( placeholder: 'asset/image/dots.gif', image: url, height: 180, ); return image; }, ); } on Exception catch(_) { String url = Auth.mediaUrl + '/images/' + workoutTree.imageName; image = FadeInImage.assetNetwork( placeholder: 'asset/image/dots.gif', image: url, height: 180, ); } return image; } }