ext_kit 1.0.0 copy "ext_kit: ^1.0.0" to clipboard
ext_kit: ^1.0.0 copied to clipboard

A comprehensive Flutter/Dart package providing powerful extensions for String, DateTime, int, double, num, List, Iterable, Map, Widget, BuildContext, Color, Duration, and dynamic types. Boost your pro [...]

example/ext_kit_example.dart

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

void main() {
  // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  // String Extensions
  // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  const email = 'user@example.com';
  log(email.isEmail); // true

  const text = 'hello world';
  log(text.capitalize); // Hello World
  log(text.capitalizeFirst); // Hello world
  log(text.removeAllWhitespace); // helloworld
  log(text.isAlphabetOnly); // false (has space)
  log(text.wordCount); // 2
  log(text.reversed); // dlrow olleh
  log('Hello World Example'.toSlug()); // hello-world-example

  // String validation
  log('192.168.1.1'.isIPv4); // true
  log('test@email.com'.isEmail); // true
  log('+6281234567890'.isPhoneNumber); // true

  // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  // DateTime Extensions
  // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  final now = DateTime.now();
  log(now.isToday()); // true
  log(now.isWeekend()); // depends on current day
  log(now.startOfDay); // today at 00:00:00
  log(now.endOfMonth); // last moment of this month
  log(now.daysInMonth); // 28, 29, 30, or 31
  log(now.isLeapYear()); // depends on year
  log(now.timeAgo()); // "just now" or "5 minutes ago"

  final tomorrow = now.addDays(1);
  log(tomorrow.isTomorrow()); // true
  log(now.isBetween(now.subtractDays(1), now.addDays(1))); // true

  // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  // int Extensions
  // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  log(7.isPrime); // true
  log(5.factorial); // 120
  log(8.isFibonacci); // true
  log(10.isMultipleOf(5)); // true
  log(7.nextPrime); // 11

  // Duration from int
  final delay = 2.seconds; // Duration(seconds: 2)
  log(delay);

  // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  // List & Iterable Extensions
  // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  final numbers = [1, 2, 3, 4, 5];
  log(numbers.sum); // 15
  log(numbers.average); // 3
  log(numbers.product); // 120
  log(numbers.rotated(2)); // [3, 4, 5, 1, 2]
  log(numbers.reversedList); // [5, 4, 3, 2, 1]

  final items = [1, 2, 2, 3, 3, 3];
  log(items.distinct().toList()); // [1, 2, 3]

  final grouped = ['apple', 'avocado', 'banana', 'blueberry'];
  log(grouped
      .groupBy((s) => s[0])); // {a: [apple, avocado], b: [banana, blueberry]}

  // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  // num Extensions
  // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  log(1500.0.toCurrency()); // $1,500.00
  log(1234567.toCompact()); // 1.2M
  log(1048576.toFileSize()); // 1.0 MB
  log(50.isBetween(1, 100)); // true

  // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  // Map Extensions
  // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  final map = {'a': 1, 'b': 2, 'c': 3};
  log(map.getOrDefault('d', 0)); // 0
  log(map.whereValues((v) => v > 1)); // {b: 2, c: 3}

  // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  // Duration Extensions
  // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  const duration = Duration(hours: 1, minutes: 30, seconds: 45);
  log(duration.timeToString); // 01:30:45
}

/// Example Flutter widget demonstrating Widget & BuildContext extensions.
class ExampleWidget extends StatelessWidget {
  const ExampleWidget({super.key});

  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        // Widget extensions
        const Text('Hello').paddingAll(16.0),
        const Text('World').marginSymmetric(horizontal: 8.0),
        const Text('Centered').center(),
        const Text('Expanded').expanded(),

        // BuildContext extensions
        Text('Width: ${context.width}'),
        Text('Is Phone: ${context.isPhone}'),
        Text('Dark Mode: ${context.isDarkMode}'),

        // Responsive values
        Text(
          'Responsive',
          style: TextStyle(
            fontSize: context.responsiveValue(
              mobile: 14.0,
              tablet: 18.0,
              desktop: 22.0,
            ),
          ),
        ),
      ],
    );
  }
}
0
likes
150
points
28
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

A comprehensive Flutter/Dart package providing powerful extensions for String, DateTime, int, double, num, List, Iterable, Map, Widget, BuildContext, Color, Duration, and dynamic types. Boost your productivity with 100+ utility methods.

Repository (GitHub)
View/report issues

Topics

#extensions #utils #utilities #helper #dart

License

MIT (license)

Dependencies

flutter

More

Packages that depend on ext_kit