soundsliced_dart_extensions
A comprehensive collection of Dart and Flutter extensions that simplify common development tasks and enhance code readability.
Features
This package provides extensive extensions for:
DateTime & Duration
- Duration shortcuts:
5.seconds,2.minutes,1.hours,3.days - DateTime utilities: Convert to date, adjust time, round to nearest minute
- String parsing: Convert time strings to DateTime
- Formatting: Easy string conversions with customizable formats
String Extensions
- Type conversion: Parse booleans, convert to lists
- Formatting: Capitalize sentences, beautify JSON
- JSON utilities: Decode and beautify JSON strings
List Extensions
- Safe access: Null-safe element access with index checking
- Chunking: Split lists into smaller chunks
- Sorting: Alphanumeric sorting for string lists
Color Extensions
- Manipulation: Lighten and darken colors
- Conversion: Convert to hex strings
EdgeInsets Extensions
- Fluent API: Chain padding modifications
- Smart padding: Apply first non-zero padding value
- Modification: Add to existing padding values
TimeOfDay Extensions
- JSON support: Serialize/deserialize
- Conversion: Convert to Duration, DateTime, formatted strings
- Manipulation: Add/subtract minutes, round to intervals
Additional Utilities
- Offset utilities: Calculate distance, check direction
- Map extensions: Convert to lists
- Scroll controller: Animate to bottom
- Type conversions: String to URI, various type parsers
Installation
Add this to your package's pubspec.yaml file:
dependencies:
soundsliced_dart_extensions: ^1.0.0
Then run:
flutter pub get
Usage
Import the package:
import 'package:dart_extensions/dart_extensions.dart';
Duration Examples
// Create durations with intuitive syntax
final duration1 = 5.seconds;
final duration2 = 2.minutes;
final duration3 = 1.hours;
final duration4 = 3.days;
// Convert Duration to easy-read string
final formatted = duration1.convertToEasyReadString(); // "05 sec"
DateTime Examples
// Round datetime to nearest interval
final now = DateTime.now();
final rounded = now.toNearestMinute(nearestMinute: 15);
// Convert to date only (remove time)
final dateOnly = now.convertToDate();
// Get month name
final monthName = now.convertToMonthString(); // "JAN", "FEB", etc.
String Extensions
// Capitalize sentences
final text = "hello world. how are you?";
final capitalized = text.capitalizeFirstLetterOfEverySentence();
// "Hello world. How are you?"
// Parse boolean
final boolValue = "true".parseBool(); // true
// Convert string to list
final listString = "[item1, item2, item3]";
final list = listString.convertToListString();
Color Extensions
// Lighten/darken colors
final color = Colors.blue;
final lighter = color.lighten(0.2); // 20% lighter
final darker = color.darken(0.3); // 30% darker
// Convert to hex
final hexColor = toHex(Colors.red); // "#FFFF0000"
EdgeInsets Extensions
// Fluent padding API
final padding = EdgeInsets.all(10.0)
.withLeft(20.0)
.addToTop(5.0);
// Smart padding (use first non-zero value)
final base = EdgeInsets.only(left: 10.0);
final samePadding = base.rightPad; // Uses left value for right
TimeOfDay Extensions
// Convert to Duration
final time = TimeOfDay(hour: 14, minute: 30);
final duration = time.convertToDuration(); // 14h 30min
// Format as string
final formatted = time.convertToStringTime(); // "14:30"
// Add/subtract minutes
final later = time.addMinutes(45); // 15:15
final earlier = time.subtractMinutes(30); // 14:00
// Round to interval
final rounded = time.toNearestMinute(nearestMinute: 15);
List Extensions
// Safe element access
final list = [1, 2, 3];
final element = list.safe[10]; // null instead of error
// Check if index exists
if (list.doesIndexExist(5)) {
print(list[5]);
}
// Split into chunks
final letters = ['a', 'b', 'c', 'd', 'e'];
final chunks = letters.splitInChunks(2); // [[a, b], [c, d], [e]]
Requirements
- Dart SDK:
>=3.0.0 <4.0.0 - Flutter:
>=3.0.0
Dependencies
fpdart: ^1.2.0intl: ^0.20.2sizer: ^3.1.3xid: ^1.2.1collection: ^1.19.1
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Issues
Please file issues on the GitHub repository.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Libraries
- soundsliced_dart_extensions
- dart_extensions package