extensions_core 0.0.3 copy "extensions_core: ^0.0.3" to clipboard
extensions_core: ^0.0.3 copied to clipboard

Extensions for dart and flutter

Extensions Core #

A comprehensive collection of Dart and Flutter extensions that enhance development productivity and code readability.

pub package

Features #

This package provides a rich set of extensions for common Flutter and Dart types:

  • String Extensions: Powerful string manipulation and validation methods
  • List Extensions: Enhanced list manipulation utilities
  • DateTime Extensions: Date formatting and relative time handling
  • BuildContext Extensions: Simplified UI interactions (alerts, snackbars)
  • Theme Extensions: Easy theme access and manipulation
  • Navigation Extensions: Streamlined navigation helpers
  • Widget Extensions: Chainable widget modifications
  • Number Extensions: Formatting and conversion utilities

Installation #

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

dependencies:
  extensions_core: ^0.0.2
copied to clipboard

Usage #

Import the package:

import 'package:extensions_core/extensions.dart';
copied to clipboard

String Extensions #

String text = "hello world";
String email = "user@example.com";
String url = "https://example.com";
String phone = "+1234567890";

// String validation
print(email.isEmail());          // true
print(url.isUrl());             // true
print(phone.isPhoneNumber());   // true
print("123".isNumeric());       // true
print("abc".isAlphabetic());    // true

// String manipulation
print(text.capitalize());       // "Hello world"
print(text.toTitleCase());      // "Hello World"
print(text.removeWhitespace()); // "helloworld"
print(text.reverse());          // "dlrow olleh"

// String utilities
print(text.truncate(5));        // "hello..."
print("".isNullOrWhiteSpace()); // true

// Password validation helpers
print("Password123".containsUppercase()); // true
print("Password123".containsLowercase()); // true
print("Password123".containsDigit());     // true
copied to clipboard

List Extensions #

List<int> numbers = [1, 2, 2, 3, 4, 5];
List<String?> items = ["a", null, "b", null, "c"];

// List operations
print(numbers.takeLast(2));      // [4, 5]
print(numbers.takeFirst(2));     // [1, 2]
print(numbers.distinct());       // [1, 2, 3, 4, 5]
print(numbers.reversedList());   // [5, 4, 3, 2, 2, 1]
print(items.whereNotNull());     // ["a", "b", "c"]

// List chunking
print(numbers.chunked(2));       // [[1, 2], [2, 3], [4, 5]]

// List utilities
print(numbers.shuffledList());   // [3, 1, 5, 2, 2, 4] (random order)
print(numbers.hasUniqueElements()); // false
print([].isNullOrEmpty());       // true

// Safe operations
print(numbers.safeGet(10));      // null (instead of throwing error)

// Transformation
List<String> transformed = numbers.mapToList((n) => "Num: $n");
print(transformed);              // ["Num: 1", "Num: 2", ...]
copied to clipboard

DateTime Extensions #

DateTime now = DateTime.now();
DateTime yesterday = now.subtract(Duration(days: 1));

// Date checks
print(now.isToday());           // true
print(yesterday.isYesterday()); // true
print(now.isInFuture());       // false
print(now.isInPast());         // false

// Formatting
print(now.format('yyyy-MM-dd')); // "2024-03-20"

// Relative time (requires BuildContext)
print(yesterday.timeAgo(context));  // "1 day ago"

// Locale-aware formatting (requires BuildContext)
print(now.formattedDate(context, pattern: 'MMM dd, yyyy')); // "Mar 20, 2024"
copied to clipboard

BuildContext Extensions #

// Snackbar Extensions
context.showSnackBar("Operation completed successfully!");
context.removeSnackBar();

// Alert Dialog Extensions
context.showCusDialog(
  AlertDialog(
    title: Text("Alert"),
    content: Text("This is a custom alert dialog"),
    actions: [
      TextButton(
        onPressed: () => Navigator.pop(context),
        child: Text("OK"),
      ),
    ],
  ),
);
copied to clipboard

Theme Extensions #

Access theme data and custom theme extensions easily:

// Theme access (implementation details in theme.dart)
final primaryColor = context.theme.primaryColor;
final textTheme = context.theme.textTheme;
copied to clipboard

Widget Extensions #

Chain widget modifications easily:

Text('Hello')
  .padding()                 // Add default padding
  .center                    // Center the widget
  .expanded                  // Expand to fill space
  .onTap(() {})             // Add tap handler
  .opacity(0.8)             // Add opacity
  .circular(12)             // Add circular border
  .elevated();              // Add elevation

// Flexible sizing
Text('Hello').size(width: 100, height: 50);

// Custom alignment
Text('Hello').align(Alignment.centerLeft);

// Custom padding
Text('Hello').padding(EdgeInsets.all(8));
copied to clipboard

Simplified navigation methods:

// Basic navigation
context.pushScreen(HomeScreen());

// Replace current screen
context.replaceScreen(LoginScreen());

// Clear stack and show new screen
context.clearStackAndShow(DashboardScreen());

// Navigate with fade transition
context.pushWithFade(DetailsScreen());

// Pop until specific route
context.popUntilRoute('/home');
copied to clipboard

Number Extensions #

Format and convert numbers easily:

double price = 1234.5;
int count = 1200000;

// Currency formatting
print(price.toCurrency());           // "$1,234.50"
print(price.toCurrency(symbol: '€')); // "€1,234.50"

// Compact number format
print(count.toCompact());            // "1.2M"

// Percentage
print(75.toPercentage());           // "75%"

// Duration conversion
print(5.minutes);                   // Duration(minutes: 5)
print(24.hours);                    // Duration(hours: 24)

// Widget spacing
Container(
  child: Column(
    children: [
      Text('First'),
      10.heightBox,                // SizedBox for vertical spacing
      Text('Second'),
      20.widthBox,                 // SizedBox for horizontal spacing
    ],
  ),
);

// Number utilities
print(5.isBetween(1, 10));        // true
print(15.clamp(0, 10));           // 10
print(45.toRadians);              // Convert to radians
print(pi.toDegrees);              // Convert to degrees
copied to clipboard

Requirements #

  • Dart SDK: ^3.6.0
  • Flutter: >=1.17.0

Additional Information #

Contributing #

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

  1. Ensure your code follows the Dart style guide
  2. Add tests for any new features
  3. Update documentation accordingly
  4. Create an issue first for any major changes

License #

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

0
likes
130
points
27
downloads

Publisher

unverified uploader

Weekly Downloads

2025.01.09 - 2025.12.04

Extensions for dart and flutter

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

flutter, intl

More

Packages that depend on extensions_core