Flutter SLA Scorecard Card with Bullet Chart Target Markers

A support desk scorecard that reads the way an analyst reads one. Every metric sits on a qualitative band track carrying a thick actual value bar and a vertical target tick, so a missed target is obvious at a glance instead of buried in a percentage. Built with Wind utility classes, complete dark mode pairs, and no charting dependency.

Anılcan Çakır by Anılcan Çakır 5 views 0 stars 3 hours ago Rev 1
Flutter SLA Scorecard Card with Bullet Chart Target Markers preview
main.dart
WDiv(
  className: 'flex flex-col w-[340px] rounded-3xl bg-white dark:bg-gray-900 border border-gray-200 dark:border-gray-800 p-5',
  children: [
    WDiv(
      className: 'flex flex-row items-center justify-between w-full',
      children: [
        WDiv(
          className: 'flex flex-row items-center',
          children: [
            WDiv(
              className: 'flex flex-row items-center justify-center w-10 h-10 rounded-2xl bg-indigo-50 dark:bg-indigo-950',
              child: WIcon(
                Icons.speed,
                className: 'text-xl text-indigo-500 dark:text-indigo-400'
              ),
            ),
            WDiv(
              className: 'flex flex-col ml-3',
              children: [
                WText(
                  'Helpdesk SLA',
                  className: 'text-base font-bold text-gray-900 dark:text-white'
                ),
                WText(
                  'Northwind Support, September',
                  className: 'text-[11px] text-gray-500 dark:text-gray-400'
                ),
              ],
            ),
          ],
        ),
        WDiv(
          className: 'rounded-full bg-amber-100 dark:bg-amber-900 px-2 py-1',
          child: WText(
            '2 AT RISK',
            className: 'text-[9px] font-bold tracking-wide text-amber-700 dark:text-amber-300'
          ),
        ),
      ],
    ),
    WDiv(
      className: 'flex flex-row items-center justify-between w-full mt-4',
      children: [
        WDiv(
          className: 'flex flex-col',
          children: [
            WText(
              '93.4%',
              className: 'text-3xl font-bold text-gray-900 dark:text-white'
            ),
            WText(
              'BLENDED ATTAINMENT',
              className: 'text-[9px] font-bold tracking-wide text-gray-400 dark:text-gray-500'
            ),
          ],
        ),
        WDiv(
          className: 'flex flex-col items-end',
          children: [
            WDiv(
              className: 'rounded-full bg-rose-100 dark:bg-rose-900 px-2 py-1',
              child: WText(
                '-0.1 pts',
                className: 'text-[11px] font-bold text-rose-700 dark:text-rose-300'
              ),
            ),
            WDiv(
              className: 'mt-1',
              child: WText(
                'vs blended target',
                className: 'text-[9px] text-gray-400 dark:text-gray-500'
              ),
            ),
          ],
        ),
      ],
    ),
    WDiv(
      className: 'flex flex-row items-center justify-between w-full mt-4',
      children: [
        WText(
          'BULLET CHART',
          className: 'text-[9px] font-bold tracking-wide text-gray-400 dark:text-gray-500'
        ),
        WText(
          'AXIS 60 TO 100%',
          className: 'text-[9px] font-bold tracking-wide text-gray-400 dark:text-gray-500'
        ),
      ],
    ),
    WDiv(
      className: 'flex flex-col w-full mt-2',
      children: [
        WDiv(
          className: 'flex flex-row items-center justify-between w-full',
          children: [
            WText(
              'First response under 15m',
              className: 'text-[11px] font-medium text-gray-700 dark:text-gray-300'
            ),
            WText(
              '96.4%',
              className: 'text-[11px] font-bold text-emerald-600 dark:text-emerald-400'
            ),
          ],
        ),
        WDiv(
          className: 'relative w-[300px] h-[16px] mt-1',
          children: [
            WDiv(
              className: 'flex flex-row w-[300px] h-[16px]',
              children: [
                WDiv(
                  className: 'w-[150px] h-[16px] rounded-l-sm bg-gray-100 dark:bg-gray-800'
                ),
                WDiv(
                  className: 'w-[90px] h-[16px] bg-gray-200 dark:bg-gray-700'
                ),
                WDiv(
                  className: 'w-[60px] h-[16px] rounded-r-sm bg-gray-400 dark:bg-gray-500'
                ),
              ],
            ),
            WDiv(
              className: 'absolute left-[0px] top-[5px] w-[273px] h-[6px] rounded-sm bg-emerald-500 dark:bg-emerald-400'
            ),
            WDiv(
              className: 'absolute left-[262px] top-[1px] w-[2px] h-[14px] bg-slate-800 dark:bg-slate-200'
            ),
          ],
        ),
      ],
    ),
    WDiv(
      className: 'flex flex-col w-full mt-3',
      children: [
        WDiv(
          className: 'flex flex-row items-center justify-between w-full',
          children: [
            WText(
              'Resolution under 24h',
              className: 'text-[11px] font-medium text-gray-700 dark:text-gray-300'
            ),
            WText(
              '91.8%',
              className: 'text-[11px] font-bold text-rose-600 dark:text-rose-400'
            ),
          ],
        ),
        WDiv(
          className: 'relative w-[300px] h-[16px] mt-1',
          children: [
            WDiv(
              className: 'flex flex-row w-[300px] h-[16px]',
              children: [
                WDiv(
                  className: 'w-[150px] h-[16px] rounded-l-sm bg-gray-100 dark:bg-gray-800'
                ),
                WDiv(
                  className: 'w-[90px] h-[16px] bg-gray-200 dark:bg-gray-700'
                ),
                WDiv(
                  className: 'w-[60px] h-[16px] rounded-r-sm bg-gray-400 dark:bg-gray-500'
                ),
              ],
            ),
            WDiv(
              className: 'absolute left-[0px] top-[5px] w-[238px] h-[6px] rounded-sm bg-rose-500 dark:bg-rose-400'
            ),
            WDiv(
              className: 'absolute left-[262px] top-[1px] w-[2px] h-[14px] bg-slate-800 dark:bg-slate-200'
            ),
          ],
        ),
      ],
    ),
    WDiv(
      className: 'flex flex-col w-full mt-3',
      children: [
        WDiv(
          className: 'flex flex-row items-center justify-between w-full',
          children: [
            WText(
              'CSAT at or above 4 stars',
              className: 'text-[11px] font-medium text-gray-700 dark:text-gray-300'
            ),
            WText(
              '97.1%',
              className: 'text-[11px] font-bold text-emerald-600 dark:text-emerald-400'
            ),
          ],
        ),
        WDiv(
          className: 'relative w-[300px] h-[16px] mt-1',
          children: [
            WDiv(
              className: 'flex flex-row w-[300px] h-[16px]',
              children: [
                WDiv(
                  className: 'w-[150px] h-[16px] rounded-l-sm bg-gray-100 dark:bg-gray-800'
                ),
                WDiv(
                  className: 'w-[90px] h-[16px] bg-gray-200 dark:bg-gray-700'
                ),
                WDiv(
                  className: 'w-[60px] h-[16px] rounded-r-sm bg-gray-400 dark:bg-gray-500'
                ),
              ],
            ),
            WDiv(
              className: 'absolute left-[0px] top-[5px] w-[278px] h-[6px] rounded-sm bg-emerald-500 dark:bg-emerald-400'
            ),
            WDiv(
              className: 'absolute left-[255px] top-[1px] w-[2px] h-[14px] bg-slate-800 dark:bg-slate-200'
            ),
          ],
        ),
      ],
    ),
    WDiv(
      className: 'flex flex-col w-full mt-3',
      children: [
        WDiv(
          className: 'flex flex-row items-center justify-between w-full',
          children: [
            WText(
              'Backlog aged under 7d',
              className: 'text-[11px] font-medium text-gray-700 dark:text-gray-300'
            ),
            WText(
              '88.3%',
              className: 'text-[11px] font-bold text-rose-600 dark:text-rose-400'
            ),
          ],
        ),
        WDiv(
          className: 'relative w-[300px] h-[16px] mt-1',
          children: [
            WDiv(
              className: 'flex flex-row w-[300px] h-[16px]',
              children: [
                WDiv(
                  className: 'w-[150px] h-[16px] rounded-l-sm bg-gray-100 dark:bg-gray-800'
                ),
                WDiv(
                  className: 'w-[90px] h-[16px] bg-gray-200 dark:bg-gray-700'
                ),
                WDiv(
                  className: 'w-[60px] h-[16px] rounded-r-sm bg-gray-400 dark:bg-gray-500'
                ),
              ],
            ),
            WDiv(
              className: 'absolute left-[0px] top-[5px] w-[212px] h-[6px] rounded-sm bg-rose-500 dark:bg-rose-400'
            ),
            WDiv(
              className: 'absolute left-[225px] top-[1px] w-[2px] h-[14px] bg-slate-800 dark:bg-slate-200'
            ),
          ],
        ),
      ],
    ),
    WDiv(
      className: 'flex flex-row items-center justify-between w-full mt-4',
      children: [
        WDiv(
          className: 'flex flex-row items-center',
          children: [
            WDiv(
              className: 'w-[18px] h-[8px] rounded-l-sm bg-gray-100 dark:bg-gray-800'
            ),
            WDiv(
              className: 'w-[14px] h-[8px] bg-gray-200 dark:bg-gray-700'
            ),
            WDiv(
              className: 'w-[10px] h-[8px] rounded-r-sm bg-gray-400 dark:bg-gray-500'
            ),
            WDiv(
              className: 'ml-2',
              child: WText(
                'BREACH, WATCH, MET',
                className: 'text-[9px] font-bold tracking-wide text-gray-400 dark:text-gray-500'
              ),
            ),
          ],
        ),
        WDiv(
          className: 'flex flex-row items-center',
          children: [
            WDiv(
              className: 'w-[2px] h-[10px] bg-slate-800 dark:bg-slate-200'
            ),
            WDiv(
              className: 'ml-2',
              child: WText(
                'TARGET',
                className: 'text-[9px] font-bold tracking-wide text-gray-400 dark:text-gray-500'
              ),
            ),
          ],
        ),
      ],
    ),
    WDiv(
      className: 'w-full mt-4',
      child: WButton(
        className: 'flex flex-row items-center justify-center w-full rounded-2xl bg-gray-900 dark:bg-white px-4 py-3',
        child: WText(
          'Review the two breaches',
          className: 'text-sm font-bold text-white dark:text-gray-900'
        ),
      ),
    ),
  ],
)
Stats
Views
5
Stars
0
Revisions
1
Size
10,338 chars
Created
Sep 14, 2026