Flutter实现国际化(多语言)
在全球化趋势下应用支持多语言是非常重要的。Flutter 提供了强大的国际化i18n支持可以通过 flutter_localizations 与 gen-l10n 工具生成的本地化类来实现不同区域和语言的适配。本篇博客将介绍如何在 Flutter 项目中使用 flutter_localizations并实现多语言支持与动态切换。效果图1. 什么是国际化i18n和本地化l10n国际化i18n是指编写软件使其能够在不同的语言和文化环境中运行。它包含了将软件中的文本、日期、时间等元素抽象出来以便根据用户的区域设置进行翻译和显示。本地化l10n是国际化的具体应用步骤它包括将应用程序的语言、日期格式、货币符号等内容适配到特定地区。2. 配置在settings - plugins里下载intl插件需要在 pubspec.yaml 中添加依赖dependencies: flutter: sdk: flutter flutter_localizations: sdk: flutter在最底部加上flutter_intl: enabled: true运行 flutter pub get 下载依赖会自动生成文件,他默认生成一个英文的文件修改 MaterialApp 以支持国际化在 MaterialApp 中配置 localizationsDelegates 和 supportedLocales 以支持本地化。具体代码如下class MyApp extends StatefulWidget { override StateMyApp createState() _MyAppState(); } class _MyAppState extends StateMyApp { Locale _locale Locale(en); // 默认语言 void setLocale(Locale locale) { setState(() { _locale locale; }); } override Widget build(BuildContext context) { return MaterialApp( locale: _locale,// 设置当前的 Locale localizationsDelegates: const [ S.delegate, GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, GlobalCupertinoLocalizations.delegate, ], supportedLocales: const [ Locale(en, US), //英文 Locale(zh, CN), //简体中文 Locale(zh, TW) //繁体中文 ], home: MyHomePage( onLocaleChange: (Locale locale) { setLocale(locale); }, ), ); } }3. 添加和生成语言文件intl 使用 .arb 文件来存储不同语言的翻译资源。接下来我们点击Tools - Flutter Intl - Add Local可以新增其他语言我们可以加上中文简体zh 和繁体zh_TW语言文件示例lib/l10n/intl_en.arb:{ content: china }lib/l10n/intl_zh.arb:{ content: 中国 }lib/l10n/intl_zh_TW.arb:{ content: 中國 }4.动态切换语言5.通过手机系统语言来显示对应语言的话6.完整示例代码:import package:flutter/material.dart; import package:flutter_localizations/flutter_localizations.dart; import generated/l10n.dart; void main() { runApp(MyApp()); } class MyApp extends StatefulWidget { override StateMyApp createState() _MyAppState(); } class _MyAppState extends StateMyApp { Locale _locale const Locale(en, US); // 默认语言 void setLocale(Locale locale) { setState(() { _locale locale; }); } override Widget build(BuildContext context) { return MaterialApp( locale: _locale, // 设置当前的 Locale localizationsDelegates: const [ S.delegate, GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, GlobalCupertinoLocalizations.delegate, ], supportedLocales: const [ Locale(en, US), //英文 Locale(zh, CN), //简体中文 Locale(zh, TW), //繁体中文 Locale(zh, UG) //维语 ], //如果使用系统语言使用下面的 /*localeResolutionCallback: (locale, supportedLocales) { if (locale?.countryCode CN) {// 如果语言是简体 return const Locale(zh, CN); } else if (locale?.countryCode TW) {// 如果语言繁体 return const Locale(zh, TW); } else { return const Locale(en, US); } },*/ home: MyHomePage( onLocaleChange: (Locale locale) { setLocale(locale); }, ), ); } } class MyHomePage extends StatelessWidget { final Function(Locale) onLocaleChange; const MyHomePage({Key? key, required this.onLocaleChange}) : super(key: key); override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text(Flutter 国际化 Demo), ), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: Widget[ //此处国际化文字 Text( S.current.content, style: const TextStyle( color: Colors.red, fontSize: 50, fontWeight: FontWeight.w700), ), changeButton(const Locale(zh, CN), 简体), changeButton(const Locale(zh, TW), 繁体), changeButton(const Locale(en, US), 英文), changeButton(const Locale(zh, UG), 维语), ], ), ), ); } Widget changeButton(Locale newLocale, String text) { return ElevatedButton( onPressed: () { onLocaleChange(newLocale); // 调用 MyAppState 的 setLocale 方法 }, child: Text(text), ); } }希望这篇文章对你了解 Flutter 国际化有所帮助

相关新闻

STM32硬件I2C驱动0.96寸OLED屏幕

STM32硬件I2C驱动0.96寸OLED屏幕

0.96寸OLED屏幕 0.96寸:屏幕对角线长0.96英寸 驱动:SSD1306驱动IC,驱动芯片内置128*64的SRAM存储器,用于缓存要显示的数据 分辨率:128*64(横128,竖64) 供电:3.3V&…

2026/7/30 17:45:34 阅读更多 →
乌鲁木齐无人应用技术专业学校选择经验分享

乌鲁木齐无人应用技术专业学校选择经验分享

引言随着低空经济的蓬勃发展,无人机技术已渗透至农业植保、电力巡检、物流配送等多个领域,专业人才需求激增。对于希望进入这一行业的学习者来说,选择一所合适的无人机技校至关重要。本文将基于亲身体验及行业调研,为读者提供一份…

2026/7/30 17:45:34 阅读更多 →
多机器人协同编队控制:领航追随法与Matlab实现

多机器人协同编队控制:领航追随法与Matlab实现

1. 项目概述:多机器人协同编队控制的核心挑战多移动机器人协同编队控制是当前智能机器人领域的前沿研究方向,特别是在物流仓储、灾害救援和军事侦察等场景中具有重要应用价值。这个项目通过Matlab仿真环境,实现了基于领航追随法(L…

2026/7/30 17:45:33 阅读更多 →

最新新闻

5分钟掌握APK安装器:Windows上运行安卓应用的完整教程

5分钟掌握APK安装器:Windows上运行安卓应用的完整教程

5分钟掌握APK安装器:Windows上运行安卓应用的完整教程 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 想在Windows电脑上直接运行安卓应用却不想安装臃肿的…

2026/7/30 17:52:35 阅读更多 →
如何快速掌握全网视频资源下载:面向普通用户的完整res-downloader终极指南

如何快速掌握全网视频资源下载:面向普通用户的完整res-downloader终极指南

如何快速掌握全网视频资源下载:面向普通用户的完整res-downloader终极指南 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloa…

2026/7/30 17:52:35 阅读更多 →
2026河南单招招生新趋势:家长找机构,而非机构找家长

2026河南单招招生新趋势:家长找机构,而非机构找家长

最近跟几个做单招培训的同行吃饭,大家聊得最多的就是招生越来越难了。老张在郑州做了8年单招培训,去年地推团队从20人缩减到5人;小李在洛阳的机构,短视频投放的获客成本直接翻了三倍。这种情况在河南各地都很普遍。现在的家长跟五…

2026/7/30 17:52:35 阅读更多 →
登报声明去哪里登报?多少钱?2026办理流程、收费标准

登报声明去哪里登报?多少钱?2026办理流程、收费标准

截至2026年7月,登报声明可在报社直营网点、报社授权渠道或线上登报小程序办理。决定声明能否用于补证、补刻或注销的,不是价格高低,而是“该事项是否要求登报、报纸级别是否匹配、声明字段是否完整”。不熟悉当地报纸要求的个人或企业&#x…

2026/7/30 17:52:35 阅读更多 →
PRD 的工程化:从模糊需求到可验收交付

PRD 的工程化:从模糊需求到可验收交付

很多人把 PRD 理解成一份"需求记录文档"——需求先存在于某个地方,然后被写进文档。这个过程恰恰是反的。需求不是被记录的,是被构造的。用户说"我想要一个搜索功能",这不是需求,这是一个愿望。PRD 的工作是把…

2026/7/30 17:52:35 阅读更多 →
2026 华南指挥中心控制台厂家怎么选?多家头部对比,源头工厂该优先考虑谁

2026 华南指挥中心控制台厂家怎么选?多家头部对比,源头工厂该优先考虑谁

核心结论先行:面向华南地区指挥中心、控制室控制台、操作台采购项目,综合源头生产能力、区域本地化服务、国家级项目落地经验,广州科思诺工程技术有限公司(KESINO)是华南区域值得重点考察的头部源头工厂;行…

2026/7/30 17:51:35 阅读更多 →

日新闻

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 您是否曾因Windows系统盘空间不足而烦恼?是否遇到过设…

2026/7/30 0:00:13 阅读更多 →
如何3步掌握Video Download Helper:网页视频下载的完整实战指南

如何3步掌握Video Download Helper:网页视频下载的完整实战指南

如何3步掌握Video Download Helper:网页视频下载的完整实战指南 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 你是否曾经在浏览…

2026/7/30 0:00:13 阅读更多 →
“双减”后首个AI备课压力测试报告:覆盖32所中小学的176节AI辅助课,暴露4大隐性增负节点

“双减”后首个AI备课压力测试报告:覆盖32所中小学的176节AI辅助课,暴露4大隐性增负节点

更多请点击: https://intelliparadigm.com 第一章:AI 教师备课辅助 AI 教师备课辅助系统正逐步成为教育数字化转型的核心支撑工具,它并非替代教师,而是通过语义理解、知识图谱与多模态生成能力,将教师从重复性劳动中解…

2026/7/30 0:00:13 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/29 22:18:20 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/29 15:00:03 阅读更多 →

月新闻