TFormatters
A powerful Flutter/Dart package for formatting, validation, and manipulation of common data types such as dates, times, currencies, phone numbers, and more.
- Formatting of dates, times, and durations.
- Formatting of amounts and percentages.
- Validation of emails, URLs, phone numbers, and secure passwords.
- Advanced string manipulation: generating initials, extracting file extensions, and more.
- Generation and validation of unique identifiers.
- Credit Card Validation
1. Formatting
import 'package:tformatter/tformatter.dart';
void main() {
final now = DateTime.now();
// Formatage de la date
print(TFormatters.formatDate(now, pattern: 'dd/MM/yyyy', locale: 'fr_FR'));
// Résultat : 04/01/2025
// Format hour
print(TFormatters.formatHour(now));
// Résultat : 14:30:15
//Readable formatting: "X days ago", "X hours ago".
print(TFormatters.timeAgo(DateTime.now().subtract(Duration(days: 2))))
// Resultat: 2 jours
//Format durations in hours and minutes.
print(TFormatters.formatDuration(Duration(hours: 1, minutes: 50)))
// Resultat: 1h 50m 0s
// Format address
print(TFormatters.formatAddress("Av De l'eglise", 'Butembo', 'DRC'))
// Resultat: Av De l'eglise, Butembo, DRC
// Formatage d'un montant avec devise
print(TFormatters.formatCurrency(1234.56, locale: 'fr_FR', currencySymbol: '€'));
// Résultat : 1 234,56 €
// Formatage en pourcentage
print(TFormatters.formatPercentage(0.875));
// Résultat : 87.50%
//Standardization of Spaces
print(TFormatters.normalizeSpaces("Multiple\n\nnewlines \n and tabs\t\t"))
//Resultat: Multiple newlines and tabs
// Format phone number
print(TFormatters.formatPhoneNumber('0123456789','###-###-####'))
// Resultat: (0) 123-456-789
}
2. Validating Inputs
import 'package:tformatter/tformatter.dart';
void main() {
// 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. Manipulating Strings
import 'package:tformatter/tformatter.dart';
void main() {
// 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. Managing Durations
import 'package:tformatter/tformatter.dart';
void main() {
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. Miscellaneous Features
import 'package:tformatter/tformatter.dart';
void main() {
// 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. Direct Formatting in Text Fields
The package includes TextInputFormatters to add dynamic masking or formatting directly to text fields.
Exemple : Currency Formatter
import 'package:tformatters/input_formatters/currency_input_formatter.dart';
TextFormField(
inputFormatters: [
CurrencyInputFormatter(locale: 'fr_FR', currencySymbol: '€'),
],
decoration: const InputDecoration(
labelText: 'Montant',
),
keyboardType: TextInputType.number,
);
Exemple : Masked Input
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. Credit card validation
void main() {
// 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. Complete List of Methods
Formatting
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)
...