custom_quick_alert 2.0.1 copy "custom_quick_alert: ^2.0.1" to clipboard
custom_quick_alert: ^2.0.1 copied to clipboard

Instantly display animated alert dialogs like success, error, warning, confirm, loading, or custom — all with minimal code.

Banner

The most beautiful and customizable alert dialogs for Flutter #

Create stunning, professional-looking alerts with smooth animations, extensive customization options, and zero hassle setup.

Build Status GitHub Stars Code Coverage Contributors License Platform Package Pub Version

🌟 Demo #

Demo

Experience the full power of Custom Quick Alert in action


✨ Features #

Core Features #

  • 🎨 7 Pre-built Alert Types - Success, Error, Warning, Info, Confirm, Loading, and Custom
  • 🎬 Smooth Lottie Animations - High-quality, engaging animations for each type
  • Context-Free Usage - Trigger alerts from anywhere without passing context
  • One-Line Implementation - Beautiful alerts with minimal code
  • 📱 Responsive Design - Adapts to all screen sizes and orientations

⚙️ Customization #

  • 🎨 Full Theme Control - Colors, fonts, backgrounds, and more
  • 🔧 Custom Widgets - Embed your own widgets for unlimited flexibility
  • 🎭 6 Animation Types - Scale, slide, rotate entrance animations
  • 3 Position Options - Center, top, or bottom positioning
  • ⏱️ Auto-dismiss Timer - Automatic closure with custom duration
  • 🛡️ Barrier Control - Configurable tap-to-dismiss behavior

📸 Screenshots & Previews #

🎯 Alert Types Overview #

Success ✅ Error ❌ Warning ⚠️
Success Error Warning
Perfect for confirmations Handle errors gracefully Important notifications
Info ℹ️ Confirm 🤔 Loading ⏳
Info Confirm Loading
Share information Get user decisions Show progress

🎨 Dialog Previews #


Success Dialog

Error Dialog

Warning Dialog

Info Dialog

Confirm Dialog

Custom Dialog
## 🚀 Quick Start Guide

📦 Installation #

Add custom_quick_alert to your Flutter project:

flutter pub add custom_quick_alert

📝 Import #

import 'package:custom_quick_alert/custom_quick_alert.dart';

⚙️ Setup (Required) #

🚨 Important: To enable context-free alerts, add the navigator key to your MaterialApp:

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

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Custom Quick Alert Demo',
      // 🔑 This line enables context-free alerts
      navigatorKey: customQuickAlertNavigatorKey,
      home: const HomePage(),
    );
  }
}

🎯 Basic Usage #

// Success alert
CustomQuickAlert.success(
  title: 'Success!',
  message: 'Operation completed successfully.',
);

// Error alert
CustomQuickAlert.error(
  title: 'Error!',
  message: 'Something went wrong.',
);

// Warning alert
CustomQuickAlert.warning(
  title: 'Warning!',
  message: 'Please review your input.',
);

� Comprehensive Examples #

🎯 All Alert Types #

🔍 Click to expand examples

✅ Success Alert

CustomQuickAlert.success(
  title: 'Account Created!',
  message: 'Welcome to our app! Your account has been successfully created.',
);

❌ Error Alert

CustomQuickAlert.error(
  title: 'Connection Failed',
  message: 'Unable to connect to the server. Please check your internet connection and try again.',
);

⚠️ Warning Alert

CustomQuickAlert.warning(
  title: 'Unsaved Changes',
  message: 'You have unsaved changes. Are you sure you want to leave this page?',
);

ℹ️ Info Alert

CustomQuickAlert.info(
  title: 'Pro Tip!',
  message: 'You can swipe left on any item to access quick actions.',
);

🤔 Confirm Alert

CustomQuickAlert.confirm(
  title: 'Delete Account',
  message: 'This action cannot be undone. Are you sure you want to delete your account?',
  confirmText: 'Delete',
  cancelText: 'Cancel',
  onConfirm: () {
    // Handle confirmation
    print('Account deleted');
    CustomQuickAlert.dismiss();
  },
  onCancel: () {
    print('Action cancelled');
  },
);

