You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在使用EasyLocalization包的双语言应用中实现按钮切换语言?

用EasyLocalization实现按钮切换语言

步骤说明

1. 添加切换语言的按钮组件

在需要触发语言切换的页面(比如设置页),添加对应语言的按钮,点击时执行切换逻辑。

2. 实现语言切换核心逻辑

通过EasyLocalization.of(context)!.setLocale()方法切换语言,该方法会自动更新应用locale、持久化设置(因为你配置了saveLocale: true),并触发UI重建。

3. 确保文本随语言更新

所有多语言文本使用CodegenLoader生成的tr()方法调用,比如tr('welcome'),语言切换后文本会自动刷新。


完整代码示例

切换按钮组件

class LanguageSwitcher extends StatelessWidget {
  const LanguageSwitcher({super.key});

  @override
  Widget build(BuildContext context) {
    return Row(
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        ElevatedButton(
          onPressed: () async {
            await EasyLocalization.of(context)!.setLocale(const Locale('ar'));
          },
          child: Text(tr('arabic')),
        ),
        const SizedBox(width: 16),
        ElevatedButton(
          onPressed: () async {
            await EasyLocalization.of(context)!.setLocale(const Locale('en'));
          },
          child: Text(tr('english')),
        ),
      ],
    );
  }
}

翻译文件示例(assets/translations/en.json)

{
  "arabic": "Arabic",
  "english": "English",
  "welcome": "Welcome to the app"
}

翻译文件示例(assets/translations/ar.json)

{
  "arabic": "العربية",
  "english": "الإنجليزية",
  "welcome": "مرحبًا في التطبيق"
}

关键注意点

  • 调用setLocale时必须确保上下文处于EasyLocalization的子树中(你的初始化代码已经将MyApp放在子树内,无需额外处理)。
  • saveLocale: true会自动将用户选择的语言保存到本地存储,下次启动应用时直接加载该语言。
  • 如果切换后UI未更新,检查是否有组件使用了const修饰导致无法重建,移除不必要的const即可。

内容的提问来源于stack exchange,提问作者Khaled

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 19:40:39