Flutter Veterinary Health Card with Vitals Tiles and Vaccination Chips

A pet health record card that pairs three vitals tiles with a wrapped row of vaccination chips, so an overdue booster stands out against the ones already cleared. Includes the next appointment and a booking CTA, built with Wind utility classes and full dark-mode pairs.

Anılcan Çakır by Anılcan Çakır 73 views 0 stars 3 weeks ago Rev 1
Flutter Veterinary Health Card with Vitals Tiles and Vaccination Chips preview
main.dart
WDiv(
  className: 'max-w-sm rounded-3xl bg-white dark:bg-gray-900 border border-gray-200 dark:border-gray-800 p-6 shadow-xl',
  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-12 h-12 rounded-2xl bg-amber-500 dark:bg-amber-500',
              child: WIcon(
                Icons.favorite,
                className: 'text-white text-xl'
              ),
            ),
            WDiv(
              className: 'flex flex-col ml-3',
              children: [
                WText(
                  'Bramble',
                  className: 'text-lg font-bold text-gray-900 dark:text-white'
                ),
                WText(
                  'Golden Retriever  |  4 yrs',
                  className: 'text-xs text-gray-500 dark:text-gray-400 mt-0.5'
                ),
              ],
            ),
          ],
        ),
        WDiv(
          className: 'rounded-full bg-emerald-100 dark:bg-emerald-500 px-2.5 py-1',
          child: WText(
            'Healthy',
            className: 'text-[11px] font-bold text-emerald-700 dark:text-gray-900'
          ),
        ),
      ],
    ),
    WDiv(
      className: 'flex flex-row items-center justify-between w-full mt-5',
      children: [
        WDiv(
          className: 'flex flex-col items-center justify-center w-[102px] rounded-2xl bg-gray-50 dark:bg-gray-800 py-3',
          children: [
            WIcon(
              Icons.favorite,
              className: 'text-rose-500 dark:text-rose-400 text-base'
            ),
            WText(
              '92',
              className: 'text-lg font-bold text-gray-900 dark:text-white mt-1'
            ),
            WText(
              'bpm resting',
              className: 'text-[10px] text-gray-500 dark:text-gray-400'
            ),
          ],
        ),
        WDiv(
          className: 'flex flex-col items-center justify-center w-[102px] rounded-2xl bg-gray-50 dark:bg-gray-800 py-3',
          children: [
            WIcon(
              Icons.trending_up,
              className: 'text-sky-500 dark:text-sky-400 text-base'
            ),
            WText(
              '31.4',
              className: 'text-lg font-bold text-gray-900 dark:text-white mt-1'
            ),
            WText(
              'kg, up 0.6',
              className: 'text-[10px] text-gray-500 dark:text-gray-400'
            ),
          ],
        ),
        WDiv(
          className: 'flex flex-col items-center justify-center w-[102px] rounded-2xl bg-gray-50 dark:bg-gray-800 py-3',
          children: [
            WIcon(
              Icons.water_drop,
              className: 'text-teal-500 dark:text-teal-400 text-base'
            ),
            WText(
              'Good',
              className: 'text-lg font-bold text-gray-900 dark:text-white mt-1'
            ),
            WText(
              'hydration',
              className: 'text-[10px] text-gray-500 dark:text-gray-400'
            ),
          ],
        ),
      ],
    ),
    WDiv(
      className: 'flex flex-row items-center justify-between w-full mt-5',
      children: [
        WText(
          'VACCINATIONS',
          className: 'text-[10px] font-bold tracking-wide text-gray-400 dark:text-gray-500'
        ),
        WText(
          '1 due soon',
          className: 'text-[10px] font-semibold text-amber-600 dark:text-amber-400'
        ),
      ],
    ),
    WDiv(
      className: 'wrap gap-2 w-full mt-2.5',
      children: [
        WDiv(
          className: 'flex flex-row items-center rounded-full border border-emerald-200 dark:border-emerald-500 bg-emerald-50 dark:bg-gray-800 px-2.5 py-1.5',
          children: [
            WIcon(
              Icons.check_circle,
              className: 'text-emerald-500 dark:text-emerald-400 text-xs'
            ),
            WText(
              'Rabies',
              className: 'text-[11px] font-semibold text-gray-900 dark:text-white ml-1.5'
            ),
          ],
        ),
        WDiv(
          className: 'flex flex-row items-center rounded-full border border-emerald-200 dark:border-emerald-500 bg-emerald-50 dark:bg-gray-800 px-2.5 py-1.5',
          children: [
            WIcon(
              Icons.check_circle,
              className: 'text-emerald-500 dark:text-emerald-400 text-xs'
            ),
            WText(
              'Bordetella',
              className: 'text-[11px] font-semibold text-gray-900 dark:text-white ml-1.5'
            ),
          ],
        ),
        WDiv(
          className: 'flex flex-row items-center rounded-full border border-emerald-200 dark:border-emerald-500 bg-emerald-50 dark:bg-gray-800 px-2.5 py-1.5',
          children: [
            WIcon(
              Icons.check_circle,
              className: 'text-emerald-500 dark:text-emerald-400 text-xs'
            ),
            WText(
              'DHPP',
              className: 'text-[11px] font-semibold text-gray-900 dark:text-white ml-1.5'
            ),
          ],
        ),
        WDiv(
          className: 'flex flex-row items-center rounded-full border border-emerald-200 dark:border-emerald-500 bg-emerald-50 dark:bg-gray-800 px-2.5 py-1.5',
          children: [
            WIcon(
              Icons.check_circle,
              className: 'text-emerald-500 dark:text-emerald-400 text-xs'
            ),
            WText(
              'Lyme',
              className: 'text-[11px] font-semibold text-gray-900 dark:text-white ml-1.5'
            ),
          ],
        ),
        WDiv(
          className: 'flex flex-row items-center rounded-full border border-amber-300 dark:border-amber-500 bg-amber-50 dark:bg-gray-800 px-2.5 py-1.5',
          children: [
            WIcon(
              Icons.warning,
              className: 'text-amber-500 dark:text-amber-400 text-xs'
            ),
            WText(
              'Lepto, 9 days',
              className: 'text-[11px] font-semibold text-gray-900 dark:text-white ml-1.5'
            ),
          ],
        ),
      ],
    ),
    WDiv(
      className: 'flex flex-row items-center w-full rounded-2xl bg-gray-50 dark:bg-gray-800 p-3 mt-4',
      children: [
        WDiv(
          className: 'flex flex-row items-center justify-center w-9 h-9 rounded-full bg-white dark:bg-gray-900',
          child: WIcon(
            Icons.calendar_today,
            className: 'text-amber-500 dark:text-amber-400 text-sm'
          ),
        ),
        WDiv(
          className: 'flex flex-col ml-3',
          children: [
            WText(
              'Next visit Aug 20, 10:30 AM',
              className: 'text-xs font-semibold text-gray-900 dark:text-white'
            ),
            WText(
              'Dr. Okafor  |  Riverside Animal Clinic',
              className: 'text-[11px] text-gray-500 dark:text-gray-400 mt-0.5'
            ),
          ],
        ),
      ],
    ),
    WDiv(
      className: 'w-full mt-5',
      child: WButton(
        className: 'flex flex-row items-center justify-center w-full rounded-2xl bg-amber-500 dark:bg-amber-500 py-3.5',
        child: WText(
          'Book the Lepto Booster',
          className: 'text-sm font-bold text-white dark:text-gray-900'
        ),
      ),
    ),
    WDiv(
      className: 'flex flex-row items-center justify-center w-full mt-3',
      child: WText(
        'Microchip 985141 0032 8871',
        className: 'text-[11px] text-gray-400 dark:text-gray-500'
      ),
    ),
  ],
)
Stats
Views
73
Stars
0
Revisions
1
Size
7,664 chars
Created
Aug 2, 2026