l10n_extensions.dart
1.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import 'dart:ui' show PlatformDispatcher;
import 'package:flutter/widgets.dart';
import 'package:get/get.dart';
import 'app_locale_resolution.dart';
import 'gen/app_localizations.dart';
export 'app_locale_resolution.dart';
export 'gen/app_localizations.dart';
/// 在 Widget build() 中通过 context 访问:context.l10n.appName
extension AppLocalizationsX on BuildContext {
AppLocalizations get l10n =>
AppLocalizations.of(this) ?? currentAppLocalizations();
}
/// 在 Controller / 无 context 场景中全局访问:l10n.appName
AppLocalizations get l10n {
final context = _safeGetContext();
final localizations = context != null ? AppLocalizations.of(context) : null;
return localizations ?? currentAppLocalizations();
}
AppLocalizations currentAppLocalizations() {
final locale = resolveAppLocale(
Get.locale ?? PlatformDispatcher.instance.locale,
AppLocalizations.supportedLocales,
);
return lookupAppLocalizations(locale);
}
BuildContext? _safeGetContext() {
try {
return Get.context;
} catch (_) {
return null;
}
}