badge static method
Implementation
static String badge() => r'''
import 'package:flutter/material.dart';
import '../tokens/app_colors.dart';
import '../tokens/app_radius.dart';
import '../tokens/app_sizes.dart';
import '../tokens/app_typography.dart';
class AppBadge extends StatelessWidget {
const AppBadge({
super.key,
required this.child,
this.count,
this.dot = false,
});
final Widget child;
final int? count;
final bool dot;
@override
Widget build(BuildContext context) {
final isDark = Theme.of(context).brightness == Brightness.dark;
final show = dot || (count != null && count! > 0);
return Stack(
clipBehavior: Clip.none,
children: <Widget>[
child,
if (show)
Positioned(
right: -4,
top: -4,
child: Semantics(
label: count == null ? 'Notification' : '$count notifications',
child: Container(
constraints: const BoxConstraints(
minWidth: AppSizes.badgeSize,
minHeight: AppSizes.badgeSize,
),
padding: const EdgeInsets.symmetric(horizontal: 4),
decoration: BoxDecoration(
color: isDark ? AppColorsDark.error : AppColors.error,
borderRadius: BorderRadius.circular(AppRadius.pill),
),
alignment: Alignment.center,
child: dot
? const SizedBox.shrink()
: Text(
count! > 99 ? '99+' : '$count',
style: AppTypography.caption.copyWith(
color: AppColors.onPrimary,
fontSize: 10,
),
),
),
),
),
],
);
}
}
''';