42 lines
974 B
Dart
42 lines
974 B
Dart
import 'package:flutter/material.dart';
|
|
|
|
enum AppLanguage { zh, en }
|
|
|
|
extension AppLanguageCopy on AppLanguage {
|
|
String get code => switch (this) {
|
|
AppLanguage.zh => 'zh',
|
|
AppLanguage.en => 'en',
|
|
};
|
|
|
|
String get compactLabel => switch (this) {
|
|
AppLanguage.zh => '中',
|
|
AppLanguage.en => 'EN',
|
|
};
|
|
|
|
String get buttonLabel => switch (this) {
|
|
AppLanguage.zh => '中 / EN',
|
|
AppLanguage.en => 'EN / 中',
|
|
};
|
|
|
|
static AppLanguage fromJsonValue(String? value) {
|
|
return AppLanguage.values.firstWhere(
|
|
(item) => item.name == value,
|
|
orElse: () => AppLanguage.zh,
|
|
);
|
|
}
|
|
}
|
|
|
|
AppLanguage _activeAppLanguage = AppLanguage.zh;
|
|
|
|
AppLanguage get activeAppLanguage => _activeAppLanguage;
|
|
|
|
Locale get activeAppLocale => Locale(_activeAppLanguage.code);
|
|
|
|
void setActiveAppLanguage(AppLanguage language) {
|
|
_activeAppLanguage = language;
|
|
}
|
|
|
|
String appText(String zh, String en) {
|
|
return _activeAppLanguage == AppLanguage.zh ? zh : en;
|
|
}
|