broadcastCard function
Widget
broadcastCard(
- BuildContext context, {
- Widget? broadcastWidget,
- String? broadcastTitle,
- IconData? broadcastIcon,
- Color? broadcastIconColor,
- 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,
),
],
),
),
),
),
);
}