import 'package:easy_localization/easy_localization.dart' hide tr; import 'package:flutter/material.dart'; import 'package:userfront/i18n.dart'; import '../services/web_window.dart'; import 'locale_storage.dart'; import 'locale_utils.dart'; class LocaleGate extends StatefulWidget { const LocaleGate({super.key, required this.localeCode, required this.child}); final String localeCode; final Widget child; @override State createState() => _LocaleGateState(); } class _LocaleGateState extends State { @override void didChangeDependencies() { super.didChangeDependencies(); _applyLocale(); } @override void didUpdateWidget(LocaleGate oldWidget) { super.didUpdateWidget(oldWidget); if (oldWidget.localeCode != widget.localeCode) { _applyLocale(); } } Future _applyLocale() async { final normalized = normalizeLocaleCode(widget.localeCode); LocaleStorage.write(normalized); webWindow.setTitle( tr('ui.userfront.app_title'), ); if (context.locale.languageCode == normalized) { return; } await context.setLocale(Locale(normalized)); webWindow.setTitle( tr('ui.userfront.app_title'), ); } @override Widget build(BuildContext context) => widget.child; }