Flutter Bowling Scoresheet Card with Frame by Frame Strike Marks
A Flutter bowling scoresheet card for league apps: the real ten-frame table with two roll cells above a running total, traditional strike and spare marks and the current frame ringed in amber. Nested flex rows with fixed widths in wind_kit, no data grid widget.
WDiv(
className: 'flex flex-col w-full max-w-sm rounded-3xl bg-white dark:bg-gray-900 p-5 border border-gray-200 dark:border-gray-800',
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-xl bg-amber-500 dark:bg-amber-600',
child: WIcon(
Icons.local_fire_department,
className: 'text-lg text-white dark:text-white'
),
),
WDiv(
className: 'flex flex-col ml-3',
children: [
WText(
'M. Okonjo',
className: 'text-base font-bold text-gray-900 dark:text-white'
),
WText(
'Tuesday league, game 2',
className: 'text-[11px] text-gray-500 dark:text-gray-400'
),
],
),
],
),
WDiv(
className: 'flex flex-row items-center rounded-full bg-amber-50 dark:bg-amber-900 px-3 py-1',
child: WText(
'FRAME 8',
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(
'125',
className: 'text-2xl font-bold text-gray-900 dark:text-white'
),
WText(
'THROUGH 6 FRAMES',
className: 'text-[9px] font-semibold tracking-wide text-gray-400 dark:text-gray-500'
),
],
),
WDiv(
className: 'flex flex-col items-end',
children: [
WDiv(
className: 'flex flex-row items-center rounded-lg bg-amber-500 dark:bg-amber-600 px-2 py-1',
child: WText(
'TURKEY',
className: 'text-[11px] font-bold tracking-wide text-white dark:text-white'
),
),
WDiv(
className: 'mt-1',
child: WText(
'frames 2 to 4',
className: 'text-[10px] text-gray-500 dark:text-gray-400'
),
),
],
),
],
),
WDiv(
className: 'flex flex-row items-center justify-between w-full mt-4',
children: [
WText(
'ROLLS',
className: 'text-[9px] font-semibold tracking-wide text-gray-400 dark:text-gray-500'
),
WText(
'CUMULATIVE',
className: 'text-[9px] font-semibold tracking-wide text-gray-400 dark:text-gray-500'
),
],
),
WDiv(
className: 'flex flex-row items-center justify-center w-full mt-2',
child: WDiv(
className: 'flex flex-row items-start w-[310px]',
children: [
WDiv(
className: 'flex flex-col items-center w-[30px] border-2 border-gray-300 dark:border-gray-600',
children: [
WDiv(
className: 'flex flex-row items-center justify-around w-[26px] h-[26px] border-b-2 border-gray-300 dark:border-gray-600',
children: [
WText(
'8',
className: 'text-[12px] font-bold text-gray-900 dark:text-white'
),
WDiv(
className: 'w-[1px] h-[26px] bg-gray-300 dark:bg-gray-600'
),
WText(
'/',
className: 'text-[12px] font-bold text-gray-900 dark:text-white'
),
],
),
WDiv(
className: 'flex flex-row items-center justify-center w-[26px] h-[28px] bg-gray-50 dark:bg-gray-800',
child: WText(
'20',
className: 'text-[12px] font-bold text-gray-700 dark:text-gray-200'
),
),
],
),
WDiv(
className: 'flex flex-col items-center w-[30px] border-2 border-gray-300 dark:border-gray-600',
children: [
WDiv(
className: 'flex flex-row items-center justify-around w-[26px] h-[26px] border-b-2 border-gray-300 dark:border-gray-600',
children: [
WText(
'X',
className: 'text-[12px] font-bold text-gray-900 dark:text-white'
),
WDiv(
className: 'w-[1px] h-[26px] bg-gray-300 dark:bg-gray-600'
),
WDiv(
className: 'w-[8px] h-[8px]'
),
],
),
WDiv(
className: 'flex flex-row items-center justify-center w-[26px] h-[28px] bg-gray-50 dark:bg-gray-800',
child: WText(
'50',
className: 'text-[12px] font-bold text-gray-700 dark:text-gray-200'
),
),
],
),
WDiv(
className: 'flex flex-col items-center w-[30px] border-2 border-gray-300 dark:border-gray-600',
children: [
WDiv(
className: 'flex flex-row items-center justify-around w-[26px] h-[26px] border-b-2 border-gray-300 dark:border-gray-600',
children: [
WText(
'X',
className: 'text-[12px] font-bold text-gray-900 dark:text-white'
),
WDiv(
className: 'w-[1px] h-[26px] bg-gray-300 dark:bg-gray-600'
),
WDiv(
className: 'w-[8px] h-[8px]'
),
],
),
WDiv(
className: 'flex flex-row items-center justify-center w-[26px] h-[28px] bg-gray-50 dark:bg-gray-800',
child: WText(
'77',
className: 'text-[12px] font-bold text-gray-700 dark:text-gray-200'
),
),
],
),
WDiv(
className: 'flex flex-col items-center w-[30px] border-2 border-gray-300 dark:border-gray-600',
children: [
WDiv(
className: 'flex flex-row items-center justify-around w-[26px] h-[26px] border-b-2 border-gray-300 dark:border-gray-600',
children: [
WText(
'X',
className: 'text-[12px] font-bold text-gray-900 dark:text-white'
),
WDiv(
className: 'w-[1px] h-[26px] bg-gray-300 dark:bg-gray-600'
),
WDiv(
className: 'w-[8px] h-[8px]'
),
],
),
WDiv(
className: 'flex flex-row items-center justify-center w-[26px] h-[28px] bg-gray-50 dark:bg-gray-800',
child: WText(
'96',
className: 'text-[12px] font-bold text-gray-700 dark:text-gray-200'
),
),
],
),
WDiv(
className: 'flex flex-col items-center w-[30px] border-2 border-gray-300 dark:border-gray-600',
children: [
WDiv(
className: 'flex flex-row items-center justify-around w-[26px] h-[26px] border-b-2 border-gray-300 dark:border-gray-600',
children: [
WText(
'7',
className: 'text-[12px] font-bold text-gray-900 dark:text-white'
),
WDiv(
className: 'w-[1px] h-[26px] bg-gray-300 dark:bg-gray-600'
),
WText(
'2',
className: 'text-[12px] font-bold text-gray-900 dark:text-white'
),
],
),
WDiv(
className: 'flex flex-row items-center justify-center w-[26px] h-[28px] bg-gray-50 dark:bg-gray-800',
child: WText(
'105',
className: 'text-[12px] font-bold text-gray-700 dark:text-gray-200'
),
),
],
),
WDiv(
className: 'flex flex-col items-center w-[30px] border-2 border-gray-300 dark:border-gray-600',
children: [
WDiv(
className: 'flex flex-row items-center justify-around w-[26px] h-[26px] border-b-2 border-gray-300 dark:border-gray-600',
children: [
WText(
'9',
className: 'text-[12px] font-bold text-gray-900 dark:text-white'
),
WDiv(
className: 'w-[1px] h-[26px] bg-gray-300 dark:bg-gray-600'
),
WText(
'/',
className: 'text-[12px] font-bold text-gray-900 dark:text-white'
),
],
),
WDiv(
className: 'flex flex-row items-center justify-center w-[26px] h-[28px] bg-gray-50 dark:bg-gray-800',
child: WText(
'125',
className: 'text-[12px] font-bold text-gray-700 dark:text-gray-200'
),
),
],
),
WDiv(
className: 'flex flex-col items-center w-[30px] border-2 border-gray-300 dark:border-gray-600',
children: [
WDiv(
className: 'flex flex-row items-center justify-around w-[26px] h-[26px] border-b-2 border-gray-300 dark:border-gray-600',
children: [
WText(
'X',
className: 'text-[12px] font-bold text-gray-900 dark:text-white'
),
WDiv(
className: 'w-[1px] h-[26px] bg-gray-300 dark:bg-gray-600'
),
WDiv(
className: 'w-[8px] h-[8px]'
),
],
),
WDiv(
className: 'w-[26px] h-[28px] bg-gray-50 dark:bg-gray-800'
),
],
),
WDiv(
className: 'flex flex-col items-center w-[30px] border-2 border-amber-500 dark:border-amber-400',
children: [
WDiv(
className: 'flex flex-row items-center justify-around w-[26px] h-[26px] border-b-2 border-gray-300 dark:border-gray-600',
children: [
WDiv(
className: 'w-[8px] h-[8px]'
),
WDiv(
className: 'w-[1px] h-[26px] bg-gray-300 dark:bg-gray-600'
),
WDiv(
className: 'w-[8px] h-[8px]'
),
],
),
WDiv(
className: 'w-[26px] h-[28px] bg-gray-50 dark:bg-gray-800'
),
],
),
WDiv(
className: 'flex flex-col items-center w-[30px] border-2 border-gray-300 dark:border-gray-600',
children: [
WDiv(
className: 'flex flex-row items-center justify-around w-[26px] h-[26px] border-b-2 border-gray-300 dark:border-gray-600',
children: [
WDiv(
className: 'w-[8px] h-[8px]'
),
WDiv(
className: 'w-[1px] h-[26px] bg-gray-300 dark:bg-gray-600'
),
WDiv(
className: 'w-[8px] h-[8px]'
),
],
),
WDiv(
className: 'w-[26px] h-[28px] bg-gray-50 dark:bg-gray-800'
),
],
),
WDiv(
className: 'flex flex-col items-center w-[40px] border-2 border-gray-300 dark:border-gray-600',
children: [
WDiv(
className: 'flex flex-row items-center justify-around w-[36px] h-[26px] border-b-2 border-gray-300 dark:border-gray-600',
children: [
WDiv(
className: 'w-[8px] h-[8px]'
),
WDiv(
className: 'w-[1px] h-[26px] bg-gray-300 dark:bg-gray-600'
),
WDiv(
className: 'w-[8px] h-[8px]'
),
],
),
WDiv(
className: 'w-[36px] h-[28px] bg-gray-50 dark:bg-gray-800'
),
],
),
],
),
),
WDiv(
className: 'flex flex-row items-center justify-between w-full mt-4',
children: [
WDiv(
className: 'flex flex-col items-center w-[104px] rounded-xl bg-gray-50 dark:bg-gray-800 py-2',
children: [
WText(
'4',
className: 'text-base font-bold text-gray-900 dark:text-white'
),
WText(
'STRIKES',
className: 'text-[9px] font-semibold tracking-wide text-gray-400 dark:text-gray-500'
),
],
),
WDiv(
className: 'flex flex-col items-center w-[104px] rounded-xl bg-gray-50 dark:bg-gray-800 py-2',
children: [
WText(
'2',
className: 'text-base font-bold text-gray-900 dark:text-white'
),
WText(
'SPARES',
className: 'text-[9px] font-semibold tracking-wide text-gray-400 dark:text-gray-500'
),
],
),
WDiv(
className: 'flex flex-col items-center w-[104px] rounded-xl bg-gray-50 dark:bg-gray-800 py-2',
children: [
WText(
'1',
className: 'text-base font-bold text-gray-900 dark:text-white'
),
WText(
'OPEN',
className: 'text-[9px] font-semibold tracking-wide text-gray-400 dark:text-gray-500'
),
],
),
],
),
WDiv(
className: 'flex flex-row items-center w-full rounded-xl bg-emerald-50 dark:bg-emerald-900 px-3 py-2 mt-4',
children: [
WIcon(
Icons.trending_up,
className: 'text-base text-emerald-500 dark:text-emerald-300'
),
WDiv(
className: 'ml-2',
child: WText(
'On pace for 214, best of the season',
className: 'text-[11px] font-medium text-emerald-700 dark:text-emerald-200'
),
),
],
),
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 py-3',
child: WText(
'Open full scoresheet',
className: 'text-sm font-bold text-white dark:text-gray-900'
),
),
),
],
)
Benzer örnekler
-
Flutter Connect Four Board Card with Winning Diagonal and Series Score
A Connect Four game card for casual and board game apps: a 7 by 6 board with ringed winning discs on the diagonal, a marker over the last column played, the head to head series score, move and disc counts, and a play-again button.
-
Flutter Golf Scorecard Card with Birdie Circles and Bogey Squares
A Flutter golf scorecard card for round tracker apps: a back nine with hole and par rows, strokes marked the way golfers read them (circles under par, a double ring for an eagle, squares over par), a total against par and a post-to-handicap button. Built with wind_kit and dark mode pairs.
-
Flutter Poker Hand Odds Card with Board Cards and Equity Bar
A Flutter poker odds card for trainers and odds calculator apps: heads-up hole cards with suit glyphs, a flop with empty turn and river slots, a win and lose equity bar and every out as a mini card. Exact numbers over all 990 run-outs. Built with wind_kit className utilities.