workouttest_app/lib/bloc/settings/settings_bloc.dart
2020-09-19 08:09:43 +02:00

77 lines
1.9 KiB
Dart

import 'dart:async';
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:bloc/bloc.dart';
import 'package:equatable/equatable.dart';
import 'package:flutter/cupertino.dart';
import 'package:meta/meta.dart';
part 'settings_event.dart';
part 'settings_state.dart';
class SettingsBloc extends Bloc<SettingsEvent, SettingsState> {
String language;
Locale _locale;
BuildContext context;
SettingsBloc({this.context}) : super(SettingsInitial());
void setLocale(Locale locale) {
_locale = locale;
}
Locale getLocale() {
return _locale;
}
@override
Stream<SettingsState> mapEventToState(
SettingsEvent event,
) async* {
if (event is SettingsChangeLanguage) {
yield SettingsLoading();
await _changeLang( event.language);
yield SettingsReady(_locale);
} else if ( event is SettingsGetLanguage) {
await AppLanguage().fetchLocale();
_locale = AppLanguage().appLocal;
yield SettingsReady(_locale);
}
}
Future<void> _changeLang( String lang ) async{
print("_change to $lang");
switch ( lang ) {
case "English":
case "en":
case "Angol":
_locale = Locale('en');
break;
case "Hungarian":
case "Magyar":
case "hu":
_locale = Locale('hu');
break;
}
this.language = lang;
AppLanguage().changeLanguage(_locale);
await loadLang();
}
Future<void> loadLang() async{
if ( _locale != null ) {
print(" -- Loading lang $_locale");
if (context != null) {
AppLocalizations.of(context).setLocale(_locale);
await AppLocalizations.of(context).load();
} else {
print("no context, does not load");
}
} else {
print("no locale, does not load");
}
}
}