Basic Utils

A comprehensive Flutter utility library providing essential functions for date operations, validations, string manipulations, number operations, file handling, and network utilities.

Features

📅 Date Utils

  • Get current date/time in custom formats
  • Convert between string and DateTime objects
  • Calculate date differences in various units
  • Date arithmetic operations (add days, months, years)
  • Leap year and age calculations
  • Date validation and formatting

✅ Validation Utils

  • Email, URL, and phone number validation
  • Indian-specific validations (PAN, GST, Aadhaar, IFSC, UPI)
  • Password strength validation
  • Credit card validation using Luhn algorithm
  • Aadhaar validation using Verhoeff algorithm
  • String type validations (alphabets, numbers, alphanumeric)

🔤 String Utils

  • Case conversions (camelCase, snake_case, kebab-case)
  • Text manipulation (capitalize, reverse, truncate)
  • String analysis (palindrome, word count)
  • Data extraction (emails, URLs, numbers)
  • Currency formatting and slug generation
  • Random string generation and masking

🔢 Number Utils

  • Number formatting with commas
  • Number to words conversion (Indian format)
  • Mathematical operations (factorial, GCD, LCM)
  • Prime number and even/odd checks
  • Interest calculations (simple and compound)
  • Unit conversions (temperature, length, weight)
  • Random number generation

📁 File Utils

  • File path operations and validation
  • File type detection (image, video, audio, document)
  • MIME type identification
  • File name sanitization and unique naming
  • Human-readable file size formatting
  • Path normalization and joining

🌐 Network Utils

  • IP address validation (IPv4/IPv6)
  • MAC address validation
  • URL parsing and manipulation
  • HTTP status code analysis
  • Port validation and categorization
  • Domain and protocol extraction
  • User agent generation

Installation

Add this to your package's pubspec.yaml file:

dependencies:
  basic_utils: ^1.0.0

Then run:

flutter pub get

Usage

Import the library

import 'package:basic_utils/basic_utils.dart';

Date Utils Examples

// Get current date/time in custom format
String currentDate = DateUtils.getCurrentDateTime(format: 'dd/MM/yyyy');
print(currentDate); // Output: 15/12/2023

// Convert string to DateTime
DateTime? date = DateUtils.stringToDate('2023-12-15', format: 'yyyy-MM-dd');

// Convert DateTime to string
String dateString = DateUtils.dateToString(DateTime.now(), format: 'dd-MM-yyyy');

// Calculate date difference
int days = DateUtils.getDateDifference(
  DateTime(2023, 1, 1), 
  DateTime(2023, 12, 31), 
  unit: 'days'
);

// Check if year is leap year
bool isLeap = DateUtils.isLeapYear(2024);

// Calculate age
int age = DateUtils.getAge(DateTime(1990, 5, 15));

Validation Utils Examples

// Email validation
bool isValidEmail = ValidationUtils.checkValidEmail('user@example.com');

// URL validation
bool isValidUrl = ValidationUtils.checkValidUrl('https://www.google.com');

// Indian PAN validation
bool isValidPAN = ValidationUtils.checkValidPanNumber('ABCDE1234F');

// Indian GST validation
bool isValidGST = ValidationUtils.checkValidGSTNumber('22ABCDE1234F1Z5');

// Indian mobile number validation
bool isValidMobile = ValidationUtils.checkValidIndianMobileNumber('9876543210');

// Password validation
bool isValidPassword = ValidationUtils.checkValidPassword(
  'MySecure123!',
  minLength: 8,
  requireUppercase: true,
  requireLowercase: true,
  requireNumbers: true,
  requireSpecialChars: true,
);

// Credit card validation
bool isValidCard = ValidationUtils.checkValidCreditCardNumber('4111111111111111');

String Utils Examples

// Case conversions
String camelCase = StringUtils.toCamelCase('hello world example');
String snakeCase = StringUtils.toSnakeCase('HelloWorldExample');
String kebabCase = StringUtils.toKebabCase('HelloWorldExample');

