Flutter 使用Intl包
2025-09-30 08:47
Flutter
0
0
0
0
标题录入
封面图
在 Flutter 中使用 `intl` 包可以实现国际化(i18n),即支持多语言。`intl` 是 Google 提供的一个用于本地化的库,通常与 `flutter_gen` 或 `generate` 工具一起使用来生成本地化类。 --- ## ✅ 一、安装依赖 首先,在 `pubspec.yaml` 文件中添加以下依赖: ```yaml dependencies: flutter: sdk: flutter intl: ^0.17.0 # 注意查看最新版本 ``` > 如果你使用的是 Flutter 3.10+,建议使用 `flutter_localizations` 和 `intl` 的组合方式。 --- ## ✅ 二、配置本地化支持 ### 1. 添加 `flutter_localizations` 依赖 ```yaml dependencies: flutter: sdk: flutter flutter_localizations: sdk: flutter intl: ^0.17.0 ``` ### 2. 在 `main.dart` 中启用本地化 ```dart import 'package:flutter/material.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'generated/l10n.dart'; // 这是自动生成的本地化类 void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( localizationsDelegates: const [ Slocalizations.delegate, GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, GlobalCupertinoLocalizations.delegate, ], supportedLocales: Slocalizations.delegate.supportedLocales, locale: const Locale('en', ''), // 默认语言 home: HomeScreen(), ); } } ``` --- ## ✅ 三、创建本地化文件 ### 1. 创建 `.arb` 文件 在项目根目录下创建一个 `lib/l10n` 文件夹,并在其中创建如下文件: - `app_en.arb` - `app_zh.arb` #### `app_en.arb`(英文): ```json { "greeting": "Hello", "welcome": "Welcome to our app!" } ``` #### `app_zh.arb`(中文): ```json { "greeting": "你好", "welcome": "欢迎使用我们的应用!" } ``` --- ## ✅ 四、生成本地化类 你可以使用 `flutter gen-l10n` 命令来自动生成本地化类。 ### 安装 `flutter_gen`(可选) 如果你还没有安装 `flutter_gen`,可以运行: ```bash flutter pub add flutter_gen --dev ``` 然后在 `pubspec.yaml` 中添加: ```yaml flutter_gen: output_dir: lib/generated locales: - en - zh ``` ### 生成代码 运行命令: ```bash flutter gen-l10n ``` 这会生成 `lib/generated/l10n.dart` 等文件。 --- ## ✅ 五、使用本地化字符串 在代码中使用: ```dart Text(S.of(context).greeting) Text(S.of(context).welcome) ``` --- ## ✅ 六、切换语言 你可以通过设置 `locale` 来切换语言: ```dart Slocalizations.delegate.setLocale(context, Locale('zh', '')); ``` 或者在 `MaterialApp` 中动态设置: ```dart MaterialApp( ... locale: _currentLocale, ) ``` --- ## ✅ 七、完整示例结构 ``` /lib /l10n app_en.arb app_zh.arb generated/ l10n.dart main.dart ``` --- ## 📌 注意事项 - `.arb` 文件必须使用 UTF-8 编码。 - 每个 `.arb` 文件必须包含相同的键(key),否则生成时会报错。 - 使用 `flutter gen-l10n` 命令前,请确保所有 `.arb` 文件已经正确编写。 --- ## ✅ 推荐工具 - [Flutter Gen](https://pub.dev/packages/flutter_gen):自动生成功能更强大。 - [IntelliJ IDEA / Android Studio](https://developer.android.com/studio):支持 `.arb` 文件的编辑和本地化预览。 --- 如果你需要我帮你生成一个完整的示例项目或解决某个具体问题,也可以告诉我!
上一篇:
Flutter 国际化常见问题
标题录入,一次不能超过6条
返回顶部
留言
留言
评论