import 'package:flutter/material.dart'; import 'package:flutter_markdown/flutter_markdown.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:go_router/go_router.dart'; import '../../core/constants.dart'; import '../../providers/notes_provider.dart'; class NoteDetailScreen extends ConsumerWidget { final int noteId; const NoteDetailScreen({super.key, required this.noteId}); @override Widget build(BuildContext context, WidgetRef ref) { final noteAsync = ref.watch(noteDetailProvider(noteId)); return Scaffold( appBar: AppBar( title: noteAsync.maybeWhen( data: (n) => Text(n.title), orElse: () => const Text('Note'), ), actions: [ noteAsync.maybeWhen( data: (note) => Row( children: [ IconButton( icon: const Icon(Icons.edit), onPressed: () => context.push( Routes.noteEdit.replaceFirst(':id', '$noteId'), ), ), IconButton( icon: const Icon(Icons.delete), onPressed: () async { final confirm = await showDialog( context: context, builder: (_) => AlertDialog( title: const Text('Delete note?'), actions: [ TextButton( onPressed: () => Navigator.pop(context, false), child: const Text('Cancel'), ), TextButton( onPressed: () => Navigator.pop(context, true), child: const Text('Delete'), ), ], ), ); if (confirm == true) { await ref.read(notesProvider.notifier).delete(noteId); if (context.mounted) context.pop(); } }, ), ], ), orElse: () => const SizedBox.shrink(), ), ], ), body: noteAsync.when( loading: () => const Center(child: CircularProgressIndicator()), error: (e, _) => Center(child: Text('Error: $e')), data: (note) => Markdown( data: note.body, selectable: true, ), ), ); } }