⏳ Loading Alert

void processPayment() async {
  // Show loading
  CustomQuickAlert.loading(
    title: 'Processing Payment',
    message: 'Please wait while we process your payment...',
  );

  try {
    // Simulate API call
    await Future.delayed(const Duration(seconds: 3));
    
    // Dismiss loading and show success
    CustomQuickAlert.dismiss();
    CustomQuickAlert.success(
      title: 'Payment Successful!',
      message: 'Your payment has been processed successfully.',
    );
  } catch (e) {
    // Dismiss loading and show error
    CustomQuickAlert.dismiss();
    CustomQuickAlert.error(
      title: 'Payment Failed',
      message: 'An error occurred while processing your payment.',
    );
  }
}

🎨 Advanced Customization #

🛠️ Custom Alert with Full Control #

CustomQuickAlert.show(
  type: CustomQuickAlertType.custom,
  title: '🌟 Rate Your Experience',
  message: 'How would you rate our service today?',
  
  // Custom Lottie animation
  lottieAsset: 'assets/animations/custom.json',
  
  // Custom widget content
  customContent: Container(
    margin: const EdgeInsets.symmetric(vertical: 16),
    child: Row(
      mainAxisAlignment: MainAxisAlignment.center,
      children: List.generate(5, (index) => 
        Icon(
          index < 4 ? Icons.star : Icons.star_border,
          color: Colors.amber,
          size: 30,
        ),
      ),
    ),
  ),
  
  // Styling
  backgroundColor: const Color(0xFF1E1E2E),
  titleColor: Colors.white,
  messageColor: Colors.white70,
  borderRadius: 20.0,
  
  // Buttons
  confirmText: '✨ Submit Rating',
  cancelText: '⏰ Later',
  showCancel: true,
  confirmBtnColor: Colors.purple,
  cancelBtnColor: Colors.grey,
  
  // Animations & Position
  animType: CustomQuickAlertAnimType.slideInUp,
  position: CustomQuickAlertPosition.center,
  
  // Auto dismiss
  autoCloseDuration: const Duration(seconds: 10),
  
  // Callbacks
  onConfirm: () {
    print('Rating submitted!');
    CustomQuickAlert.dismiss();
    
    // Show thank you message
    CustomQuickAlert.success(
      title: 'Thank You!',
      message: 'Your feedback helps us improve.',
    );
  },
  onCancel: () {
    print('Rating postponed');
  },
);

📊 Customization Parameters #

📋 Complete Parameter Reference
Parameter Type Description Default
type CustomQuickAlertType Required - Alert type -
title String? Alert title null
message String? Alert message null
lottieAsset String? Custom Lottie animation path Default for type
customContent Widget? Custom widget content null
animType CustomQuickAlertAnimType Entrance animation scale
position CustomQuickAlertPosition Screen position center
barrierDismissible bool Tap outside to dismiss true
showCancel bool Show cancel button false
showConfirm bool Show confirm button true
confirmText String Confirm button text 'OK'
cancelText String Cancel button text 'Cancel'
onConfirm VoidCallback? Confirm action null
onCancel VoidCallback? Cancel action null
confirmBtnColor Color Confirm button color Theme dependent
cancelBtnColor Color Cancel button color Theme dependent
confirmTextColor Color Confirm text color White
cancelTextColor Color Cancel text color Theme dependent
backgroundColor Color Dialog background Theme dependent
titleColor Color Title text color Theme dependent
messageColor Color Message text color Theme dependent
autoCloseDuration Duration? Auto dismiss timer null
borderRadius double Dialog corner radius 16.0
width double? Custom dialog width Auto
disableBackBtn bool Disable Android back false

🎭 Animation Types #

