wt1.1c auth->cache, control page, animation base exercise percent
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:aitrainer_app/model/auth.dart';
|
||||
import 'package:aitrainer_app/model/cache.dart';
|
||||
import 'package:aitrainer_app/model/customer.dart';
|
||||
import 'package:aitrainer_app/repository/customer_repository.dart';
|
||||
import 'package:bloc/bloc.dart';
|
||||
@@ -14,8 +14,8 @@ class AccountBloc extends Bloc<AccountEvent, AccountState> {
|
||||
final CustomerRepository customerRepository;
|
||||
bool loggedIn = false;
|
||||
AccountBloc({this.customerRepository}) : super(AccountInitial()) {
|
||||
if ( Auth().userLoggedIn != null ) {
|
||||
customerRepository.customer = Auth().userLoggedIn;
|
||||
if ( Cache().userLoggedIn != null ) {
|
||||
customerRepository.customer = Cache().userLoggedIn;
|
||||
loggedIn = true;
|
||||
}
|
||||
}
|
||||
@@ -34,7 +34,7 @@ class AccountBloc extends Bloc<AccountEvent, AccountState> {
|
||||
customerRepository.customer = event.customer;
|
||||
yield AccountLoggedIn();
|
||||
} else if (event is AccountLogout) {
|
||||
await Auth().logout();
|
||||
await Cache().logout();
|
||||
customerRepository.customer = null;
|
||||
loggedIn = false;
|
||||
yield AccountLoggedOut();
|
||||
|
||||
@@ -92,9 +92,7 @@ class CustomExerciseFormBloc extends FormBloc<String, String> {
|
||||
exerciseRepository.rmWathen =
|
||||
100 * weight / (48.8 + 53.8 * pow(e, -0.075 * repeat));
|
||||
rmWathenField.updateValue(exerciseRepository.rmWathen.toStringAsFixed(1));
|
||||
double average = (exerciseRepository.rmWendler + exerciseRepository.rmWathen +
|
||||
exerciseRepository.rmMayhew + exerciseRepository.rmOconner +
|
||||
exerciseRepository.rmMcglothlin)/4;
|
||||
double average = (exerciseRepository.rmWendler + exerciseRepository.rmOconner)/2;
|
||||
rmAverageField.updateValue(average.toStringAsFixed(1));
|
||||
rm90Field.updateValue((average*0.9).toStringAsFixed(1));
|
||||
rm80Field.updateValue((average*0.8).toStringAsFixed(1));
|
||||
|
||||
@@ -0,0 +1,133 @@
|
||||
import 'package:aitrainer_app/repository/exercise_repository.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter_form_bloc/flutter_form_bloc.dart';
|
||||
|
||||
class ExerciseControlFormBloc extends FormBloc<String, String> {
|
||||
final ExerciseRepository exerciseRepository;
|
||||
int step = 1;
|
||||
final double percentToCalculate;
|
||||
|
||||
final initialRMField = TextFieldBloc(
|
||||
);
|
||||
|
||||
final quantity1Field = TextFieldBloc(
|
||||
);
|
||||
|
||||
final unitQuantity1Field = TextFieldBloc(
|
||||
);
|
||||
|
||||
final quantity2Field = TextFieldBloc(
|
||||
);
|
||||
|
||||
final unitQuantity2Field = TextFieldBloc(
|
||||
);
|
||||
|
||||
final quantity3Field = TextFieldBloc(
|
||||
);
|
||||
|
||||
final unitQuantity3Field = TextFieldBloc(
|
||||
);
|
||||
|
||||
|
||||
|
||||
ExerciseControlFormBloc({this.exerciseRepository, this.percentToCalculate}) {
|
||||
addFieldBlocs(fieldBlocs: [
|
||||
initialRMField,
|
||||
quantity1Field,
|
||||
unitQuantity1Field,
|
||||
quantity2Field,
|
||||
unitQuantity2Field,
|
||||
quantity3Field,
|
||||
unitQuantity3Field,
|
||||
|
||||
]);
|
||||
|
||||
initialRMField.updateInitialValue(calculate1RM(percent75: false).toStringAsFixed(0));
|
||||
unitQuantity1Field.updateInitialValue(calculate1RM(percent75: true).toStringAsFixed(0));
|
||||
unitQuantity2Field.updateInitialValue(calculate1RM(percent75: true).toStringAsFixed(0));
|
||||
unitQuantity3Field.updateInitialValue(calculate1RM(percent75: true).toStringAsFixed(0));
|
||||
|
||||
quantity1Field.onValueChanges(onData: (previous, current) async* {
|
||||
exerciseRepository.setQuantity(current.valueToDouble);
|
||||
});
|
||||
|
||||
unitQuantity1Field.onValueChanges(onData: (previous, current) async* {
|
||||
exerciseRepository.setUnitQuantity(current.valueToDouble);
|
||||
});
|
||||
quantity2Field.onValueChanges(onData: (previous, current) async* {
|
||||
exerciseRepository.setQuantity(current.valueToDouble);
|
||||
});
|
||||
|
||||
unitQuantity2Field.onValueChanges(onData: (previous, current) async* {
|
||||
exerciseRepository.setUnitQuantity(current.valueToDouble);
|
||||
});
|
||||
quantity3Field.onValueChanges(onData: (previous, current) async* {
|
||||
exerciseRepository.setQuantity(current.valueToDouble);
|
||||
});
|
||||
|
||||
unitQuantity3Field.onValueChanges(onData: (previous, current) async* {
|
||||
exerciseRepository.setUnitQuantity(current.valueToDouble);
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
void onLoading() {
|
||||
step = 1;
|
||||
super.onLoading();
|
||||
}
|
||||
|
||||
@override
|
||||
void onSubmitting() async {
|
||||
print("on Submitting Custom form");
|
||||
try {
|
||||
emitLoading(progress: 30);
|
||||
if ( step == 1) {
|
||||
|
||||
//unitQuantity2Field.updateInitialValue(calculate1RM(percent75: true).toStringAsFixed(0));
|
||||
//unitQuantity3Field.updateInitialValue(calculate1RM(percent75: true).toStringAsFixed(0));
|
||||
step = 2;
|
||||
} else if ( step == 2) {
|
||||
//unitQuantity3Field.updateInitialValue(calculate1RM(percent75: true).toStringAsFixed(0));
|
||||
step = 3;
|
||||
} else if ( step == 3 ) {
|
||||
//updatedRMField.updateInitialValue(calculate1RM(percent75: false).toStringAsFixed(0));
|
||||
}
|
||||
|
||||
//await exerciseRepository.addExercise();
|
||||
|
||||
emitSuccess(canSubmitAgain: true);
|
||||
} on Exception catch (ex) {
|
||||
emitFailure(failureResponse: ex.toString());
|
||||
}
|
||||
}
|
||||
|
||||
double calculate1RM({bool percent75}) {
|
||||
if (exerciseRepository.exercise == null) {
|
||||
exerciseRepository.getLastExercise();
|
||||
}
|
||||
double weight = exerciseRepository.exercise.unitQuantity;
|
||||
double repeat = exerciseRepository.exercise.quantity;
|
||||
if ( weight == 0 || repeat == 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
double rmWendler = weight * repeat * 0.0333 + weight;
|
||||
double rmOconner = weight * (1 + repeat / 40);
|
||||
double average = (rmWendler + rmOconner) / 2;
|
||||
|
||||
return percent75 ? average * this.percentToCalculate : average;
|
||||
}
|
||||
|
||||
//@override
|
||||
Future<void> close() {
|
||||
initialRMField.close();
|
||||
quantity1Field.close();
|
||||
unitQuantity1Field.close();
|
||||
quantity2Field.close();
|
||||
unitQuantity2Field.close();
|
||||
quantity3Field.close();
|
||||
unitQuantity3Field.close();
|
||||
|
||||
return super.close();
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,10 @@
|
||||
import 'package:aitrainer_app/bloc/account/account_bloc.dart';
|
||||
import 'package:aitrainer_app/model/auth.dart';
|
||||
import 'package:aitrainer_app/model/cache.dart';
|
||||
import 'package:aitrainer_app/repository/user_repository.dart';
|
||||
import 'package:aitrainer_app/util/common.dart';
|
||||
import 'package:flutter_form_bloc/flutter_form_bloc.dart';
|
||||
|
||||
class LoginFormBloc extends FormBloc<String, String> {
|
||||
class LoginFormBloc extends FormBloc<String, String> with Common {
|
||||
final AccountBloc accountBloc;
|
||||
final UserRepository userRepository;
|
||||
|
||||
@@ -40,18 +40,18 @@ class LoginFormBloc extends FormBloc<String, String> {
|
||||
void onSubmitting() async {
|
||||
try {
|
||||
emitLoading(progress: 30);
|
||||
if ( ! Common.validateEmail(userRepository)) {
|
||||
emailField.addFieldError(Common.EMAIL_ERROR, isPermanent: true);
|
||||
if ( ! validateEmail(userRepository)) {
|
||||
emailField.addFieldError(EMAIL_ERROR, isPermanent: true);
|
||||
|
||||
emitFailure(failureResponse: Common.EMAIL_ERROR);
|
||||
} else if ( ! Common.validatePassword(userRepository)) {
|
||||
passwordField.addFieldError(Common.PASSWORD_ERROR, isPermanent: true);
|
||||
emitFailure(failureResponse: Common.PASSWORD_ERROR);
|
||||
emitFailure(failureResponse: EMAIL_ERROR);
|
||||
} else if ( ! validatePassword(userRepository)) {
|
||||
passwordField.addFieldError( PASSWORD_ERROR, isPermanent: true);
|
||||
emitFailure(failureResponse: PASSWORD_ERROR);
|
||||
} else {
|
||||
// Emit either Loaded or Error
|
||||
await userRepository.getUser();
|
||||
emitSuccess(canSubmitAgain: false);
|
||||
accountBloc.add(AccountLogInFinished(customer: Auth().userLoggedIn));
|
||||
accountBloc.add(AccountLogInFinished(customer: Cache().userLoggedIn));
|
||||
}
|
||||
} on Exception catch (ex) {
|
||||
emitFailure(failureResponse: ex.toString());
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import 'package:aitrainer_app/model/auth.dart';
|
||||
import 'package:aitrainer_app/model/cache.dart';
|
||||
import 'package:aitrainer_app/repository/user_repository.dart';
|
||||
import 'package:aitrainer_app/util/common.dart';
|
||||
import 'package:flutter_form_bloc/flutter_form_bloc.dart';
|
||||
import 'account/account_bloc.dart';
|
||||
|
||||
class RegistrationFormBloc extends FormBloc<String, String> {
|
||||
class RegistrationFormBloc extends FormBloc<String, String> with Common {
|
||||
final AccountBloc accountBloc;
|
||||
final emailField = TextFieldBloc(
|
||||
validators: [
|
||||
@@ -38,18 +38,18 @@ class RegistrationFormBloc extends FormBloc<String, String> {
|
||||
void onSubmitting() async {
|
||||
try {
|
||||
emitLoading(progress: 30);
|
||||
if ( ! Common.validateEmail(userRepository)) {
|
||||
emailField.addFieldError(Common.EMAIL_ERROR, isPermanent: true);
|
||||
if ( ! validateEmail(userRepository)) {
|
||||
emailField.addFieldError(EMAIL_ERROR, isPermanent: true);
|
||||
|
||||
emitFailure(failureResponse: Common.EMAIL_ERROR);
|
||||
} else if ( ! Common.validatePassword(userRepository)) {
|
||||
passwordField.addFieldError(Common.PASSWORD_ERROR, isPermanent: true);
|
||||
emitFailure(failureResponse: Common.PASSWORD_ERROR);
|
||||
emitFailure(failureResponse: EMAIL_ERROR);
|
||||
} else if ( ! validatePassword(userRepository)) {
|
||||
passwordField.addFieldError(PASSWORD_ERROR, isPermanent: true);
|
||||
emitFailure(failureResponse: PASSWORD_ERROR);
|
||||
} else {
|
||||
// Emit either Loaded or Error
|
||||
await userRepository.addUser();
|
||||
emitSuccess(canSubmitAgain: false);
|
||||
accountBloc.add(AccountLogInFinished(customer: Auth().userLoggedIn));
|
||||
accountBloc.add(AccountLogInFinished(customer: Cache().userLoggedIn));
|
||||
}
|
||||
} on Exception catch (ex) {
|
||||
emitFailure(failureResponse: ex.toString());
|
||||
|
||||
Reference in New Issue
Block a user