import 'package:aitrainer_app/localization/app_language.dart'; import 'package:aitrainer_app/localization/app_localization.dart'; import 'package:aitrainer_app/model/auth.dart'; import 'package:aitrainer_app/util/common.dart'; import 'package:aitrainer_app/viewmodel/customer_changing_view_model.dart'; import 'package:aitrainer_app/viewmodel/customer_view_model.dart'; import 'package:aitrainer_app/viewmodel/exercise_changing_view_model.dart'; import 'package:aitrainer_app/viewmodel/exercise_view_model.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:aitrainer_app/viewmodel/user_view_model.dart'; import 'package:aitrainer_app/widgets/bottom_nav.dart'; import 'package:flutter/material.dart'; import 'package:flutter/cupertino.dart'; import 'package:provider/provider.dart'; class AccountPage extends StatefulWidget{ _AccountPagePageState _state; _AccountPagePageState createState() { _state = new _AccountPagePageState(); return _state; } State getState() { return _state; } } class _AccountPagePageState extends State { final UserViewModel user = UserViewModel(); final AppLanguage appLanguage = AppLanguage(); final Future _prefs = SharedPreferences.getInstance(); final BottomNavigator bottomNav = BottomNavigator(); Future> _exercises; ExerciseChangingViewModel exerciseChangingViewModel; @override void initState() { exerciseChangingViewModel = Provider.of(context, listen: false); super.initState(); } @override Widget build(BuildContext context) { return Consumer( builder: (context, model, child ) { if ( model.customer == null ) { CustomerViewModel customerViewModel = CustomerViewModel(); model.customer = customerViewModel; if ( model.customer.getCustomer() == null ) { model.customer.setCustomer(Auth().userLoggedIn); } } if ( Auth().userLoggedIn != null ) { _exercises = exerciseChangingViewModel.getExercisesByCustomer( Auth().userLoggedIn.customerId); } return Scaffold( appBar: AppBar( title: Text(AppLocalizations.of(context).translate('Account')), backgroundColor: Colors.transparent, ), body: Container( foregroundDecoration: BoxDecoration( image: DecorationImage( image: AssetImage('asset/image/WT_long_logo.png'), alignment: Alignment.topRight, ), ), decoration: BoxDecoration( image: DecorationImage( image: AssetImage('asset/image/WT_light_background.png'), fit: BoxFit.cover, alignment: Alignment.center, ), ), child: ListView( padding: EdgeInsets.only(top: 135), children: [ ListTile( leading: Icon(Icons.perm_identity), subtitle: Text( AppLocalizations.of(context).translate("Profile")), title: FlatButton( child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text(Auth().userLoggedIn != null ? Auth().userLoggedIn.name + " " + Auth().userLoggedIn.firstname : "", style: TextStyle(color: Colors.blue)), Icon(Icons.arrow_forward_ios), ]), textColor: Colors.grey, color: Colors.white, onPressed: () => { if (model.customer.getCustomer() != null) { Navigator.of(context).pushNamed( 'customerModifyPage'), print("Profile"), } }, ), ), ListTile( leading: Icon(Icons.language), title: Text(appLanguage.appLocal == Locale('en') ? AppLocalizations.of(context).translate("English") : AppLocalizations.of(context).translate("Hungarian")), subtitle: Text(AppLocalizations.of(context).translate( "Selected Language")), ), loginOut( model ), exercises(exerciseChangingViewModel), ] ) ), bottomNavigationBar: bottomNav.buildBottomNavigator( context, widget._state) ); }); } ListTile loginOut( CustomerChangingViewModel model ) { ListTile element = ListTile(); String text = "Logout"; Color buttonColor = Colors.orange; if ( model.customer.getCustomer() == null ) { text = "Login"; buttonColor = Colors.blue; } element = ListTile( enabled: true, leading: Icon(Icons.input), title: FlatButton( child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text(AppLocalizations.of(context).translate(text), style: TextStyle( color: buttonColor )), Icon(Icons.arrow_forward_ios), ]), textColor: buttonColor, color: Colors.white, onPressed: () => { setState(() { if ( model.customer.getCustomer() == null ) { print("Login"); Navigator.of(context).pushNamed("login", arguments: widget._state); } else { print("Logout"); Auth().logout(); model.customer.setCustomer(null); } }) }, ), ); return element; } ListTile exercises( ExerciseChangingViewModel model ) { ListTile element = ListTile(); if ( Auth().userLoggedIn == null ) { return element; } element = ListTile( title: Text(AppLocalizations.of(context).translate("Exercises")), subtitle: Column( children: [ FutureBuilder>( future: _exercises, builder: (context, snapshot) { if (snapshot.hasData) { return getExercises( model );//CustomerListWidget(customers: _exerciseViewModel.exerciseList); } else if (snapshot.hasError) { return Text("${snapshot.error}"); } // By default, show a loading spinner. return CircularProgressIndicator(); } ),] )); return element; } Widget getExercises( ExerciseChangingViewModel model ) { List exercises = model.exerciseList; Column element = Column(); if (exercises.length > 0) { List rows = List(); exercises.forEach((exercise) { String exerciseName = AppLocalizations.of(context).translate( Common.getExerciseType(exercise.getExercise().exerciseTypeId).name); String quantity = exercise.getExercise().quantity.toString() + " " + AppLocalizations.of(context).translate(exercise.getExercise().unit); String unitQuantity = ""; String unitQuantityUnit = ""; String date = Common.getDateLocale(exercise.getExercise().dateAdd, false); if (exercise.getExercise().unitQuantity != null) { unitQuantity = exercise.getExercise().unitQuantity.toString(); unitQuantityUnit = AppLocalizations.of(context).translate( Common.getExerciseType(exercise.getExercise().exerciseTypeId).unitQuantityUnit); } TableRow row = TableRow( children: [ Text(date), Text(exerciseName), Text(quantity), Text(unitQuantity + " " + unitQuantityUnit), ] ); Table table = Table( defaultColumnWidth: FractionColumnWidth(0.28), children: [row], ); Column col = Column( children: [ table, Row( children: [ Text(" "), ] ) ], ); rows.add(col); }); element = Column( children: rows, ); } return element; } }