import 'package:aitrainer_app/bloc/menu/menu_bloc.dart';
import 'package:aitrainer_app/bloc/settings/settings_bloc.dart';
import 'package:aitrainer_app/localization/app_language.dart';
import 'package:aitrainer_app/localization/app_localization.dart';
import 'package:aitrainer_app/model/cache.dart';
import 'package:aitrainer_app/widgets/bottom_nav.dart';
import 'package:aitrainer_app/widgets/splash.dart';
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter_bloc/flutter_bloc.dart';



class SettingsPage extends StatelessWidget{

  @override
  Widget build(BuildContext context) {
    // ignore: close_sinks
    SettingsBloc settingsBloc = BlocProvider.of<SettingsBloc>(context);
    settingsBloc.setLocale(AppLanguage().appLocal);
    settingsBloc.context = context;

    MenuBloc menuBloc = BlocProvider.of<MenuBloc>(context);
    return Scaffold(
        appBar: AppBar(
          title: Row(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            children: <Widget>[
              Text(AppLocalizations.of(context).translate('Settings')),
              Image.asset(
                'asset/image/WT_long_logo.png',
                fit: BoxFit.cover,
                height: 65.0,
              ),
            ],
          ),
          //title: Text(AppLocalizations.of(context).translate('Settings')),
          backgroundColor: Colors.transparent,
        ),
        body: Container(
          decoration: BoxDecoration(
            image: DecorationImage(
              image: AssetImage('asset/image/WT_light_background.png'),
                fit: BoxFit.cover,
                alignment: Alignment.center,
              ),
            ),
            child: Form(
                child: BlocConsumer<SettingsBloc, SettingsState>(
                  listener: (context, state) {
                    if ( state is SettingsError ) {

                    } else if ( state is SettingsReady ) {
                      menuBloc.add(MenuRecreateTree());
                    }
                  },
                  // ignore: missing_return
                  builder: (context, state) {
                    if ( state is SettingsLoading ) {
                      return LoadingDialog();
                    } else if ( state is SettingsInitial) {
                      return settingsUI(context, settingsBloc, menuBloc);
                    } else if ( state is SettingsReady ) {
                      return settingsUI(context, settingsBloc, menuBloc);
                    } else {
                      return Container();
                    }
                  }
              ),
            ),
        ),
        bottomNavigationBar: BottomNavigator(bottomNavIndex: 4)

    );
  }

  ListView settingsUI(BuildContext context, SettingsBloc settingsBloc, MenuBloc menuBloc) {
    return ListView(
      padding: EdgeInsets.only(top: 150),
      children: <Widget>[
        ListTile(
          leading: Icon(Icons.language),
          subtitle: Text(
            AppLocalizations.of(context).translate(
              "Change App Language")),
          title: DropdownButton(

            value: settingsBloc.getLocale() == Locale('en')
              ? AppLocalizations.of(context).translate(
              "English")
              : AppLocalizations.of(context).translate(
              "Hungarian"),
            items: [AppLocalizations.of(context).translate(
              "English"), AppLocalizations.of(context)
              .translate("Hungarian")
            ]
              .map<DropdownMenuItem<String>>((String value) {
              return DropdownMenuItem<String>(
                value: value,
                child: Text(value),
              );
            }).toList(),
            onChanged: (String lang) =>
            {
              settingsBloc.add(
                SettingsChangeLanguage(language: lang)
              ),
            }
          )

        ),
        ListTile(
          leading: Icon(Icons.get_app),
          title: RaisedButton(
            child: Text("Check lang",   style: TextStyle(fontSize: 12),),
            onPressed: () => settingsBloc.add(SettingsGetLanguage()),
          )
        )
      ]
    );
  }
}