// Text manipulation
String capitalized = StringUtils.capitalizeWords('hello world');
String reversed = StringUtils.reverse('hello');
bool isPal = StringUtils.isPalindrome('racecar');

// String analysis
String truncated = StringUtils.truncate('This is a very long string', 15);
String masked = StringUtils.maskString('1234567890', visibleStart: 2, visibleEnd: 2);

// Data extraction
List<int> numbers = StringUtils.extractNumbers('Price is 100 and tax is 15');
List<String> emails = StringUtils.extractEmails('Contact us at support@example.com');

// Currency formatting
String currency = StringUtils.formatCurrency(12345.67); // ₹ 12,345.67

// Slug generation
String slug = StringUtils.toSlug('Hello World! This is a test.'); // hello-world-this-is-a-test

Number Utils Examples

// Number formatting
String formatted = NumberUtils.formatWithCommas(1234567); // 1,234,567
String formattedDouble = NumberUtils.formatWithCommasDouble(1234567.89); // 1,234,567.89

// Number to words (Indian format)
String words = NumberUtils.numberToWords(1234); // One Thousand Two Hundred Thirty Four

// Ordinal numbers
String ordinal = NumberUtils.toOrdinal(21); // 21st

// Mathematical operations
bool isEven = NumberUtils.isEven(42);
bool isPrime = NumberUtils.isPrime(17);
int factorial = NumberUtils.factorial(5); // 120
int gcd = NumberUtils.gcd(48, 18); // 6
int lcm = NumberUtils.lcm(12, 18); // 36

// Interest calculations
double simpleInterest = NumberUtils.calculateSimpleInterest(10000, 0.05, 2);
double compoundInterest = NumberUtils.calculateCompoundInterest(10000, 0.05, 2);

// Unit conversions
double celsius = NumberUtils.convertTemperature(32, 'fahrenheit', 'celsius');
double meters = NumberUtils.convertLength(100, 'cm', 'm');
double kg = NumberUtils.convertWeight(1000, 'g', 'kg');

File Utils Examples

// File path operations
String extension = FileUtils.getFileExtension('/path/to/file.txt'); // txt
String fileName = FileUtils.getFileName('/path/to/file.txt'); // file.txt
String nameWithoutExt = FileUtils.getFileNameWithoutExtension('/path/to/file.txt'); // file
String directory = FileUtils.getDirectoryPath('/path/to/file.txt'); // /path/to

// File type detection
bool isImage = FileUtils.isImageFile('image.jpg');
bool isVideo = FileUtils.isVideoFile('video.mp4');
bool isAudio = FileUtils.isAudioFile('audio.mp3');
bool isDocument = FileUtils.isDocumentFile('document.pdf');

// MIME type
String mimeType = FileUtils.getMimeType('image.png'); // image/png

// File size formatting
String size = FileUtils.getHumanReadableFileSize(1024000); // 1.0 MB

// File name operations
String sanitized = FileUtils.sanitizeFileName('file<>name?.txt'); // file_name.txt
String unique = FileUtils.generateUniqueFileName('document.pdf', prefix: 'backup');

Network Utils Examples

// IP address validation
bool isValidIP = NetworkUtils.isValidIPAddress('192.168.1.1');
bool isValidIPv4 = NetworkUtils.isValidIPv4Address('192.168.1.1');
bool isValidIPv6 = NetworkUtils.isValidIPv6Address('2001:0db8:85a3:0000:0000:8a2e:0370:7334');

// MAC address validation
bool isValidMAC = NetworkUtils.isValidMACAddress('00:1B:44:11:3A:B7');

// URL operations
String? domain = NetworkUtils.extractDomain('https://www.example.com/path'); // www.example.com
String? protocol = NetworkUtils.extractProtocol('https://www.example.com'); // https
bool isHttps = NetworkUtils.isHttps('https://www.example.com');