// Available animation types
CustomQuickAlertAnimType.scale        // Default smooth scale
CustomQuickAlertAnimType.rotate       // Rotate entrance
CustomQuickAlertAnimType.slideInDown  // Slide from top
CustomQuickAlertAnimType.slideInUp    // Slide from bottom
CustomQuickAlertAnimType.slideInLeft  // Slide from left
CustomQuickAlertAnimType.slideInRight // Slide from right

📍 Position Options #

// Available positions
CustomQuickAlertPosition.center  // Center of screen (default)
CustomQuickAlertPosition.top     // Top of screen
CustomQuickAlertPosition.bottom  // Bottom of screen

🎯 Alert Types #

// All available alert types
CustomQuickAlertType.success  // ✅ Success alerts
CustomQuickAlertType.error    // ❌ Error alerts
CustomQuickAlertType.warning  // ⚠️ Warning alerts
CustomQuickAlertType.info     // ℹ️ Info alerts
CustomQuickAlertType.confirm  // 🤔 Confirmation dialogs
CustomQuickAlertType.loading  // ⏳ Loading indicators
CustomQuickAlertType.custom   // 🎨 Fully custom alerts

🎯 Common Use Cases #

� Real-world Examples

🔐 Authentication Flow #

// Login validation
void handleLogin(String email, String password) async {
  if (email.isEmpty || password.isEmpty) {
    CustomQuickAlert.warning(
      title: 'Missing Information',
      message: 'Please fill in all required fields.',
    );
    return;
  }

  CustomQuickAlert.loading(title: 'Signing in...');
  
  try {
    await authService.login(email, password);
    CustomQuickAlert.dismiss();
    CustomQuickAlert.success(
      title: 'Welcome Back!',
      message: 'You have successfully logged in.',
    );
  } catch (e) {
    CustomQuickAlert.dismiss();
    CustomQuickAlert.error(
      title: 'Login Failed',
      message: 'Invalid credentials. Please try again.',
    );
  }
}

🛒 E-commerce Actions #

void addToCart(Product product) {
  CustomQuickAlert.confirm(
    title: 'Add to Cart',
    message: 'Add "${product.name}" to your cart?',
    confirmText: 'Add Item',
    onConfirm: () {
      cart.add(product);
      CustomQuickAlert.dismiss();
      CustomQuickAlert.success(
        title: 'Added to Cart!',
        message: '${product.name} has been added to your cart.',
        autoCloseDuration: const Duration(seconds: 2),
      );
    },
  );
}

📱 App Updates #

void checkForUpdates() async {
  CustomQuickAlert.loading(title: 'Checking for updates...');
  
  final hasUpdate = await updateService.checkForUpdate();
  CustomQuickAlert.dismiss();
  
  if (hasUpdate) {
    CustomQuickAlert.info(
      title: 'Update Available',
      message: 'A new version of the app is available. Would you like to update now?',
      confirmText: 'Update',
      showCancel: true,
      onConfirm: () => updateService.startUpdate(),
    );
  } else {
    CustomQuickAlert.success(
      title: 'Up to Date',
      message: 'You are running the latest version.',
    );
  }
}

🔧 Utility Methods #

📤 Dismiss Alert #

// Programmatically dismiss the current alert
CustomQuickAlert.dismiss();

🎨 Custom Styling Helper #

// Create consistent styling across your app
class AppAlerts {
  static void showSuccess(String title, String message) {
    CustomQuickAlert.success(
      title: title,
      message: message,
      confirmBtnColor: Colors.green.shade600,
      backgroundColor: Colors.green.shade50,
      borderRadius: 12.0,
    );
  }
  
  static void showError(String title, String message) {
    CustomQuickAlert.error(
      title: title,
      message: message,
      confirmBtnColor: Colors.red.shade600,
      backgroundColor: Colors.red.shade50,
      borderRadius: 12.0,
    );
  }
}

📱 Platform Support #

Platform Support Notes
🤖 Android ✅ Full All features supported
🍎 iOS ✅ Full All features supported
🌐 Web ✅ Full All features supported
🖥️ macOS ✅ Full All features supported
🐧 Linux ✅ Full All features supported
🪟 Windows ✅ Full All features supported

