Flutter字符串规范化插件ens_normalize的使用
Flutter字符串规范化插件ens_normalize的使用
标题
ENS Normalize Dart
内容
- Dart 实现:ENSIP-115 - ENS 名称规范化标准的 Dart 实现。
- 维护团队:由 Variance 团队维护。
- 测试通过:通过官方验证测试,达到 1% 的覆盖率。
- 参考实现:JavaScript 实现版本 1.9.0 和 Python 实现版本 3.0.7。
开始使用
dart pub add ens_normalize
使用示例
import 'package:ens_normalize/ens_normalize.dart';
void main() async {
ENSNormalize ensn = await ENSNormalize.getInstance(); // 在单独的 Isolate 中解析规范化
// 或者
ENSNormalize ensn = ENSNormalize(); // 同步进行规范化
ensn.normalize('Nick.ETH');
// nick.eth
ensn.isNormalizable('Nick.ETH');
// true
ensn.cure('Nick?.ETH');
// nick.eth
ensn.beautify('1️⃣2⃣.eth');
// 1️⃣2️⃣.eth
ensn.tokenize('Nàme🧙♂.eth');
// [
// Instance of 'TokenMapped',
// Instance of 'TokenNFC',
// Instance of 'TokenValid',
// Instance of 'TokenDisallowed',
// Instance of 'TokenEmoji',
// Instance of 'TokenStop',
// Instance of 'TokenValid'
// ]
ensn.normalizations('Nàme🧙♂️.eth');
// [
// NormalizableSequence(code="NormalizableSequenceType", index=0, sequence="N", suggested="n"),
// NormalizableSequence(code="NormalizableSequenceType", index=1=1, sequence="🧙♂️", suggested="🧙♂")
// ]
ensn.ensProcess(
"Nàme🧙♂️1⃣.eth",
doNormalize: true,
doBeautify: true,
doTokenize: true,
doNormalizations: true,
doCure: true,
);
// Instance of 'ENSProcessResult'
}
示例代码
import 'package:ens_normalize/ens_normalize.dart';
void main() async {
ENSNormalize ensn = ENSNormalize();
final normalized = ensn.normalize('Nick.ETH');
print(normalized); // nick.eth
final isNormalizable = ensn.isNormalizable('Nick.ETH');
print(isNormalizable); // true
final cured = ensn.cure('Nick?.ETH');
print(cured); // nick.eth
final beautified = ensn.beautify('1️⃣2⃣.eth');
print(beautified); // e️⃣2️⃣.eth
final tokens = ensn.tokenize('💩Raffy.eth_');
List toks = [];
tokens
.sublist(0, tokens.indexWhere((e) => e.type == "stop"))
.forEach((e) => toks.addAll(e.cps));
print(toks);
// [
// Instance of 'TokenMapped',
// Instance of 'TokenNFC',
// Instance of 'TokenValid',
// Instance of 'TokenDisallowed',
// Instance of 'TokenEmoji',
// Instance of 'TokenStop',
// Instance of 'TokenValid']
final normalizations = ensn.normalizations('Nàme🧙♂️.eth');
print(normalizations);
// [
// NormalizableSequence(code="NormalizableSequenceType", index=0, sequence="N", suggested="n"),
// NormalizableSequence(code="NormalizableSequenceType", index=1=1, sequence="🧙♂️", suggested="🧙♂")
// ]
final ensProcessResult = ensn.ensProcess(
"Nàme🧙♂️1⃣.eth",
doNormalize: true,
doBeautify: true,
doTokenize: true,
doNormalizations: true,
doCure: true,
);
print(ensProcessResult); // Instance of 'ENSProcessResult'
final splitted = ensn.split(' 💩Raffy.eth_');
print(splitted); // [Instance of 'TokenSplit', Instance of 'TokenSplit']
// [{
// tokens: List<Tokens>,
// output: List<int>,
// emoji: bool
// },
// {
// tokens: List<Tokens>,
// output: List<int>,
// emoji: bool
// }]
}
更多关于Flutter字符串规范化插件ens_normalize的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter字符串规范化插件ens_normalize的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用ens_normalize
插件来对字符串进行规范化的示例代码。这个插件可能用于处理各种字符串规范化任务,比如去除空格、转换大小写等。不过,由于ens_normalize
并非一个广为人知的Flutter插件,我会假设它具有一些常见的字符串处理功能,并提供一个类似的示例。如果你具体知道它的API,请根据实际情况调整代码。
首先,确保你已经在pubspec.yaml
文件中添加了ens_normalize
依赖(假设它存在,且名字正确):
dependencies:
flutter:
sdk: flutter
ens_normalize: ^latest_version # 替换为实际版本号
然后,运行flutter pub get
来安装依赖。
接下来,在你的Dart文件中导入ens_normalize
并使用它:
import 'package:flutter/material.dart';
import 'package:ens_normalize/ens_normalize.dart'; // 假设这是正确的导入路径
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('String Normalization Example'),
),
body: Center(
child: NormalizeStringExample(),
),
),
);
}
}
class NormalizeStringExample extends StatefulWidget {
@override
_NormalizeStringExampleState createState() => _NormalizeStringExampleState();
}
class _NormalizeStringExampleState extends State<NormalizeStringExample> {
String originalString = " Hello, World! ";
String normalizedString = "";
void normalizeString() {
// 假设ensNormalize是一个静态方法,用于规范化字符串
// 这里使用假设的方法名normalize,实际使用时请查阅文档
normalizedString = EnsNormalize.normalize(originalString);
// 假设normalize方法会去除空格并转换为小写
// normalizedString 可能会变成 "helloworld"
setState(() {});
}
@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('Original String: "$originalString"'),
ElevatedButton(
onPressed: normalizeString,
child: Text('Normalize String'),
),
SizedBox(height: 20),
Text('Normalized String: "$normalizedString"'),
],
);
}
}
注意:
- 上述代码中的
EnsNormalize.normalize
方法是一个假设的方法。你需要查阅ens_normalize
插件的实际文档,了解如何调用其提供的字符串规范化功能。 - 如果
ens_normalize
插件没有提供静态方法,可能需要实例化一个对象来调用其方法。 - 如果
ens_normalize
插件具有更多功能(比如只去除前后空格、转换为大写等),你可以根据文档扩展上述示例。
由于ens_normalize
插件的具体实现和API未知,上述代码仅作为一个假设的示例。在实际使用时,请参考该插件的官方文档。如果ens_normalize
实际上并不存在,你可能需要寻找一个类似的Flutter字符串处理插件,或者自己实现所需的字符串规范化功能。