badge static method

String badge()

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,
                      ),
                    ),
            ),
          ),
        ),
    ],
  );
}
}
''';