Flutter格式化工具插件tformatter的使用

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

Flutter格式化工具插件tformatter的使用

TFormatters 是一个功能强大的Flutter/Dart包,用于常见数据类型的格式化、验证和操作,如日期、时间、货币、电话号码等。

1. 格式化

示例代码

import 'package:flutter/material.dart';
import 'package:tformatter/tformatter.dart';

void main() {
  runApp(const TFormattersExample());
}

class TFormattersExample extends StatelessWidget {
  const TFormattersExample({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        appBar: AppBar(
          title: const Text('TFormatters Example'),
        ),
        body: const TFormattersDemo(),
      ),
    );
  }
}

class TFormattersDemo extends StatelessWidget {
  const TFormattersDemo({super.key});

  @override
  Widget build(BuildContext context) {
    final now = DateTime.now();
    final amount = 1234.567;

    return SingleChildScrollView(
      padding: const EdgeInsets.all(16.0),
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          const Text(
            'TFormatters Examples',
            style: TextStyle(fontSize: 24, fontWeight: FontWeight.bold),
          ),
          const SizedBox(height: 16),

          // Date and Time Formatting
          Text(
              'Current Date: ${TFormatters.formatDate(now, pattern: 'dd-MM-yyyy', locale: 'fr_FR')}'),

          const Divider(),

          // Currency and Percentage Formatting
          Text(
              'Formatted Currency: ${TFormatters.formatCurrency(amount, locale: 'en_US', currencySymbol: '\$')}'),
          Text('Formatted Percentage: ${TFormatters.formatPercentage(0.875)}'),

          const Divider(),

          // Readable formatting: "X days ago", "X hours ago".
          Text('Time Ago: ${TFormatters.timeAgo(DateTime.now().subtract(Duration(days: 2)))}'),

          const Divider(),

          // Format durations in hours and minutes.
          Text('Duration: ${TFormatters.formatDuration(Duration(hours: 1, minutes: 50))}'),

          const Divider(),

          // Format address
          Text('Address: ${TFormatters.formatAddress("Av De l'eglise", 'Butembo', 'DRC')}'),

          const Divider(),

          // Standardization of Spaces
          Text('Normalized Spaces: ${TFormatters.normalizeSpaces("Multiple\n\nnewlines \n and tabs\t\t")}'),

          const Divider(),

          // Format phone number
          Text('Phone Number: ${TFormatters.formatPhoneNumber('0123456789','###-###-####')}'),
        ],
      ),
    );
  }
}

2. 输入验证

// Validation d'une adresse e-mail
print(TFormatters.isValidEmail('test@example.com'));
// Résultat : true

// Validation d'une URL
print(TFormatters.isValidUrl('https://example.com'));
// Résultat : true

// Validation d'un mot de passe sécurisé
print(TFormatters.isValidPassword('StrongP@ss1'));
// Résultat : true

3. 字符串操作

// Génération d'initiales
print(TFormatters.generateInitials('John Doe'));
// Résultat : JD

// Extraction du domaine d'une adresse e-mail
print(TFormatters.extractEmailDomain('user@example.com'));
// Résultat : example.com

// Extraction de l'extension d'un fichier
print(TFormatters.getFileExtension('document.pdf'));
// Résultat : pdf

4. 管理持续时间

final duration = Duration(hours: 2, minutes: 30, seconds: 10);

// Conversion d'une durée en texte lisible
print(TFormatters.formatDuration(duration));
// Résultat : 2h 30m 10s

5. 其他功能

// Masquage de données sensibles
print(TFormatters.maskSensitiveData('1234567890', visibleChars: 4));
// Résultat : ****7890

// Formatage d'une taille de fichier
print(TFormatters.formatFileSize(1048576));
// Résultat : 1.0 MB

6. 文本字段中的直接格式化

货币格式化示例

import 'package:tformatters/input_formatters/currency_input_formatter.dart';

TextFormField(
  inputFormatters: [
    CurrencyInputFormatter(locale: 'fr_FR', currencySymbol: '€'),
  ],
  decoration: const InputDecoration(
    labelText: 'Montant',
  ),
  keyboardType: TextInputType.number,
);

掩码输入示例

import 'package:tformatters/input_formatters/masked_text_input_formatter.dart';

TextFormField(
  inputFormatters: [
    MaskedTextInputFormatter(mask: '####-####-####'),
  ],
  decoration: const InputDecoration(
    labelText: 'Numéro de carte',
  ),
  keyboardType: TextInputType.number,
);

