Flutter字符串规范化插件ens_normalize的使用

发布于 1周前 作者 yibo5220 来自 Flutter

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('Ni‍ck?.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('Ni‍ck?.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"'),
      ],
    );
  }
}

注意

  1. 上述代码中的EnsNormalize.normalize方法是一个假设的方法。你需要查阅ens_normalize插件的实际文档,了解如何调用其提供的字符串规范化功能。
  2. 如果ens_normalize插件没有提供静态方法,可能需要实例化一个对象来调用其方法。
  3. 如果ens_normalize插件具有更多功能(比如只去除前后空格、转换为大写等),你可以根据文档扩展上述示例。

由于ens_normalize插件的具体实现和API未知,上述代码仅作为一个假设的示例。在实际使用时,请参考该插件的官方文档。如果ens_normalize实际上并不存在,你可能需要寻找一个类似的Flutter字符串处理插件,或者自己实现所需的字符串规范化功能。

回到顶部