import 'package:aves/model/filters/mime.dart'; import 'package:aves/theme/colors.dart'; import 'package:aves/utils/mime_utils.dart'; import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/common/identity/aves_donut.dart'; import 'package:aves/widgets/common/identity/aves_filter_chip.dart'; import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; import 'package:provider/provider.dart'; class MimeDonut extends StatelessWidget { final IconData icon; final Map byMimeTypes; final Duration animationDuration; final AFilterCallback onFilterSelection; const MimeDonut({ super.key, required this.icon, required this.byMimeTypes, required this.animationDuration, required this.onFilterSelection, }); @override Widget build(BuildContext context) { final countFormatter = NumberFormat.decimalPattern(context.locale); String formatKey(d) => MimeUtils.displayType(d.key); return AvesDonut( title: Icon(icon), byTypes: byMimeTypes, animationDuration: animationDuration, formatKey: formatKey, formatValue: countFormatter.format, colorize: (context, d) { final colors = context.read(); return colors.fromString(formatKey(d)); }, onTap: (d) => onFilterSelection(MimeFilter(d.key)), ); } }