// Port operations
int? httpPort = NetworkUtils.getDefaultPort('http'); // 80
bool isValidPort = NetworkUtils.isValidPort(8080);
bool isWellKnown = NetworkUtils.isWellKnownPort(80);

// HTTP status codes
bool isSuccess = NetworkUtils.isSuccessStatusCode(200);
Map<String, String> statusInfo = NetworkUtils.parseHttpStatusCode(404);

// IP conversions
int? ipInt = NetworkUtils.ipToInt('192.168.1.1'); // 3232235777
String ip = NetworkUtils.intToIP(3232235777); // 192.168.1.1

API Reference

DateUtils

  • getCurrentDateTime({String format}) - Get current date/time in specified format
  • stringToDate(String dateString, {String format}) - Convert string to DateTime
  • dateToString(DateTime date, {String format}) - Convert DateTime to string
  • getDateDifference(DateTime startDate, DateTime endDate, {String unit}) - Get date difference
  • addDays(DateTime date, int days) - Add days to date
  • addMonths(DateTime date, int months) - Add months to date
  • addYears(DateTime date, int years) - Add years to date
  • isLeapYear(int year) - Check if year is leap year
  • getDaysInMonth(int year, int month) - Get days in month
  • isToday(DateTime date) - Check if date is today
  • isYesterday(DateTime date) - Check if date is yesterday
  • isTomorrow(DateTime date) - Check if date is tomorrow
  • getAge(DateTime birthDate) - Calculate age from birth date

ValidationUtils

  • checkValidLength(String text, int requiredLength) - Check string length
  • checkValidUrl(String url) - Validate URL
  • checkValidPanNumber(String panNumber) - Validate Indian PAN
  • checkValidGSTNumber(String gstNumber) - Validate Indian GST
  • checkValidEmail(String email) - Validate email
  • checkValidPhoneNumber(String phoneNumber, {int minLength, int maxLength}) - Validate phone
  • checkValidIndianMobileNumber(String mobileNumber) - Validate Indian mobile
  • checkValidAadhaarNumber(String aadhaarNumber) - Validate Indian Aadhaar
  • checkValidCreditCardNumber(String cardNumber) - Validate credit card
  • checkValidPassword(String password, {...}) - Validate password strength
  • checkValidIFSCCode(String ifscCode) - Validate Indian IFSC
  • checkValidUPIId(String upiId) - Validate UPI ID
  • isAlphabetsOnly(String text) - Check if only alphabets
  • isNumbersOnly(String text) - Check if only numbers
  • isAlphanumeric(String text) - Check if alphanumeric
  • isEmpty(String? text) - Check if empty or null
  • isNotEmpty(String? text) - Check if not empty and not null

StringUtils

  • capitalizeWords(String text) - Capitalize each word
  • capitalizeFirst(String text) - Capitalize first letter
  • toCamelCase(String text) - Convert to camelCase
  • toSnakeCase(String text) - Convert to snake_case
  • toKebabCase(String text) - Convert to kebab-case
  • removeWhitespace(String text) - Remove all whitespace
  • removeSpecialCharacters(String text, {bool keepSpaces}) - Remove special chars
  • reverse(String text) - Reverse string
  • isPalindrome(String text, {bool caseSensitive}) - Check if palindrome
  • countOccurrences(String text, String substring) - Count substring occurrences
  • truncate(String text, int maxLength, {String suffix}) - Truncate string
  • generateRandomString(int length, {...}) - Generate random string
  • maskString(String text, {...}) - Mask sensitive information
  • extractNumbers(String text) - Extract numbers from string
  • extractEmails(String text) - Extract emails from string
  • extractUrls(String text) - Extract URLs from string
  • formatCurrency(double amount, {...}) - Format as currency
  • toSlug(String text) - Convert to URL slug