⚡ Performance Tips #

🚀 Optimization Guide

🎯 Best Practices #

  1. Preload Animations: Include animations in your asset bundle
  2. Reuse Instances: Use static methods for better performance
  3. Memory Management: Always dismiss loading alerts
  4. Custom Animations: Optimize Lottie files for mobile

📊 Benchmarks #

  • Cold Start: < 50ms initialization
  • Alert Display: < 100ms to show
  • Memory Usage: < 2MB additional RAM
  • Animation Performance: 60 FPS on all platforms

🐛 Troubleshooting #

❓ Common Issues & Solutions

Issue: Alert not showing #

Solution: Ensure customQuickAlertNavigatorKey is set in MaterialApp

MaterialApp(
  navigatorKey: customQuickAlertNavigatorKey, // ← Add this
  // ... other properties
)

Issue: Animation not working #

Solution: Verify Lottie asset path in pubspec.yaml

flutter:
  assets:
    - assets/animations/

Issue: Custom colors not applying #

Solution: Use the correct color parameters

CustomQuickAlert.show(
  backgroundColor: Colors.blue.shade50,  // Dialog background
  titleColor: Colors.blue.shade900,     // Title color
  messageColor: Colors.blue.shade700,   // Message color
);

🚀 How to Contribute #

📋 Contribution Guidelines

🐛 Bug Reports

  1. Check existing issues first
  2. Use the bug report template
  3. Include reproduction steps
  4. Provide system information

✨ Feature Requests

  1. Search existing feature requests
  2. Use the feature request template
  3. Explain the use case
  4. Provide mockups if applicable

🔧 Code Contributions

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Follow the coding standards
  4. Add tests for new features
  5. Update documentation
  6. Commit changes (git commit -m 'Add amazing feature')
  7. Push to branch (git push origin feature/amazing-feature)
  8. Open a Pull Request

� Documentation

  • Improve README clarity
  • Add more examples
  • Fix typos and grammar
  • Translate to other languages

👨‍💻 Development Setup #

# Clone the repository
git clone https://github.com/ariyanshiputech/custom_quick_alert.git

# Navigate to project
cd custom_quick_alert

# Install dependencies
flutter pub get

# Run example app
cd example
flutter run

# Run tests
flutter test

# Check code coverage
flutter test --coverage

📄 License #

Custom Quick Alert is released under the MIT License.

License


💝 Show Your Support #

If you find this package helpful, please consider:

⭐ Star on GitHub 👤 Follow Developer 💰 Sponsor Project

🌟 Ways to Support #

  • Star this repository - Help others discover this package
  • 🐛 Report bugs - Help improve the package quality
  • 💡 Request features - Share your ideas for improvements
  • 📢 Share with community - Spread the word on social media
  • 💖 Contribute code - Submit pull requests
  • 📝 Improve docs - Help make documentation better

📖 Resource 🔗 Link 📝 Description
Documentation GitHub Wiki Complete documentation and guides
Package pub.dev Official Dart package repository
Example App Live Demo Working example implementation
Bug Reports Issues Report bugs and request features
Discussions GitHub Discussions Community discussions and Q&A
Changelog CHANGELOG.md Version history and updates

🎯 Custom Quick Alert #

Elevating Flutter apps with beautiful, customizable alerts #

Ariyan Shipu
*Flutter Developer & Open Source Enthusiast*

Ariyan Shipu #

GitHub Website Pub.devPub.dev Sponsor Thank you for using Custom Quick Alert! 🙏

3
likes
0
points
98
downloads

Publisher

verified publisherariyanshipu.me

Weekly Downloads

Instantly display animated alert dialogs like success, error, warning, confirm, loading, or custom — all with minimal code.

Repository (GitHub)
View/report issues

Topics

#alert #dialog #popup #animation #lottie

Documentation

Documentation

License

unknown (license)

Dependencies

flutter, lottie

More

Packages that depend on custom_quick_alert