appSnackbar function

void appSnackbar(
  1. BuildContext context,
  2. String message, {
  3. IconData? icon,
  4. Color? iconColor,
  5. bool backToRoot = false,
})

Generic reusable Snackbar for the package

Implementation

void appSnackbar(
    BuildContext context,
    String message, {
      IconData? icon, // optional icon
      Color? iconColor, // optional icon color
      bool backToRoot = false,
    }) {
  final snackBar = SnackBar(
    content: Row(
      children: [
        Expanded(
          child: Text(
            message,
            style: const TextStyle(color: Colors.white, fontSize: 14),
          ),
        ),
        if (icon != null) ...[
          const SizedBox(width: 8), // text এবং icon এর মধ্যে gap
          Icon(icon, color: iconColor ?? Colors.white, size: 20),
        ],
      ],
    ),
    behavior: SnackBarBehavior.floating,
    margin: const EdgeInsets.symmetric(horizontal: 16, vertical: 12),
    padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12),
    duration: const Duration(seconds: 2),
    backgroundColor: Colors.black87,
    shape: RoundedRectangleBorder(
      borderRadius: BorderRadius.circular(12),
    ),
  );

  ScaffoldMessenger.of(context).showSnackBar(snackBar);

  if (backToRoot) {
    Future.delayed(const Duration(milliseconds: 500), () {
      Navigator.popUntil(context, (route) => route.isFirst);
    });
  }
}