56 lines
1.3 KiB
Dart
56 lines
1.3 KiB
Dart
import 'dart:async';
|
|
|
|
import 'package:aitrainer_app/localization/app_language.dart';
|
|
import 'package:aitrainer_app/localization/app_localization.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());
|
|
|
|
@override
|
|
Stream<SettingsState> mapEventToState(
|
|
SettingsEvent event,
|
|
) async* {
|
|
if (event is SettingsChangeLanguage) {
|
|
yield SettingsLoading();
|
|
await _changeLang( event.language);
|
|
yield SettingsReady(_locale);
|
|
}
|
|
}
|
|
|
|
Future<void> _changeLang( String lang ) async{
|
|
|
|
switch ( lang ) {
|
|
case "English":
|
|
case "Angol":
|
|
_locale = Locale('en');
|
|
break;
|
|
case "Hungarian":
|
|
case "Magyar":
|
|
_locale = Locale('hu');
|
|
break;
|
|
}
|
|
this.language = lang;
|
|
await loadLang();
|
|
}
|
|
|
|
Future<void> loadLang() async{
|
|
final AppLanguage appLanguage = AppLanguage();
|
|
appLanguage.changeLanguage(_locale);
|
|
if ( context != null ) {
|
|
AppLocalizations.of(context).setLocale(_locale);
|
|
await AppLocalizations.of(context).load();
|
|
}
|
|
}
|
|
}
|