Flutter Stock Watchlist Card with Live Price Deltas
A dark fintech watchlist card with a bold portfolio value, a daily-change indicator, and a list of ticker rows showing price and color-coded percent deltas in green and red pills. Built with Tailwind-style className utilities in Flutter.
main.dart
WDiv(
className: 'mx-auto max-w-sm flex flex-col gap-4 rounded-3xl p-6 bg-gray-950 shadow-xl dark:bg-gray-950',
children: [
WDiv(
className: 'flex flex-col gap-1',
children: [
WDiv(
className: 'flex flex-row items-center justify-between w-full',
children: [
WText(
'Portfolio',
className: 'text-xs font-semibold uppercase tracking-widest text-gray-500 dark:text-gray-500'
),
WDiv(
className: 'flex flex-row items-center gap-1 rounded-full px-2 py-1 bg-green-500/15 dark:bg-green-500/15',
children: [
WDiv(
className: 'w-2 h-2 rounded-full bg-green-400 dark:bg-green-400',
child: WSpacer(
className: 'w-2 h-2'
),
),
WText(
'Markets open',
className: 'text-xs font-medium text-green-400 dark:text-green-400'
),
],
),
],
),
WDiv(
className: 'flex flex-row items-baseline gap-2',
children: [
WText(
'$48,210',
className: 'text-4xl font-extrabold text-white'
),
WDiv(
className: 'flex flex-row items-center gap-1',
children: [
WIcon(
Icons.trending_up,
className: 'text-green-400 text-sm dark:text-green-400'
),
WText(
'+2.6% today',
className: 'text-sm font-semibold text-green-400 dark:text-green-400'
),
],
),
],
),
],
),
WDiv(
className: 'flex flex-col gap-3 w-full border-t border-gray-800 dark:border-gray-800 pt-4',
children: [
WDiv(
className: 'flex flex-row items-center justify-between w-full',
children: [
WDiv(
className: 'flex flex-col',
children: [
WText(
'NVDA',
className: 'text-base font-bold text-white'
),
WText(
'NVIDIA Corp',
className: 'text-xs text-gray-500 dark:text-gray-500'
),
],
),
WDiv(
className: 'flex flex-row items-center gap-3',
children: [
WText(
'$184.30',
className: 'text-sm font-semibold text-white'
),
WDiv(
className: 'rounded-full px-2 py-1 bg-green-500/15 dark:bg-green-500/15',
child: WText(
'+3.4%',
className: 'text-xs font-bold text-green-400 dark:text-green-400'
),
),
],
),
],
),
WDiv(
className: 'flex flex-row items-center justify-between w-full',
children: [
WDiv(
className: 'flex flex-col',
children: [
WText(
'AAPL',
className: 'text-base font-bold text-white'
),
WText(
'Apple Inc',
className: 'text-xs text-gray-500 dark:text-gray-500'
),
],
),
WDiv(
className: 'flex flex-row items-center gap-3',
children: [
WText(
'$229.87',
className: 'text-sm font-semibold text-white'
),
WDiv(
className: 'rounded-full px-2 py-1 bg-green-500/15 dark:bg-green-500/15',
child: WText(
'+1.2%',
className: 'text-xs font-bold text-green-400 dark:text-green-400'
),
),
],
),
],
),
WDiv(
className: 'flex flex-row items-center justify-between w-full',
children: [
WDiv(
className: 'flex flex-col',
children: [
WText(
'TSLA',
className: 'text-base font-bold text-white'
),
WText(
'Tesla Inc',
className: 'text-xs text-gray-500 dark:text-gray-500'
),
],
),
WDiv(
className: 'flex flex-row items-center gap-3',
children: [
WText(
'$242.10',
className: 'text-sm font-semibold text-white'
),
WDiv(
className: 'rounded-full px-2 py-1 bg-red-500/15 dark:bg-red-500/15',
child: WText(
'-0.8%',
className: 'text-xs font-bold text-red-400 dark:text-red-400'
),
),
],
),
],
),
WDiv(
className: 'flex flex-row items-center justify-between w-full',
children: [
WDiv(
className: 'flex flex-col',
children: [
WText(
'MSFT',
className: 'text-base font-bold text-white'
),
WText(
'Microsoft',
className: 'text-xs text-gray-500 dark:text-gray-500'
),
],
),
WDiv(
className: 'flex flex-row items-center gap-3',
children: [
WText(
'$418.50',
className: 'text-sm font-semibold text-white'
),
WDiv(
className: 'rounded-full px-2 py-1 bg-green-500/15 dark:bg-green-500/15',
child: WText(
'+0.5%',
className: 'text-xs font-bold text-green-400 dark:text-green-400'
),
),
],
),
],
),
],
),
],
)
Stats
- Views
- 16
- Stars
- 0
- Revisions
- 1
- Size
- 6,330 chars
- Created
- Jun 15, 2026