Flutter Streaming Movie Card with Rating and Genre Tags
A cinematic detail card for a streaming or movie app: a gradient poster with a centered play affordance, rating and 4K HDR badges, genre tags, a two-line synopsis, and stacked Play and Add to My List actions. Built with Wind utility classes and full dark-mode pairing.
main.dart
WDiv(
className: 'flex flex-col w-full max-w-sm rounded-3xl overflow-hidden bg-white dark:bg-gray-900 border border-gray-200 dark:border-gray-800 shadow-xl',
children: [
WDiv(
className: 'relative h-44 bg-gradient-to-br from-indigo-500 to-fuchsia-600 dark:from-indigo-600 dark:to-fuchsia-700',
children: [
WDiv(
className: 'absolute inset-0 flex flex-row items-center justify-center',
child: WDiv(
className: 'flex flex-row items-center justify-center w-16 h-16 rounded-full bg-white/25 dark:bg-white/25 border border-white/50 dark:border-white/50',
child: WIcon(
Icons.play_arrow,
className: 'text-3xl text-white dark:text-white'
),
),
),
WDiv(
className: 'absolute top-4 left-4 flex flex-row items-center gap-1 px-2 py-1 rounded-lg bg-black/40 dark:bg-black/40',
children: [
WIcon(
Icons.star,
className: 'text-sm text-amber-300 dark:text-amber-300'
),
WText(
'8.9',
className: 'text-xs font-semibold text-white dark:text-white'
),
],
),
WDiv(
className: 'absolute top-4 right-4 px-2 py-1 rounded-lg bg-white/20 dark:bg-white/20',
child: WText(
'4K HDR',
className: 'text-xs font-bold tracking-wide text-white dark:text-white'
),
),
],
),
WDiv(
className: 'flex flex-col gap-3 p-5',
children: [
WText(
'Echoes of Tomorrow',
className: 'text-xl font-bold text-gray-900 dark:text-white'
),
WText(
'2024 . Sci-Fi Thriller . 2h 18m',
className: 'text-sm text-gray-500 dark:text-gray-400'
),
WDiv(
className: 'flex flex-row flex-wrap gap-2',
children: [
WDiv(
className: 'px-3 py-1 rounded-full bg-indigo-50 dark:bg-indigo-500/15',
child: WText(
'Sci-Fi',
className: 'text-xs font-medium text-indigo-700 dark:text-indigo-300'
),
),
WDiv(
className: 'px-3 py-1 rounded-full bg-indigo-50 dark:bg-indigo-500/15',
child: WText(
'Thriller',
className: 'text-xs font-medium text-indigo-700 dark:text-indigo-300'
),
),
WDiv(
className: 'px-3 py-1 rounded-full bg-indigo-50 dark:bg-indigo-500/15',
child: WText(
'Drama',
className: 'text-xs font-medium text-indigo-700 dark:text-indigo-300'
),
),
],
),
WText(
'A physicist intercepts a message from her future self, and racing to decode it unravels the line between memory and prophecy.',
className: 'text-sm leading-relaxed text-gray-600 dark:text-gray-400 line-clamp-2',
),
WButton(
className: 'flex flex-row items-center justify-center gap-2 w-full py-3 rounded-xl bg-indigo-600 dark:bg-indigo-500 shadow-lg',
child: WDiv(
className: 'flex flex-row items-center justify-center gap-2',
children: [
WIcon(
Icons.play_arrow,
className: 'text-lg text-white dark:text-white'
),
WText(
'Play Now',
className: 'text-sm font-semibold text-white dark:text-white'
),
],
),
),
WButton(
className: 'flex flex-row items-center justify-center gap-2 w-full py-3 rounded-xl border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800',
child: WDiv(
className: 'flex flex-row items-center justify-center gap-2',
children: [
WIcon(
Icons.add,
className: 'text-lg text-gray-700 dark:text-gray-200'
),
WText(
'Add to My List',
className: 'text-sm font-semibold text-gray-700 dark:text-gray-200'
),
],
),
),
],
),
],
)
Stats
- Views
- 11
- Stars
- 0
- Revisions
- 1
- Size
- 4,297 chars
- Created
- Jun 19, 2026