broadcastCard function

Widget broadcastCard(
  1. BuildContext context, {
  2. Widget? broadcastWidget,
  3. String? broadcastTitle,
  4. IconData? broadcastIcon,
  5. Color? broadcastIconColor,
  6. VoidCallback? onBroadcastTap,
})

Implementation

Widget broadcastCard(
    BuildContext context,
    { Widget? broadcastWidget,
      String? broadcastTitle,
      IconData? broadcastIcon,
      Color? broadcastIconColor,
      VoidCallback? onBroadcastTap,
    }
    ) {
  if (broadcastWidget != null) return broadcastWidget;

  final isDark = Theme.of(context).brightness == Brightness.dark;
  final iconColor = broadcastIconColor ?? const Color(0xFFF97316);
  final title = broadcastTitle ?? 'Broadcast';

  final bgColor = isDark
      ? const Color(0xFF1E293B)
      : const Color(0xFFFFF7ED);
  final borderColor = isDark
      ? const Color(0xFFF97316).withValues(alpha: 0.3)
      : const Color(0xFFFFEDD5);
  final titleColor = isDark
      ? const Color(0xFFF8FAFC)
      : const Color(0xFF0F172A);

  return Container(
    margin: const EdgeInsets.only(bottom: 12),
    decoration: BoxDecoration(
      color: bgColor,
      borderRadius: BorderRadius.circular(14),
      border: Border.all(
        color: borderColor,
        width: 1.0,
      ),
      boxShadow: [
        if (!isDark)
          BoxShadow(
            color: const Color(0xFFF97316).withValues(alpha: 0.05),
            blurRadius: 6,
            offset: const Offset(0, 2),
          ),
      ],
    ),
    child: Material(
      color: Colors.transparent,
      borderRadius: BorderRadius.circular(14),
      clipBehavior: Clip.antiAlias,
      child: InkWell(
        onTap: onBroadcastTap,
        splashColor: iconColor.withValues(alpha: 0.12),
        highlightColor: iconColor.withValues(alpha: 0.06),
        child: Padding(
          padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 9),
          child: Row(
            children: [
              // Small Icon Container
              Container(
                width: 32,
                height: 32,
                decoration: BoxDecoration(
                  color: iconColor.withValues(alpha: isDark ? 0.22 : 0.14),
                  borderRadius: BorderRadius.circular(9),
                  border: Border.all(
                    color: iconColor.withValues(alpha: isDark ? 0.35 : 0.22),
                    width: 1,
                  ),
                ),
                child: Center(
                  child: Icon(
                    broadcastIcon ?? Icons.campaign_rounded,
                    color: iconColor,
                    size: 18,
                  ),
                ),
              ),

              const SizedBox(width: 10),

              // Broadcast Name
              Expanded(
                child: Text(
                  title,
                  maxLines: 1,
                  overflow: TextOverflow.ellipsis,
                  style: TextStyle(
                    fontSize: 14.5,
                    fontWeight: FontWeight.w700,
                    color: titleColor,
                    letterSpacing: -0.2,
                  ),
                ),
              ),

              const SizedBox(width: 8),

              // Trailing Chevron
              Icon(
                Icons.chevron_right_rounded,
                size: 18,
                color: isDark ? Colors.white38 : Colors.grey.shade400,
              ),
            ],
          ),
        ),
      ),
    ),
  );
}