# Scaffold Screen — {{PROJECT_NAME}} Creates a complete screen widget with all states handled, following **{{STATE_MANAGEMENT}}** patterns. ## Usage ``` Create a screen for [screen_name] that shows [content description] ``` ## Generated screen template ### {{STATE_MANAGEMENT}} screen pattern: **BLoC:** ```dart class [ScreenName]Screen extends StatelessWidget { @override Widget build(BuildContext context) { return BlocBuilder<[Feature]Bloc, [Feature]State>( builder: (context, state) => switch (state) { [Feature]Initial() || [Feature]Loading() => const [ScreenName]Shimmer(), [Feature]Loaded(:final data) => [ScreenName]Content(data: data), [Feature]Empty() => const [ScreenName]EmptyState(), [Feature]Error(:final message) => [ScreenName]ErrorState( message: message, onRetry: () => context.read<[Feature]Bloc>().add(const [Feature]LoadRequested()), ), }, ); } } ``` **Riverpod:** ```dart class [ScreenName]Screen extends ConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { final state = ref.watch([feature]Provider); return state.when( loading: () => const [ScreenName]Shimmer(), data: (data) => [ScreenName]Content(data: data), error: (e, _) => [ScreenName]ErrorState(error: e), ); } } ``` ## Required sub-widgets to generate 1. `[ScreenName]Shimmer` — skeleton loading layout matching final content 2. `[ScreenName]EmptyState` — illustration + headline + CTA button 3. `[ScreenName]ErrorState` — error message + retry button 4. `[ScreenName]Content` — the actual data display ## Platform considerations ({{PLATFORMS_LIST}}) {{#if platform_web}} - Web: ensure no dart:io usage; test at 375px and 1280px widths {{/if}} {{#if platform_desktop}} - Desktop: add keyboard shortcut support for primary actions {{/if}}