Flutter本地化自动管理插件auto_local的使用
Flutter本地化自动管理插件auto_local的使用
auto_local
是一个命令行工具,用于管理你的应用程序中的资源。该工具可以帮助你:
- 管理应用程序中的语言。
- 为每种语言生成一个 Dart 类。
- 使用 GPT 自动为所有语言添加新的文本。
- 将 SVG 代码转换为 SVG 文件。
- 为应用程序中的所有 SVG 图标生成一个类,并提供使用方法。
- 为应用程序中的所有资源生成一个类,并提供直接调用资源路径的方法。
- 管理应用程序中的
.env
文件并生成一个类以供使用。 - 更多功能…
开发者

找我
安装
使用 dart pub global
命令将此工具安装到系统中。
$ dart pub global activate auto_local
使用
如果你已经修改了 PATH
,则可以在任何本地目录中运行此工具。
$ auto_local
否则,你可以使用 pub global
命令来运行它。
$ dart pub global run auto_local
命令
auto_local
: 启动工具。
语言管理
auto_local lang <arguments>
: 管理应用程序中的语言,并为 JSON 语言文件中的键生成 Dart 类。--adg
: 使用 GPT 为所有语言自动添加新文本(需要提供 API Key)。--adm
: 手动为所有语言添加新文本。--auto
: 监听language/path/<json files>
中的更改,并更新 Dart 类。--ref
: 刷新 Dart 类文件。--ep
: 编辑语言文件的路径。--eapi
: 编辑 GPT 的 API Key。
图标管理
auto_local icons <arguments>
: 管理你的 SVG 图标,将 SVG 代码转换为 SVG 文件,并为所有图标生成 Dart 类。--add
: 添加新的 SVG 代码并将其转换为 SVG 文件。--edit
: 编辑图标的类名。--auto
: 监听icons/path/<svg files>
中的更改,并更新 Dart 类。--ep
: 编辑图标文件夹的路径。--ref
: 刷新 Dart 类文件。
环境变量管理
auto_local env <arguments>
: 用于将环境变量添加到.env
文件,并从 Dart 类中使用它们。--new
: 创建新的环境变量。--ref
: 刷新 Dart 类文件。--delete
: 删除环境变量。
资源管理
auto_local assets <arguments>
: 生成资源类,并监听资源文件夹,直接从 Dart 类中调用资源路径。--generate
: 生成资源类。--auto
: 监听assets/
中的更改,并更新 Dart 类。--ignore
: 忽略资源文件夹中的任何文件夹,因此工具不会将其添加到 Dart 类中。
示例 Demo
以下是一个简单的示例,展示如何使用 auto_local
工具进行本地化管理。
1. 安装
首先,你需要安装 auto_local
工具。
$ dart pub global activate auto_local
2. 添加语言文件
在项目中创建一个包含不同语言的 JSON 文件夹,例如 language/en.json
和 language/ar.json
。
// language/en.json
{
"app_title": "My App",
"welcome_message": "Welcome to my app!"
}
// language/ar.json
{
"app_title": "تطبيق بلدي",
"welcome_message": "مرحبا بك في تطبيقي!"
}
3. 生成 Dart 类
使用 auto_local
命令生成 Dart 类。
$ auto_local lang --auto
这将在 lib/l10n/generated_l10n.dart
中生成一个类。
// lib/l10n/generated_l10n.dart
import 'package:flutter/material.dart';
class AppLocalizations {
final Locale locale;
AppLocalizations(this.locale);
static AppLocalizations of(BuildContext context) {
return Localizations.of<AppLocalizations>(context, AppLocalizations);
}
String get app_title => locale.languageCode == 'en' ? 'My App' : 'تطبيق بلدي';
String get welcome_message => locale.languageCode == 'en' ? 'Welcome to my app!' : 'مرحبا بك في تطبيقي!';
}
4. 使用本地化类
在你的 Flutter 应用程序中使用生成的本地化类。
// main.dart
import 'package:flutter/material.dart';
import 'package:your_app_name/l10n/generated_l10n.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
localizationsDelegates: [
AppLocalizations.delegate,
],
supportedLocales: [
Locale('en'),
Locale('ar'),
],
home: MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
var localization = AppLocalizations.of(context);
return Scaffold(
appBar: AppBar(
title: Text(localization.app_title),
),
body: Center(
child: Text(localization.welcome_message),
),
);
}
}
更多关于Flutter本地化自动管理插件auto_local的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter本地化自动管理插件auto_local的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
auto_local
是一个用于 Flutter 应用本地化管理的插件,它可以帮助你自动生成和管理本地化文件,简化多语言支持的实现过程。使用 auto_local
,你可以避免手动编写和维护大量的本地化字符串,从而提高开发效率。
安装 auto_local
首先,你需要在 pubspec.yaml
文件中添加 auto_local
插件的依赖:
dependencies:
flutter:
sdk: flutter
auto_local: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来安装插件。
配置 auto_local
-
创建本地化文件: 在项目的根目录下创建一个
l10n
文件夹(或其他你喜欢的名称),并在其中创建 JSON 文件来存储不同语言的字符串。例如:l10n/en.json
(英语)l10n/es.json
(西班牙语)
JSON 文件的格式如下:
{ "hello": "Hello", "goodbye": "Goodbye" }
{ "hello": "Hola", "goodbye": "Adiós" }
-
配置
pubspec.yaml
: 在pubspec.yaml
文件中配置auto_local
插件,指定本地化文件的路径和生成代码的输出路径:flutter: uses-material-design: true generate: true auto_local: input_dir: l10n output_dir: lib/l10n
-
生成本地化代码: 运行以下命令来生成本地化代码:
flutter pub run auto_local:generate
这将在
lib/l10n
目录下生成 Dart 文件,包含所有本地化的字符串。
使用生成的本地化代码
-
在
MaterialApp
中配置本地化: 在MaterialApp
中配置生成的本地化委托和支持的 Locale:import 'package:flutter/material.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'l10n/generated/app_localizations.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', localizationsDelegates: [ AppLocalizations.delegate, GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, ], supportedLocales: [ const Locale('en', ''), // 英语 const Locale('es', ''), // 西班牙语 ], home: MyHomePage(), ); } }
-
在 UI 中使用本地化字符串: 在 UI 中使用生成的本地化字符串:
import 'package:flutter/material.dart'; import 'l10n/generated/app_localizations.dart'; class MyHomePage extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text(AppLocalizations.of(context)!.hello), ), body: Center( child: Text(AppLocalizations.of(context)!.goodbye), ), ); } }