Flutter Essentials (Dev Utils) v1.0.0

A modern collection of extensions, validators, formatters, and helper utilities that reduce Flutter boilerplate while keeping code clean, readable, and maintainable.

Installation

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

dependencies:
  flutter_essentials: ^1.0.0

Quick Start

import 'package:flutter_essentials_plus/flutter_essentials_plus.dart';

Features

1. Context Extensions

Remove repetitive BuildContext code:

context.width
context.height
context.screenSize
context.isDark
context.isLight
context.theme
context.colorScheme
context.textTheme
context.padding
context.viewInsets
context.safeArea
context.orientation
context.devicePixelRatio
context.statusBarHeight
context.navigationBarHeight
context.keyboardHeight

context.hideKeyboard()
context.push(page)
context.replace(page)
context.pop()
context.showSnackBar()
context.showLoader()
context.hideLoader()
context.showBottomSheet()
context.showDialog()

2. String Extensions

Save time everywhere:

text.capitalize
text.titleCase
text.camelCase
text.snakeCase
text.kebabCase
text.pascalCase
text.constantCase
text.reverse
text.initials

text.removeWhitespace
text.removeEmoji
text.onlyDigits
text.onlyLetters
text.truncate(30)

text.maskEmail()
text.maskPhone()
text.maskCNIC()

text.isEmail
text.isPhone
text.isURL
text.isNumeric
text.isAlphabet
text.isAlphaNumeric
text.isEmoji
text.containsEmoji
text.containsArabic
text.containsUrdu
text.containsHtml

text.extractEmails()
text.extractUrls()
text.extractPhones()
text.extractHashtags()
text.extractMentions()

3. Number Extensions

1000.format()
500000.formatCompact()
1500000.formatCurrency()
125648.bytesToReadable()

25.percentOf(500)
500.clampValue(0, 1000)

20.isEven
15.isOdd

30.seconds
10.minutes
2.hours
7.days

4. DateTime Extensions

Among the most-used utilities:

date.timeAgo
date.isToday
date.isYesterday
date.isTomorrow

date.startOfDay
date.endOfDay
date.startOfWeek
date.endOfWeek
date.startOfMonth
date.endOfMonth

date.age
date.daysBetween(other)

date.monthName
date.weekdayName
date.isWeekend
date.isLeapYear

5. Widget Extensions

Compose widgets with readable chains instead of nesting many wrappers:

Text("Hello")
    .paddingAll(16)
    .center()
    .card()
    .shadow()
    .animateFade()

// Other useful helpers:
widget.visible(bool)
widget.opacity(.5)
widget.rotate()
widget.scale()
widget.blur()
widget.hero()
widget.tooltip()
widget.gesture()
widget.onTap()
widget.expand()
widget.safeArea()
widget.clipRadius()
widget.gradient()
widget.loading()

6. BuildContext Navigation

context.push(HomePage())
context.pushNamed("/home")
context.replace(HomePage())
context.pop()
context.popUntil("/home")
context.clearStack(HomePage())
context.pushAndRemoveUntil(HomePage())

7. Validators

Support both global and Pakistan-specific formats:

Validators.email
Validators.password
Validators.url
Validators.phone
Validators.cnic
Validators.iban
Validators.swift
Validators.creditCard
Validators.postalCode
Validators.ntn
Validators.passport
Validators.username

8. Formatting

Ready-to-use static formatters:

Formatters.currency(150000)
Formatters.phone('923001234567')
Formatters.iban('PK00BANK...')
Formatters.cnic('3520212345678')
Formatters.creditCard('12345678...')
Formatters.date(DateTime.now())
Formatters.time(DateTime.now())
Formatters.duration(Duration(hours: 1))
Formatters.fileSize(1048576)
Formatters.percentage(0.75)
Formatters.ordinal(1)
Formatters.distance(1500)

9. Helper Widgets

Ready-to-use UI components that solve common problems:

LoadingOverlay(isLoading: true, child: ...)
DebounceButton(onPressed: () {}, child: Text('Submit'))
ExpandableText('Very long text...', maxLines: 2)
PasswordStrength(password: 'MyPass123!')
OtpTimer(seconds: 60, onResend: () {})
NetworkImagePlaceholder('https://url.com')
AvatarGenerator('John Doe')
GradientBorder(...)
ShimmerBox(width: 100, height: 20)
ShimmerEffect(child: ...)
EmptyState(title: 'No Data')
ErrorState(message: 'Failed', onRetry: () {})
RetryButton(onRetry: () {})
CopyText('Text to copy')
AsyncBuilder(...)
ResponsiveBuilder(...)
AnimatedSwitcherX(...)

10. Animations

Simple extension-based animations keep code concise:

widget.fade()
widget.slide()
widget.zoom()
widget.animatedRotate()
widget.flip()
widget.shake()
widget.animatedScale()
widget.bounce()
widget.elastic()
widget.wiggle()

11. Utilities

ClipboardHelper.copy('text')
LaunchHelper.url('https://google.com')
DeviceHelper.getDeviceModel()
PlatformHelper.isMobile
PermissionHelper.request(Permission.camera)
InternetHelper.hasConnection()
BatteryHelper.getLevel()
StorageHelper.setString('key', 'value')
Logger.info('Message')
Debouncer().run(() {})
Throttle().run(() {})
Retry.execute(() async {})
UuidGenerator.generate()
RandomGenerator.string(10)

12. Responsive Helpers

context.isPhone
context.isTablet
context.isDesktop
context.isLandscape
context.isPortrait
context.breakpoint
context.widthPercent(20)
context.heightPercent(50)

13. Color Extensions

color.lighten()
color.darken()
color.withOpacitySafe(0.5)
ColorExtensions.random()
color.invert()
color.hex
color.gradientTo(other)

14. Iterable & List Extensions

list.firstOrNull
list.lastOrNull
list.random()
list.shuffleCopy()
list.chunk(5)
list.groupBy((e) => e.id)
list.unique()
list.sorted()
list.insertBetween(element)

15. Map Extensions

map.getString('key')
map.getInt('age')
map.getDouble('price')
map.getBool('isActive')
map.getList('items')
map.getMap('user')
map.deepCopy()
map.removeNulls()

License

MIT License