import 'package:aitrainer_app/bloc/exercise_plan/exercise_plan_bloc.dart';
import 'package:aitrainer_app/bloc/exercise_plan_custom_form.dart';
import 'package:aitrainer_app/localization/app_language.dart';
import 'package:aitrainer_app/localization/app_localization.dart';
import 'package:aitrainer_app/repository/exercise_plan_repository.dart';
import 'package:aitrainer_app/widgets/app_bar_common.dart';
import 'package:flutter/services.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_form_bloc/flutter_form_bloc.dart';

class ExercisePlanDetailAddPage extends StatefulWidget {
  @override
  _ExercisePlanDetailAddPage createState() => _ExercisePlanDetailAddPage();
}

class _ExercisePlanDetailAddPage extends State<ExercisePlanDetailAddPage> {
  @override
  Widget build(BuildContext context) {
    // ignore: close_sinks
    final ExercisePlanBloc planBloc = ModalRoute.of(context).settings.arguments;
    final ExercisePlanRepository exercisePlanRepository = planBloc.exercisePlanRepository;

    return BlocProvider(
        create: (context) => ExercisePlanCustomerFormBloc(exercisePlanRepository: exercisePlanRepository, planBloc: planBloc),
        child: Builder(builder: (context) {
          // ignore: close_sinks
          final bloc = BlocProvider.of<ExercisePlanCustomerFormBloc>(context);

          String exerciseName = "";
          if (bloc != null) {
            exerciseName = AppLanguage().appLocal == Locale("en")
                ? bloc.exercisePlanRepository.actualPlanDetail.exerciseType.name
                : bloc.exercisePlanRepository.actualPlanDetail.exerciseType.nameTranslation;
          }

          return Form(
            autovalidate: true,
            child: Scaffold(
              resizeToAvoidBottomInset: true,
              appBar: AppBarCommonNav(),
              body: Container(
                  width: MediaQuery.of(context).size.width,
                  height: MediaQuery.of(context).size.height,
                  decoration: BoxDecoration(
                    image: DecorationImage(
                      image: AssetImage('asset/image/WT_light_background.png'),
                      fit: BoxFit.fill,
                      alignment: Alignment.center,
                    ),
                  ),
                  child: Container(
                      padding: const EdgeInsets.only(top: 25, left: 25, right: 25),
                      child: SingleChildScrollView(
                        scrollDirection: Axis.vertical,
                        child: Column(mainAxisAlignment: MainAxisAlignment.spaceAround, children: <Widget>[
                          Text(AppLocalizations.of(context).translate('Save The Exercise To The Exercise Plan'),
                              style: TextStyle(fontSize: 14, color: Colors.blueAccent)),
                          Text(
                            exerciseName,
                            style: TextStyle(fontWeight: FontWeight.bold, fontSize: 18, color: Colors.deepOrange),
                            overflow: TextOverflow.fade,
                            maxLines: 1,
                            softWrap: true,
                          ),
                          TextFieldBlocBuilder(
                            textFieldBloc: bloc.serieField,
                            textAlign: TextAlign.center,
                            style: TextStyle(fontSize: 30, color: Colors.lightBlue, fontWeight: FontWeight.bold),
                            inputFormatters: [WhitelistingTextInputFormatter(RegExp(r"[\d.]"))],
                            decoration: InputDecoration(
                              fillColor: Colors.white,
                              filled: false,
                              hintStyle: TextStyle(fontSize: 16, color: Colors.black54, fontWeight: FontWeight.w100),
                              hintText: AppLocalizations.of(context).translate("The number of the serie done with"),
                              labelStyle: TextStyle(fontSize: 16, color: Colors.lightBlue),
                              labelText: AppLocalizations.of(context).translate("Serie"),
                            ),
                          ),
                          TextFieldBlocBuilder(
                            textFieldBloc: bloc.quantityField,
                            textAlign: TextAlign.center,
                            style: TextStyle(fontSize: 30, color: Colors.lightBlue, fontWeight: FontWeight.bold),
                            inputFormatters: [WhitelistingTextInputFormatter(RegExp(r"[\d.]"))],
                            decoration: InputDecoration(
                              fillColor: Colors.white,
                              filled: false,
                              hintStyle: TextStyle(fontSize: 16, color: Colors.black54, fontWeight: FontWeight.w100),
                              hintText: AppLocalizations.of(context).translate("The number of the repeats of one serie"),
                              labelStyle: TextStyle(fontSize: 16, color: Colors.lightBlue),
                              labelText: AppLocalizations.of(context).translate("Repeats"),
                            ),
                          ),
                          TextFieldBlocBuilder(
                            textFieldBloc: bloc.weightField,
                            textAlign: TextAlign.center,
                            style: TextStyle(fontSize: 30, color: Colors.lightBlue, fontWeight: FontWeight.bold),
                            inputFormatters: [WhitelistingTextInputFormatter(RegExp(r"[\d.]"))],
                            decoration: InputDecoration(
                              fillColor: Colors.white,
                              filled: false,
                              hintStyle: TextStyle(fontSize: 16, color: Colors.black54, fontWeight: FontWeight.w100),
                              hintText: AppLocalizations.of(context).translate("The weight"),
                              labelStyle: TextStyle(fontSize: 16, color: Colors.lightBlue),
                              labelText: AppLocalizations.of(context).translate("Weight"),
                            ),
                          ),
                          Row(
                            mainAxisAlignment: MainAxisAlignment.spaceAround,
                            children: [
                              RaisedButton(
                                textColor: Colors.white,
                                color: Colors.red.shade300,
                                focusColor: Colors.white,
                                onPressed: () => {
                                  print("Remove " + bloc.exercisePlanRepository.actualPlanDetail.exerciseType.name),
                                  planBloc.add(ExercisePlanRemoveExercise(exercisePlanDetail: bloc.exercisePlanRepository.actualPlanDetail)),
                                  Navigator.of(context).pop(),
                                },
                                child: Text("Delete"), //Text(AppLocalizations.of(context).translate("Delete"), style: TextStyle(fontSize: 16),)
                              ),
                              RaisedButton(
                                  textColor: Colors.white,
                                  color: Colors.blueAccent,
                                  focusColor: Colors.white,
                                  onPressed: () => {
                                        bloc.submit(),
                                        Navigator.of(context).pop(),
                                      },
                                  child: Text(
                                    AppLocalizations.of(context).translate("Save"),
                                    style: TextStyle(fontSize: 16),
                                  )),
                            ],
                          ),
                        ]),
                      ))),
            ),
          );
        }));
  }
}