Flutter插件inu的使用_Inu是一个用于 Flutter 应用程序的简单本地化工具
Flutter插件inu的使用_Inu是一个用于 Flutter 应用程序的简单本地化工具
Inu 🐕 #
特性 #
Inu 是一个用于 Flutter 应用程序的简单本地化工具。它基于从包含应用程序所有字符串的结构化 YAML 文件生成的类。
每个区域文件都会生成一个区域类。
一旦生成,您就可以通过一个继承自 Inu 的类实例来访问这些字符串。
开始使用 #
所有的本地化文件应该具有相同的 YAML-map 结构。每个键的值应该包含每种语言的翻译字符串。
- 将您的本地化文件放在目录
assets/translations/
中 - 在您的 Flutter 应用中将 Inu 添加到依赖项中,使用命令
flutter pub add inu
- 运行
dart run inu:init
来首次生成区域类
使用方法 #
Inu 创建了一个名为 Inu 的抽象类,每个其他区域类都实现该类。该类是从开发过程中使用的主语言生成的。
如果您没有提供任何翻译,则会使用 Inu 类中的字符串(就像一个“回退区域”)。
类生成 #</h>
如果您向您的区域文件中添加了更多的字符串,可以运行以下命令:
dart run inu:gen_classes
或者如果您使用 just,可以运行:
just inu
Inu 在生成过程中检查区域文件的完整性。一旦发现未翻译的字符串,您可以在终端提示中立即翻译它们或跳过该过程。
一旦类已经生成,您可以通过使用 Inu 的实例作为所有字符串的容器来继续使用。
特定语言的翻译可以通过 InuLocale 枚举选择。
Inu chooseLocale() {
final String locale = Locale(Platform.localeName).languageCode;
return InuLocale.select(locale) ?? InuLocale.en_US.inu;
}
字符串插入 #
您也可以在形式为 List<String>
的参数或命名参数的 Map<String, String>
中使用字符串,并使用 String
和 Text()
扩展的 tr()
方法。
只需在您的区域文件中的字符串值中添加花括号,如下所示:
arguments: 这个字符串包含 {} 和 {}
namedArguments: 你好,我的名字是 {firstname} {surname}
然后使用 tr()
扩展的方法如下:
Text(inu.arguments).tr(args: ['有趣的', '单词']);
String greeting = inu.namedArguments.tr(namedArgs: {
'firstname' : '瑞安',
'surname' : '斯特肯'});
查看 示例 以获取 Flutter 演示应用的翻译版本!
区域文件的结构 #
您应该按简单的映射形式(没有列表或纯文本)来组织您的文件。所有文件的映射结构必须相同。
英语区域文件 #
title: 应用
section1:
undersection1:
key1 : 值
key2: "很棒的值"
anotherKey : 另一个值
section2:
supriseKey: ""吓人的!"
arguments: 这个字符串包含 {} 和 {}
namedArguments: 你好,我的名字是 {firstname} {surname}
end: 这是结束
德语区域文件 #
title: 应用
section1:
undersection1:
key1 : 值
key2: "很棒的值"
anotherKey : 另一个值
section2:
supriseKey: ""吓人的!"
arguments: 这个字符串包含 {} 和 {}
namedArguments: 你好,我的名字是 {firstname} {surname}
end: 这是结束
示例代码
import 'dart:io';
import 'package:flutter/material.dart';
import 'inu_classes/de-DE.g.dart';
import 'inu_classes/en-US.g.dart';
import 'inu_classes/inu.g.dart';
late final Inu inu;
Inu chooseLocale() {
final String langCode =
Locale(Platform.localeName).languageCode.replaceAll('_', '-');
switch (langCode) {
case 'de-DE':
return DeDE();
default:
return EnUS();
}
}
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
inu = chooseLocale();
return MaterialApp(
title: inu.general.appTitle,
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: MyHomePage(title: inu.general.appBar),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
final String title;
[@override](/user/override)
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
inu.mainPage.buttonCounterMsg,
),
Text(
'$_counter',
style: Theme.of(context).textTheme.headlineMedium,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: inu.mainPage.increment,
child: const Icon(Icons.add),
),
);
}
}
更多关于Flutter插件inu的使用_Inu是一个用于 Flutter 应用程序的简单本地化工具的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter插件inu的使用_Inu是一个用于 Flutter 应用程序的简单本地化工具的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中,如果你遇到“功能未定义插件inu
”的错误,通常意味着你尝试使用了一个不存在的插件或包,或者你在代码中引用了一个未定义的插件。以下是一些可能的原因和解决方法:
1. 检查插件名称拼写
确保你在pubspec.yaml
文件中正确拼写了插件的名称。例如:
dependencies:
flutter:
sdk: flutter
inu: ^1.0.0 # 确保插件名称正确
如果inu
插件不存在,你可能会遇到错误。
2. 查找正确的插件
如果你不确定是否存在名为inu
的插件,可以在 pub.dev 上搜索相关插件。如果找不到,可能需要使用其他插件来实现你需要的功能。
3. 检查插件的导入
确保你在pubspec.yaml
文件中正确添加了插件,并且在代码中正确导入了插件。例如:
import 'package:inu/inu.dart'; // 确保导入路径正确
如果导入路径不正确,Flutter 将无法识别插件。
4. 运行flutter pub get
在添加或修改pubspec.yaml
文件后,确保运行以下命令以获取依赖项:
flutter pub get
这将下载并安装所有依赖项。
5. 检查插件版本
如果你使用的是特定版本的插件,确保该版本存在并且与你的Flutter版本兼容。你可以在pubspec.yaml
文件中指定插件的版本号。
6. 自定义插件
如果inu
是你自己开发的插件,确保它已经正确构建并发布到本地或远程仓库。你可以通过以下步骤来使用本地插件:
dependencies:
inu:
path: ../path_to_your_plugin # 指定本地路径
7. 错误信息分析
如果错误信息中提到了具体的未定义功能,检查该功能是否在插件中正确定义。你可以查看插件的文档或源代码以确认。
8. 重新启动应用
有时候,Flutter 可能需要重新启动才能正确加载插件。你可以尝试停止并重新启动应用。
9. 清理项目
如果问题仍然存在,尝试清理项目并重新构建:
flutter clean
flutter pub get
flutter run