NumberUtils

  • formatWithCommas(int number) - Format with commas
  • formatWithCommasDouble(double number, {int decimalPlaces}) - Format double with commas
  • numberToWords(int number) - Convert number to words
  • toOrdinal(int number) - Convert to ordinal
  • roundToDecimalPlaces(double number, int decimalPlaces) - Round to decimal places
  • isEven(int number) - Check if even
  • isOdd(int number) - Check if odd
  • isPrime(int number) - Check if prime
  • factorial(int number) - Calculate factorial
  • gcd(int a, int b) - Greatest common divisor
  • lcm(int a, int b) - Least common multiple
  • randomInt(int min, int max) - Random integer
  • randomDouble(double min, double max) - Random double
  • calculatePercentage(double value, double total) - Calculate percentage
  • calculateCompoundInterest(double principal, double rate, double time, {...}) - Compound interest
  • calculateSimpleInterest(double principal, double rate, double time) - Simple interest
  • convertTemperature(double temperature, String fromUnit, String toUnit) - Convert temperature
  • convertLength(double value, String fromUnit, String toUnit) - Convert length
  • convertWeight(double value, String fromUnit, String toUnit) - Convert weight

FileUtils

  • getFileExtension(String filePath) - Get file extension
  • getFileName(String filePath) - Get file name
  • getFileNameWithoutExtension(String filePath) - Get name without extension
  • getDirectoryPath(String filePath) - Get directory path
  • hasValidExtension(String filePath, List<String> allowedExtensions) - Check valid extension
  • getHumanReadableFileSize(int bytes) - Format file size
  • generateUniqueFileName(String originalName, {...}) - Generate unique name
  • sanitizeFileName(String fileName) - Sanitize file name
  • isImageFile(String filePath) - Check if image file
  • isVideoFile(String filePath) - Check if video file
  • isAudioFile(String filePath) - Check if audio file
  • isDocumentFile(String filePath) - Check if document file
  • getMimeType(String filePath) - Get MIME type
  • formatFilePathForDisplay(String filePath, {int maxLength}) - Format for display
  • isAbsolutePath(String path) - Check if absolute path
  • joinPath(List<String> segments) - Join path segments
  • normalizePath(String path) - Normalize path

NetworkUtils

  • isValidIPAddress(String ip) - Validate IP address
  • isValidMACAddress(String mac) - Validate MAC address
  • extractDomain(String url) - Extract domain from URL
  • extractProtocol(String url) - Extract protocol from URL
  • extractPort(String url) - Extract port from URL
  • extractPath(String url) - Extract path from URL
  • extractQueryParameters(String url) - Extract query parameters
  • buildUrlWithQueryParams(String baseUrl, Map<String, String> queryParams) - Build URL with params
  • isHttps(String url) - Check if HTTPS
  • isHttp(String url) - Check if HTTP
  • generateRandomUserAgent() - Generate random user agent
  • isValidEmailDomain(String domain) - Validate email domain
  • getDefaultPort(String protocol) - Get default port for protocol
  • isValidPort(int port) - Validate port number
  • isWellKnownPort(int port) - Check if well-known port
  • isRegisteredPort(int port) - Check if registered port
  • isDynamicPort(int port) - Check if dynamic port
  • parseHttpStatusCode(int statusCode) - Parse HTTP status code
  • isSuccessStatusCode(int statusCode) - Check if success status
  • isClientErrorStatusCode(int statusCode) - Check if client error
  • isServerErrorStatusCode(int statusCode) - Check if server error
  • generateRandomIPAddress() - Generate random IP
  • isValidIPv4Address(String ip) - Validate IPv4
  • isValidIPv6Address(String ip) - Validate IPv6
  • ipToInt(String ip) - Convert IP to integer
  • intToIP(int ipInt) - Convert integer to IP

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

If you find this package helpful, please consider giving it a ⭐ on GitHub.

Changelog

See CHANGELOG.md for a list of changes and version history.

Libraries

basic_utils
A comprehensive Flutter utility library providing essential functions for date operations, validations, and common tasks.
main