import 'dart:ui';

import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
import 'package:diplomaticquarterapp/core/viewModels/medical/blood_sugar_view_model.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/pages/medical/my_trackers/widget/TabBarWidget.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/confirm_send_email_dialog.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:charts_flutter/flutter.dart' as charts;
import 'package:hexcolor/hexcolor.dart';

import 'AddBloodSugarPage.dart';
import 'BloodMonthly.dart';
import 'BloodYeaPage.dart';
import 'blood_sugar_weekly_page.dart';

class BloodSugarHomePage extends StatefulWidget {
  @override
  _BloodSugarHomePageState createState() => _BloodSugarHomePageState();
}

class _BloodSugarHomePageState extends State<BloodSugarHomePage>
    with SingleTickerProviderStateMixin {
  TabController _tabController;

  @override
  void initState() {
    super.initState();
    _tabController = TabController(length: 3, vsync: this);
  }

  @override
  void dispose() {
    super.dispose();
    _tabController.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return BaseView<BloodSugarViewMode>(
      onModelReady: (model) => model.getBloodSugar(),
      builder: (_, model, w) => AppScaffold(
        appBarIcons: [IconButton(
          icon: Icon(Icons.email),
          color: Colors.white,
          onPressed: () {
            showDialog(
              context: context,
              child: ConfirmSendEmailDialog(
                email: model.user.emailAddress,
                onTapSendEmail: () async{
                  GifLoaderDialogUtils.showMyDialog(context);
                  model.sendReportByEmail().then((value) {
                    GifLoaderDialogUtils.hideDialog(context);
                    if(model.state == ViewState.ErrorLocal){
                      AppToast.showErrorToast(message: model.error);
                    }else{
                      AppToast.showSuccessToast(message:TranslationBase.of(context).emailSentSuccessfully, );
                    }
                  }).catchError((e){
                    GifLoaderDialogUtils.hideDialog(context);
                    AppToast.showErrorToast(message: model.error);
                  });
                },
              ),
            );
          },
        ),],
        isShowAppBar: true,
        appBarTitle: TranslationBase.of(context).bloodSugar,
        baseViewModel: model,
        body: Scaffold(
          extendBodyBehindAppBar: true,
          appBar: TabBarWidget(tabController: _tabController,),
          body: Column(
            children: <Widget>[
              Expanded(
                child: TabBarView(
                  physics: BouncingScrollPhysics(),
                  controller: _tabController,
                  children: <Widget>[
                    BloodSugarWeeklyPage(
                      timeSeriesData: model.bloodWeekTimeSeriesData,
                      diabtecPatientResult: model.weekDiabtecPatientResult,
                      bloodSugarViewMode: model,
                    ),
                    BloodMonthlyPage(
                      timeSeriesData: model.monthTimeSeriesData,
                      diabtecPatientResult: model.monthDiabtecPatientResult,
                    ),
                    BloodYearPage(
                      timeSeriesData: model.yearTimeSeriesData,
                      diabtecPatientResult: model.yearDiabtecPatientResult,
                    )
                  ],
                ),
              )
            ],
          ),
          floatingActionButton: InkWell(
            onTap: () {
              Navigator.push(context, FadePage(page: AddBloodSugarPage(bloodSugarViewMode: model,)));
            },
            child: Container(
              width: 55,
              height: 55,
              decoration: BoxDecoration(
                  shape: BoxShape.circle, color:Theme.of(context).primaryColor),
              child: Center(
                child: Icon(
                  Icons.add,
                  color: Colors.white,
                ),
              ),
            ),
          ),
        ),
      ),
    );
  }
}
