l10n_extensions.dart 765 Bytes
import 'package:flutter/widgets.dart';
import 'package:get/get.dart';

import 'gen/app_localizations.dart';
import 'gen/app_localizations_zh.dart';

export 'gen/app_localizations.dart';

/// 在 Widget build() 中通过 context 访问:context.l10n.appName
extension AppLocalizationsX on BuildContext {
  AppLocalizations get l10n =>
      AppLocalizations.of(this) ?? AppLocalizationsZh();
}

/// 在 Controller / 无 context 场景中全局访问:l10n.appName
AppLocalizations get l10n {
  final context = _safeGetContext();
  final localizations = context != null ? AppLocalizations.of(context) : null;
  return localizations ?? AppLocalizationsZh();
}

BuildContext? _safeGetContext() {
  try {
    return Get.context;
  } catch (_) {
    return null;
  }
}