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/model/cache.dart'; import 'package:aitrainer_app/util/trans.dart'; import 'package:aitrainer_app/widgets/app_bar_min.dart'; import 'package:aitrainer_app/widgets/bottom_nav.dart'; import 'package:flutter/material.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:toggle_switch/toggle_switch.dart'; // ignore: must_be_immutable class SettingsPage extends StatelessWidget with Trans { @override Widget build(BuildContext context) { // ignore: close_sinks SettingsBloc settingsBloc = BlocProvider.of(context); settingsBloc.setLocale(AppLanguage().appLocal); settingsBloc.context = context; setContext(context); MenuBloc menuBloc = BlocProvider.of(context); return Scaffold( appBar: AppBarMin(), body: Container( decoration: BoxDecoration( image: DecorationImage( image: AssetImage('asset/image/WT_light_background.png'), fit: BoxFit.cover, alignment: Alignment.center, ), ), child: Form( child: BlocConsumer(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) { //LoadingDialog.show(context); } else if (state is SettingsInitial) { return settingsUI(context, settingsBloc, menuBloc); } else if (state is SettingsReady) { //LoadingDialog.hide(context); 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: [ ListTile( leading: Icon(Icons.language), subtitle: Text(t("Change App Language")), title: DropdownButton( value: settingsBloc.getLocale() == Locale('en') ? t("English") : t("Hungarian"), items: [t("English"), t("Hungarian")].map>((String value) { return DropdownMenuItem( value: value, child: Text(value), ); }).toList(), onChanged: (String lang) => { settingsBloc.add(SettingsChangeLanguage(language: lang)), })), getServer(), ]); } ListTile getServer() { if (Cache().userLoggedIn.admin != 1) { return ListTile( title: Container(), ); } return ListTile( leading: Icon(Icons.data_usage_sharp), subtitle: Text("For Test purpuses select Test-Server. After that please restart the the App"), title: ToggleSwitch( minWidth: 120.0, minHeight: 30.0, fontSize: 14.0, initialLabelIndex: Cache().liveServer ? Cache().testEnvironment == "1" ? 1 : 0 : 1, activeBgColor: Colors.indigo, activeFgColor: Colors.white, inactiveBgColor: Colors.white60, inactiveFgColor: Colors.grey[900], labels: [t('Live-Server'), t('Test-Server')], onToggle: (index) { Cache().setServer(index == 0); }, ), ); } }