İçeriğe geç
English
Tüm örnekler

Flutter Monthly Budget Card with Category Spending Bars

A personal-finance budget card built with Wind: a remaining-balance hero with an overall progress bar, plus per-category spending rows (food, transport, shopping, bills) with icon chips and linear progress bars that turn red when a category is over budget. Dark-mode ready.

  • WDiv
  • WText
  • WIcon
  • WSpacer
önizleme
kjuw688i.dart
WDiv(
  className: 'mx-auto max-w-sm flex flex-col gap-5 rounded-3xl p-6 bg-white border border-gray-100 shadow-xl dark:bg-gray-900 dark:border-gray-800',
  children: [
    WDiv(
      className: 'flex flex-row items-center justify-between w-full',
      children: [
        WText(
          'October Budget',
          className: 'text-lg font-bold text-gray-900 dark:text-white'
        ),
        WDiv(
          className: 'flex flex-row items-center gap-1.5 px-2.5 py-1 rounded-full bg-emerald-50 dark:bg-emerald-500/15',
          children: [
            WIcon(
              Icons.check_circle,
              className: 'text-sm text-emerald-500 dark:text-emerald-400'
            ),
            WText(
              'On track',
              className: 'text-xs font-semibold text-emerald-600 dark:text-emerald-300'
            ),
          ]
        ),
      ]
    ),
    WDiv(
      className: 'flex flex-col gap-2 w-full',
      children: [
        WDiv(
          className: 'flex flex-row items-end justify-between w-full',
          children: [
            WDiv(
              className: 'flex flex-col',
              children: [
                WText(
                  'Remaining',
                  className: 'text-xs font-medium text-gray-400 dark:text-gray-500'
                ),
                WText(
                  '$1,240',
                  className: 'text-3xl font-bold text-gray-900 dark:text-white'
                ),
              ]
            ),
            WText(
              'of $3,500',
              className: 'text-sm font-medium text-gray-400 dark:text-gray-500'
            ),
          ]
        ),
        WDiv(
          className: 'flex flex-row items-center w-full h-2.5 rounded-full bg-gray-100 dark:bg-gray-800',
          child: WDiv(
            className: 'h-2.5 w-[218px] rounded-full bg-gradient-to-r from-indigo-500 to-violet-500',
            child: WSpacer(
              className: 'w-[218px] h-2.5'
            )
          )
        ),
      ]
    ),
    WDiv(
      className: 'flex flex-col gap-4 w-full',
      children: [
        WDiv(
          className: 'flex flex-col gap-2 w-full',
          children: [
            WDiv(
              className: 'flex flex-row items-center justify-between w-full',
              children: [
                WDiv(
                  className: 'flex flex-row items-center gap-2',
                  children: [
                    WDiv(
                      className: 'w-9 h-9 rounded-xl bg-emerald-50 dark:bg-emerald-500/15 flex flex-row items-center justify-center',
                      child: WIcon(
                        Icons.restaurant,
                        className: 'text-base text-emerald-500 dark:text-emerald-400'
                      )
                    ),
                    WText(
                      'Food & Dining',
                      className: 'text-sm font-semibold text-gray-800 dark:text-gray-100'
                    ),
                  ]
                ),
                WText(
                  '$620 / $800',
                  className: 'text-sm font-medium text-gray-500 dark:text-gray-400'
                ),
              ]
            ),
            WDiv(
              className: 'flex flex-row items-center w-full h-1.5 rounded-full bg-gray-100 dark:bg-gray-800',
              child: WDiv(
                className: 'h-1.5 w-[262px] rounded-full bg-emerald-500 dark:bg-emerald-400',
                child: WSpacer(
                  className: 'w-[262px] h-1.5'
                )
              )
            ),
          ]
        ),
        WDiv(
          className: 'flex flex-col gap-2 w-full',
          children: [
            WDiv(
              className: 'flex flex-row items-center justify-between w-full',
              children: [
                WDiv(
                  className: 'flex flex-row items-center gap-2',
                  children: [
                    WDiv(
                      className: 'w-9 h-9 rounded-xl bg-blue-50 dark:bg-blue-500/15 flex flex-row items-center justify-center',
                      child: WIcon(
                        Icons.directions_car,
                        className: 'text-base text-blue-500 dark:text-blue-400'
                      )
                    ),
                    WText(
                      'Transport',
                      className: 'text-sm font-semibold text-gray-800 dark:text-gray-100'
                    ),
                  ]
                ),
                WText(
                  '$180 / $300',
                  className: 'text-sm font-medium text-gray-500 dark:text-gray-400'
                ),
              ]
            ),
            WDiv(
              className: 'flex flex-row items-center w-full h-1.5 rounded-full bg-gray-100 dark:bg-gray-800',
              child: WDiv(
                className: 'h-1.5 w-[202px] rounded-full bg-blue-500 dark:bg-blue-400',
                child: WSpacer(
                  className: 'w-[202px] h-1.5'
                )
              )
            ),
          ]
        ),
        WDiv(
          className: 'flex flex-col gap-2 w-full',
          children: [
            WDiv(
              className: 'flex flex-row items-center justify-between w-full',
              children: [
                WDiv(
                  className: 'flex flex-row items-center gap-2',
                  children: [
                    WDiv(
                      className: 'w-9 h-9 rounded-xl bg-rose-50 dark:bg-rose-500/15 flex flex-row items-center justify-center',
                      child: WIcon(
                        Icons.shopping_bag,
                        className: 'text-base text-rose-500 dark:text-rose-400'
                      )
                    ),
                    WText(
                      'Shopping',
                      className: 'text-sm font-semibold text-gray-800 dark:text-gray-100'
                    ),
                  ]
                ),
                WText(
                  '$540 / $500',
                  className: 'text-sm font-bold text-rose-500 dark:text-rose-400'
                ),
              ]
            ),
            WDiv(
              className: 'flex flex-row items-center w-full h-1.5 rounded-full bg-gray-100 dark:bg-gray-800',
              child: WDiv(
                className: 'h-1.5 w-[330px] rounded-full bg-rose-500 dark:bg-rose-400',
                child: WSpacer(
                  className: 'w-[330px] h-1.5'
                )
              )
            ),
          ]
        ),
        WDiv(
          className: 'flex flex-col gap-2 w-full',
          children: [
            WDiv(
              className: 'flex flex-row items-center justify-between w-full',
              children: [
                WDiv(
                  className: 'flex flex-row items-center gap-2',
                  children: [
                    WDiv(
                      className: 'w-9 h-9 rounded-xl bg-indigo-50 dark:bg-indigo-500/15 flex flex-row items-center justify-center',
                      child: WIcon(
                        Icons.account_balance_wallet,
                        className: 'text-base text-indigo-500 dark:text-indigo-400'
                      )
                    ),
                    WText(
                      'Bills & Utilities',
                      className: 'text-sm font-semibold text-gray-800 dark:text-gray-100'
                    ),
                  ]
                ),
                WText(
                  '$920 / $1,000',
                  className: 'text-sm font-medium text-gray-500 dark:text-gray-400'
                ),
              ]
            ),
            WDiv(
              className: 'flex flex-row items-center w-full h-1.5 rounded-full bg-gray-100 dark:bg-gray-800',
              child: WDiv(
                className: 'h-1.5 w-[309px] rounded-full bg-indigo-500 dark:bg-indigo-400',
                child: WSpacer(
                  className: 'w-[309px] h-1.5'
                )
              )
            ),
          ]
        ),
      ]
    ),
  ],
)
  • Flutter Electromagnetic Spectrum Card with Log Scale Wavelength Bands and Visible Light Zoom

    A Flutter electromagnetic spectrum card for science and physics education apps: radio, microwave, infrared, visible, UV, X-ray and gamma bands on a log wavelength axis from 10 m to 0.1 pm with NASA band edges, and a connector zooming the visible slice into a 700 to 400 nm strip. Built with wind_kit.

    • WDiv
    • WIcon
    • WText
    • WButton
  • Flutter Euro Banknote Card with True Scale Note Stack and Denomination Colours

    A euro banknote card for banking, travel and currency apps: all six Europa series notes from €5 to €200 drawn to true scale in their official grey, red, blue, orange, green and yellow-brown, each tagged with its millimetre size, plus width and height stats showing how every step up adds 6 or 7 mm.

    • WDiv
    • WText
    • WButton
    • WIcon
  • Flutter Pascal Triangle Card with Odd Entry Pattern and Row Sums

    A Flutter Pascal's triangle card for maths and tutoring apps: rows 0 to 7 as binomial coefficient tiles, odd entries shaded so the Sierpinski pattern shows, and a row sum gutter doubling from 1 to 128. Counts 36 entries, 27 odd, 255 total. Centred wind_kit rows, one node per number.

    • WDiv
    • WIcon
    • WText
    • WButton