super_daily_extensions 1.0.0
super_daily_extensions: ^1.0.0 copied to clipboard
A comprehensive Flutter toolkit featuring country & city pickers, custom UI widgets, responsive utilities, and daily developer extensions.
super_daily_extensions #
A modern, comprehensive Flutter toolkit providing country & city pickers, custom UI components, responsive utilities, and daily developer extensions to boost productivity.
✨ Features #
- 🌍 All World Countries & Cities: Complete database of countries with flags, dial codes, and auto-filtered cities.
- 📍 Smart Pickers:
CountryDropdown— Searchable country dropdown.CityDropdown— Dynamic city dropdown auto-linked to selected country.CountryPhoneField— Phone input with integrated flag & dial code picker.CountryCityPhonePicker— Composite country, city, and phone form picker.
- 🎨 Professional UI Components:
CustomButton— Primary, outlined, text variants, loading spinners, and icon support.CustomContainer— Responsive percentage-based sizing (w: 90,h: 30), shadows, gradients, borders.CustomText— Semantic typography (heading,subheading,body,caption) with responsive scaling and click handling.CustomTextField— Status-aware (normal,success,warning,error), outline/filled/rounded variants.CustomAlertDialog— Animated backdrop blur dialogs with semantic types (success,warning,error,confirm).CustomSnackBar— Floating semantic snackbars accessible via context or global key.CustomDatePickerField,CustomTimePickerField,CustomDateRangePicker— Clean form pickers with intl formatting.CustomImagePreview— Base64/memory thumbnail with interactive pinch-to-zoom full-screen viewer.ProfessionalDataTable— Sortable, zebra-striped, responsive data table with dual-axis scrolling.
- ⚡ Daily Developer Extensions:
- Context:
context.width,context.isMobile,context.push(),context.showSuccessDialog(),context.showConfirmDialog(),context.showCustomSnackBar(),context.pickDate(),context.pickTime(). - Widget:
.p(),.px(),.py(),.center(),.expanded(),.onTap(),.card(),.cornerRadius(),.toCustomContainer(). - String:
'test@email.com'.isValidEmail,'flutter_dev'.toTitleCase,'0300-1234567'.cleanPhoneNumber,'Title'.toHeading(),'Sub'.toSubheading(). - Num & DateTime:
16.h,10.w,2.seconds,500.ms,dateTime.toDisplayDate(),timeOfDay.formatPattern().
- Context:
📸 Screenshots #
🌍 Smart Pickers & Core Components #
| Country, City & Phone Picker | Custom Buttons & TextFields | Date, Time & Image Preview |
|---|---|---|
![]() |
![]() |
![]() |
🎨 Semantic Alert Dialogs & Modals #
| Success Alert | Warning Alert | Error Alert | Confirm Modal |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
📊 Data Tables & Dialog Overview #
| Professional Data Table | Dialogs & Alerts Overview |
|---|---|
![]() |
![]() |
📦 Installation #
Add this to your pubspec.yaml:
dependencies:
super_daily_extensions: ^1.0.0
Then run:
flutter pub get
🚀 Quick Start #
1. Import the package #
import 'package:super_daily_extensions/super_daily_extensions.dart';
2. Country & City Dropdowns #
// Standalone Country Dropdown
CountryDropdown(
selectedCountry: selectedCountry,
onChanged: (country) {
setState(() => selectedCountry = country);
},
)
// Dynamic City Dropdown (Filtered by Country)
CityDropdown(
country: selectedCountry,
selectedCity: selectedCity,
onChanged: (city) {
setState(() => selectedCity = city);
},
)
// Phone Field with Country Flag
CountryPhoneField(
selectedCountry: selectedCountry,
onPhoneChanged: (fullPhone, rawNumber, dialCode) {
print('Full: $fullPhone, Number: $rawNumber');
},
)
// All-in-one Master Picker
CountryCityPhonePicker(
showCountry: true,
showCity: true,
showPhone: true,
onChanged: (country, city, phone) {
print('Selected: ${country?.name}, $city, $phone');
},
)
3. Professional UI Widgets #
Buttons & Progress
CustomButton.primary(
title: 'Save Changes',
icon: Icons.check,
onPressed: () {},
)
CustomButton.outlined(
title: 'Cancel',
onPressed: () {},
)
CustomButton(
title: 'Loading',
isLoading: true,
onPressed: () {},
)
Responsive Container & Typography
// Responsive container (e.g. 90% screen width, 12px radius)
CustomContainer(
w: 90,
radius: 12,
padding: const EdgeInsets.all(16),
child: 'Welcome to App'.toHeading(),
)
// Chained widget extension
const Text('Card Content')
.toCustomContainer(radius: 16, color: Colors.white);
// Typographic string extensions
'Dashboard Overview'.toHeading();
'Monthly Statistics'.toSubheading();
'Standard body description text.'.toBody();
'Updated 5m ago'.toCaption();
Dialogs & SnackBars via Context Extensions
// Semantic alert dialogs
context.showSuccessDialog(
title: 'Payment Successful',
message: 'Your order has been placed successfully!',
);
context.showConfirmDialog(
title: 'Delete Item?',
message: 'This action cannot be undone.',
isDanger: true,
onConfirm: () => deleteItem(),
);
// Floating SnackBars
context.showCustomSnackBar('File uploaded!');
Pickers & Data Table
// Date & Time form pickers
CustomDatePickerField(
selectedDate: DateTime.now(),
dateFormat: 'dd/MM/yyyy',
onDateSelected: (date) {},
)
CustomTimePickerField(
selectedTime: TimeOfDay.now(),
timeFormat: 'hh:mm a',
onTimeSelected: (time) {},
)
CustomDateRangePicker(
startDate: startDate,
endDate: endDate,
onRangeSelected: (start, end) {},
)
// Professional Data Table
ProfessionalDataTable(
columns: [
DataTableColumn(label: 'Name', field: 'name', sortable: true),
DataTableColumn(label: 'Role', field: 'role'),
],
data: [
{'name': 'Ali Khan', 'role': 'Developer'},
{'name': 'Sara Ahmed', 'role': 'Designer'},
],
buildActions: (row) => [
IconButton(icon: const Icon(Icons.edit), onPressed: () {}),
],
)
4. Daily Developer Extensions #
Spacing & Layout
16.h // SizedBox(height: 16)
10.w // SizedBox(width: 10)
Text('Save')
.p(12)
.center()
.onTap(() => print('Tapped!'))
.card(radius: 12)
Context Helpers & Navigation
if (context.isMobile) {
// Mobile layout
}
print(context.width); // Screen width
context.push(const ProfileScreen());
context.pop();
context.hideKeyboard();
String & Date Helpers
'dev@gmail.com'.isValidEmail; // true
'flutter_dev'.toTitleCase; // 'Flutter Dev'
'flutter'.capitalizeFirst; // 'Flutter'
'0300-1234567'.cleanPhoneNumber; // '03001234567'
DateTime.now().toDisplayDate(); // '15 Jan 2026'
TimeOfDay.now().formatPattern(); // '02:30 PM'
📄 License #
This project is licensed under the MIT License - see the LICENSE file for details.