7. 信用卡验证

// Numéros de test
final validCard = '4539 1488 0343 6467'; // Carte valide (Visa)
final invalidCard = '1234 5678 9012 3456'; // Carte invalide

// Validation
print(isValidCreditCard(validCard)); // Résultat : true
print(isValidCreditCard(invalidCard)); // Résultat : false

8. 方法完整列表

formatDate(DateTime date, {String pattern, String locale})
formatHour(DateTime date)
formatCurrency(double amount, {String locale, String currencySymbol})
formatPercentage(double value, {int decimalPlaces})
formatDuration(Duration duration)

isValidEmail(String email)
isValidUrl(String url)
isValidPhoneNumber(String phoneNumber)
isValidPassword(String password, {int minLength})
generateInitials(String fullName)
maskSensitiveData(String data, {int visibleChars})
extractEmailDomain(String email)
getFileExtension(String fileName)
toHyperlink(String text, String url)
generatePassword({int number})
extractHashtags(String text)
decompressString(String text)
compressString(String text)
formatJson(String jsonString)
formatUrl(String url)
formatAddress(String street, String city, String country,{String postalCode = ''})
timeAgo(DateTime date, {String locale = 'en'})
dateDifference(DateTime startDate, DateTime endDate)
formatPhoneNumber(String phoneNumber);
isValidCreditCard(String cardNumber)
detectDataType(String input)
getCardType(String cardNumber)
formatNumberShortcut(double value)
...

以上是 tformatter 插件的主要功能和使用示例。通过这些方法,您可以轻松地在Flutter应用中实现数据的格式化、验证和操作。


更多关于Flutter格式化工具插件tformatter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter格式化工具插件tformatter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用tformatter插件来格式化代码的一个示例。tformatter是一个用于Dart和Flutter代码的格式化工具,虽然这不是一个广泛知名的官方插件,但假设它类似于一般的代码格式化工具,我们可以通过配置和使用它来达到代码格式化的目的。

首先,请确保你的Flutter环境已经设置好,并且你的项目已经初始化。

1. 添加依赖

首先,在你的pubspec.yaml文件中添加tformatter(如果它是一个有效的pub包)作为开发依赖。注意,由于tformatter可能不是一个真实存在的包名,这里我假设它存在,并用一个假设的包名dart_formatter来代替说明过程。如果你知道确切的包名,请替换它。

dev_dependencies:
  flutter_test:
    sdk: flutter
  dart_formatter: ^x.y.z  # 替换为实际的版本号

然后运行flutter pub get来安装依赖。

2. 配置脚本

如果你使用的是Linux或macOS,可以在pubspec.yaml同级目录下创建一个脚本文件,比如format.sh,内容如下:

#!/bin/bash

# 使用dartfmt格式化所有dart文件
find . -name "*.dart" | xargs dart format

# 假设tformatter有一个命令行工具,也可以在这里调用
# find . -name "*.dart" | xargs tformatter

如果你使用的是Windows,可以创建一个批处理文件format.bat,内容如下:

@echo off

:: 使用dartfmt格式化所有dart文件
for /r %%f in (*.dart) do (
    dart format "%%f"
)

:: 假设tformatter有一个命令行工具,也可以在这里调用
:: for /r %%f in (*.dart) do (
::     tformatter "%%f"
:: )

3. 使用dart format(官方工具)

由于dart format是Dart官方提供的代码格式化工具,通常我们不需要额外的插件就能完成格式化工作。你可以在命令行中运行以下命令来格式化整个项目的Dart文件:

dart format .

或者,如果你使用的是VS Code编辑器,可以安装Dart扩展,它内置了代码格式化功能。你只需右键点击编辑器中的代码,然后选择“Format Document”即可。

4. 自动化格式化(可选)

如果你想在每次保存文件时自动格式化代码,可以在VS Code的设置中添加以下配置:

"editor.formatOnSave": true,
"[dart]": {
    "editor.defaultFormatter": "Dart-Code.dart-code"
}

这将确保每次保存Dart文件时,VS Code都会自动使用Dart格式化工具来格式化代码。

注意

由于tformatter可能不是一个真实存在的包,上述示例主要基于Dart官方格式化工具dart format。如果你确实有一个名为tformatter的插件,并且它提供了命令行工具,你可以根据它的文档调整上述脚本和配置。通常,插件的README文件会提供详细的安装和使用指南。

回到顶部