Flutter Code Minimap Card with Viewport Window and Problem Markers
An editor file overview rendered entirely from Wind utility classes: a syntax tinted minimap of the whole file, a translucent viewport window showing where you are scrolled, and an overview ruler ticking off every error and warning below the fold.
main.dart
WDiv(
className: 'flex flex-col w-[340px] p-5 rounded-2xl bg-white dark:bg-gray-900 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-violet-500 dark:bg-violet-400',
child: WIcon(
Icons.code,
className: 'text-xl text-white dark:text-gray-900'
),
),
WDiv(
className: 'flex flex-col ml-3',
children: [
WText(
'product_grid.dart',
className: 'text-base font-bold text-gray-900 dark:text-white'
),
WText(
'lib/src/widgets, 412 lines',
className: 'text-[11px] text-gray-500 dark:text-gray-400'
),
],
),
],
),
WDiv(
className: 'rounded-full bg-amber-100 dark:bg-amber-900 px-2 py-1',
child: WText(
'3 ISSUES',
className: 'text-[10px] font-bold tracking-wide text-amber-700 dark:text-amber-200'
),
),
],
),
WDiv(
className: 'flex flex-row items-center justify-between w-full mt-5',
children: [
WText(
'FILE MINIMAP',
className: 'text-[9px] font-bold tracking-widest text-gray-400 dark:text-gray-500'
),
WText(
'LINES 118 TO 164',
className: 'text-[9px] font-bold tracking-widest text-indigo-500 dark:text-indigo-400'
),
],
),
WDiv(
className: 'flex flex-row items-start w-full mt-2',
children: [
WDiv(
className: 'relative w-[112px] h-[119px]',
children: [
WDiv(
className: 'flex flex-col w-[96px] h-[119px]',
children: [
WDiv(
className: 'w-[58px] h-[3px] rounded-[1px] bg-indigo-300 dark:bg-indigo-400'
),
WDiv(
className: 'w-[50px] h-[3px] rounded-[1px] mt-[1px] bg-indigo-300 dark:bg-indigo-400'
),
WDiv(
className: 'w-[62px] h-[3px] rounded-[1px] mt-[1px] bg-indigo-300 dark:bg-indigo-400'
),
WDiv(
className: 'w-[96px] h-[3px] mt-[1px]'
),
WDiv(
className: 'w-[72px] h-[3px] rounded-[1px] mt-[1px] bg-emerald-400 dark:bg-emerald-500'
),
WDiv(
className: 'w-[44px] h-[3px] rounded-[1px] ml-[8px] mt-[1px] bg-slate-300 dark:bg-slate-600'
),
WDiv(
className: 'w-[60px] h-[3px] rounded-[1px] ml-[8px] mt-[1px] bg-slate-300 dark:bg-slate-600'
),
WDiv(
className: 'w-[66px] h-[3px] rounded-[1px] ml-[8px] mt-[1px] bg-violet-300 dark:bg-violet-400'
),
WDiv(
className: 'w-[52px] h-[3px] rounded-[1px] ml-[16px] mt-[1px] bg-slate-300 dark:bg-slate-600'
),
WDiv(
className: 'w-[38px] h-[3px] rounded-[1px] ml-[16px] mt-[1px] bg-slate-300 dark:bg-slate-600'
),
WDiv(
className: 'w-[58px] h-[3px] rounded-[1px] ml-[16px] mt-[1px] bg-amber-300 dark:bg-amber-400'
),
WDiv(
className: 'w-[46px] h-[3px] rounded-[1px] ml-[24px] mt-[1px] bg-slate-300 dark:bg-slate-600'
),
WDiv(
className: 'w-[54px] h-[3px] rounded-[1px] ml-[24px] mt-[1px] bg-slate-300 dark:bg-slate-600'
),
WDiv(
className: 'w-[30px] h-[3px] rounded-[1px] ml-[24px] mt-[1px] bg-slate-300 dark:bg-slate-600'
),
WDiv(
className: 'w-[62px] h-[3px] rounded-[1px] ml-[16px] mt-[1px] bg-rose-300 dark:bg-rose-400'
),
WDiv(
className: 'w-[40px] h-[3px] rounded-[1px] ml-[16px] mt-[1px] bg-slate-300 dark:bg-slate-600'
),
WDiv(
className: 'w-[56px] h-[3px] rounded-[1px] ml-[8px] mt-[1px] bg-slate-300 dark:bg-slate-600'
),
WDiv(
className: 'w-[96px] h-[3px] mt-[1px]'
),
WDiv(
className: 'w-[68px] h-[3px] rounded-[1px] ml-[8px] mt-[1px] bg-violet-300 dark:bg-violet-400'
),
WDiv(
className: 'w-[50px] h-[3px] rounded-[1px] ml-[16px] mt-[1px] bg-slate-300 dark:bg-slate-600'
),
WDiv(
className: 'w-[60px] h-[3px] rounded-[1px] ml-[16px] mt-[1px] bg-slate-300 dark:bg-slate-600'
),
WDiv(
className: 'w-[42px] h-[3px] rounded-[1px] ml-[24px] mt-[1px] bg-slate-300 dark:bg-slate-600'
),
WDiv(
className: 'w-[56px] h-[3px] rounded-[1px] ml-[24px] mt-[1px] bg-slate-300 dark:bg-slate-600'
),
WDiv(
className: 'w-[34px] h-[3px] rounded-[1px] ml-[16px] mt-[1px] bg-slate-300 dark:bg-slate-600'
),
WDiv(
className: 'w-[48px] h-[3px] rounded-[1px] ml-[8px] mt-[1px] bg-amber-300 dark:bg-amber-400'
),
WDiv(
className: 'w-[52px] h-[3px] rounded-[1px] ml-[8px] mt-[1px] bg-slate-300 dark:bg-slate-600'
),
WDiv(
className: 'w-[96px] h-[3px] mt-[1px]'
),
WDiv(
className: 'w-[64px] h-[3px] rounded-[1px] mt-[1px] bg-emerald-400 dark:bg-emerald-500'
),
WDiv(
className: 'w-[44px] h-[3px] rounded-[1px] ml-[8px] mt-[1px] bg-slate-300 dark:bg-slate-600'
),
WDiv(
className: 'w-[58px] h-[3px] rounded-[1px] ml-[8px] mt-[1px] bg-slate-300 dark:bg-slate-600'
),
],
),
WDiv(
className: 'absolute left-[0px] top-[36px] w-[96px] h-[44px] rounded-sm border-2 border-indigo-500 dark:border-indigo-400 bg-indigo-500/10 dark:bg-indigo-400/10'
),
WDiv(
className: 'absolute left-[100px] top-[40px] w-[12px] h-[4px] rounded-[1px] bg-rose-500 dark:bg-rose-400'
),
WDiv(
className: 'absolute left-[100px] top-[56px] w-[12px] h-[4px] rounded-[1px] bg-rose-500 dark:bg-rose-400'
),
WDiv(
className: 'absolute left-[100px] top-[96px] w-[12px] h-[4px] rounded-[1px] bg-amber-500 dark:bg-amber-400'
),
],
),
WDiv(
className: 'flex flex-col w-[172px] ml-4',
children: [
WDiv(
className: 'flex flex-row items-center w-[172px]',
children: [
WDiv(
className: 'w-[8px] h-[8px] rounded-full bg-rose-500 dark:bg-rose-400'
),
WDiv(
className: 'flex flex-col ml-2',
children: [
WText(
'Undefined name gridKey',
className: 'text-[11px] font-semibold text-gray-900 dark:text-white'
),
WText(
'line 142',
className: 'text-[10px] text-gray-400 dark:text-gray-500'
),
],
),
],
),
WDiv(
className: 'flex flex-row items-center w-[172px] mt-3',
children: [
WDiv(
className: 'w-[8px] h-[8px] rounded-full bg-rose-500 dark:bg-rose-400'
),
WDiv(
className: 'flex flex-col ml-2',
children: [
WText(
'Missing required child',
className: 'text-[11px] font-semibold text-gray-900 dark:text-white'
),
WText(
'line 156',
className: 'text-[10px] text-gray-400 dark:text-gray-500'
),
],
),
],
),
WDiv(
className: 'flex flex-row items-center w-[172px] mt-3',
children: [
WDiv(
className: 'w-[8px] h-[8px] rounded-full bg-amber-500 dark:bg-amber-400'
),
WDiv(
className: 'flex flex-col ml-2',
children: [
WText(
'Unused import dart:async',
className: 'text-[11px] font-semibold text-gray-900 dark:text-white'
),
WText(
'line 246',
className: 'text-[10px] text-gray-400 dark:text-gray-500'
),
],
),
],
),
],
),
],
),
WDiv(
className: 'flex flex-row items-center justify-between w-full mt-5',
children: [
WDiv(
className: 'flex flex-col items-center w-[92px] py-2 rounded-xl bg-gray-50 dark:bg-gray-800',
children: [
WText(
'412',
className: 'text-sm font-bold text-gray-900 dark:text-white'
),
WText(
'LINES',
className: 'text-[9px] font-bold tracking-widest text-gray-400 dark:text-gray-500 mt-1'
),
],
),
WDiv(
className: 'flex flex-col items-center w-[92px] py-2 rounded-xl bg-gray-50 dark:bg-gray-800',
children: [
WText(
'14',
className: 'text-sm font-bold text-gray-900 dark:text-white'
),
WText(
'WIDGETS',
className: 'text-[9px] font-bold tracking-widest text-gray-400 dark:text-gray-500 mt-1'
),
],
),
WDiv(
className: 'flex flex-col items-center w-[92px] py-2 rounded-xl bg-gray-50 dark:bg-gray-800',
children: [
WText(
'86%',
className: 'text-sm font-bold text-gray-900 dark:text-white'
),
WText(
'COVERED',
className: 'text-[9px] font-bold tracking-widest text-gray-400 dark:text-gray-500 mt-1'
),
],
),
],
),
WDiv(
className: 'w-full mt-4',
child: WButton(
className: 'flex flex-row items-center justify-center w-full py-3 rounded-xl bg-gray-900 dark:bg-white',
child: WText(
'Jump to first problem',
className: 'text-sm font-bold text-white dark:text-gray-900'
),
),
),
],
)
Stats
- Views
- 9
- Stars
- 0
- Revisions
- 1
- Size
- 11,438 chars
- Created
- Sep 13, 2026