Initial commit — DLS lab-app Flutter project
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import '../l10n/app_strings.dart';
|
||||
|
||||
const _kLocaleKey = 'app_locale';
|
||||
|
||||
class LocaleNotifier extends StateNotifier<Locale> {
|
||||
LocaleNotifier(Locale initial) : super(initial);
|
||||
|
||||
Future<void> setLocale(Locale locale) async {
|
||||
state = locale;
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
await prefs.setString(_kLocaleKey, locale.languageCode);
|
||||
}
|
||||
|
||||
static Future<Locale> load() async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
final code = prefs.getString(_kLocaleKey) ?? 'tr';
|
||||
return Locale(code);
|
||||
}
|
||||
}
|
||||
|
||||
final localeProvider = StateNotifierProvider<LocaleNotifier, Locale>(
|
||||
(ref) => LocaleNotifier(const Locale('tr')),
|
||||
);
|
||||
|
||||
final stringsProvider = Provider<AppStrings>((ref) {
|
||||
final locale = ref.watch(localeProvider);
|
||||
return AppStrings.of(locale.languageCode);
|
||||
});
|
||||
|
||||
const supportedLocales = [
|
||||
Locale('tr'),
|
||||
Locale('en'),
|
||||
Locale('ru'),
|
||||
Locale('ar'),
|
||||
Locale('de'),
|
||||
];
|
||||
Reference in New Issue
Block a user