import 'package:aitrainer_app/localization/app_localization.dart'; import 'package:aitrainer_app/model/auth.dart'; import 'package:aitrainer_app/model/exercise_type.dart'; import 'package:aitrainer_app/model/workout_tree.dart'; import 'package:aitrainer_app/util/common.dart'; import 'package:aitrainer_app/util/menu_tests.dart'; import 'package:aitrainer_app/viewmodel/exercise_changing_view_model.dart'; import 'package:aitrainer_app/widgets/bottom_nav.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'dart:collection'; import 'package:provider/provider.dart'; // ignore: must_be_immutable class MenuPage extends StatefulWidget { _MenuPageState _state; static const routeName = '/menu_page'; int parent; MenuPage({this.parent}); @override _MenuPageState createState() { _state = new _MenuPageState(); return _state; } } class _MenuPageState extends State { final BottomNavigator bottomNav = BottomNavigator(); @override Widget build(BuildContext context) { final MenuTests menu = MenuTests(context); return Scaffold( appBar: AppBar( backgroundColor: Colors.transparent, title: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text(AppLocalizations.of(context).translate("Tests")), Image.asset( 'asset/image/WT_long_logo.png', fit: BoxFit.cover, height: 65.0, ), ], ), leading: IconButton( icon: Icon(Icons.arrow_back, color: Colors.white), onPressed: () => { this.setState(() { widget.parent = 0; }, )}, ), ), body: Container( decoration: BoxDecoration( image: DecorationImage( image: AssetImage('asset/image/WT_menu_dark.png'), fit: BoxFit.fill, alignment: Alignment.center, ), ), child: CustomScrollView( scrollDirection: Axis.vertical, slivers: [ buildMenuColumn(widget.parent, context, menu) ] ) ), ); } SliverList buildMenuColumn(int parent, BuildContext context, MenuTests menu) { LinkedHashMap tree = menu.getMenuItems(); List _columnChildren = List(); ExerciseType exerciseType; ExerciseChangingViewModel model = Provider.of(context, listen: false); tree.forEach((treeName, value) { WorkoutTree workoutTree = value as WorkoutTree; if ( workoutTree.parent == parent ) { _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 ) { this.setState(() { widget.parent = workoutTree.id; }, ), } else { exerciseType = Common.getExerciseType(workoutTree.exerciseTypeId), model.setExerciseType(exerciseType), model.setCustomer(Auth().userLoggedIn), 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 { Navigator.of(context).pushNamed('exerciseNewPage'), } } } ), 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; if ( workoutTree.imageName.startsWith("http") ) { image = FadeInImage.assetNetwork( image: workoutTree.imageName, placeholder: 'asset/image/dots.gif', //imageScale: 0.1, height: 180, placeholderScale: 0.1, ); } else { image = Image.asset(workoutTree.imageName, height: 180,); } return image; } }