build method

  1. @override
Widget build(
  1. BuildContext context,
  2. Metrics<Message> model
)
override

Builds the UI according to the state in model.

Implementation

@override
Widget build(BuildContext context, Metrics model) => Theme(
  // expansion tiles don't have much customizability
  data: Theme.of(context).copyWith(
    listTileTheme: ListTileTheme.of(
      context,
    ).copyWith(dense: true, minVerticalPadding: 4, minTileHeight: 24),
  ),
  child: ExpansionTile(
    dense: true,
    expandedCrossAxisAlignment: CrossAxisAlignment.start,
    expandedAlignment: Alignment.centerLeft,
    childrenPadding: const EdgeInsets.symmetric(horizontal: 16),
    leading: Icon(model.icon, color: model.overallSeverity?.color),
    title: Text(
      model.name,
      style: context.textTheme.titleLarge?.copyWith(
        color: model.overallSeverity?.color,
        fontSize: 20,
      ),
    ),
    children: [
      for (final MetricLine metric in model.allMetrics)
        SelectableText(
          metric.text,
          style: TextStyle(color: metric.severity?.color),
        ),
      const SizedBox(height: 4),
    ],
  ),
);