import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:fnotes/theme_bloc.dart'; import 'package:uuid/uuid.dart'; class Notes extends StatefulWidget { const Notes({ super.key, }); @override State createState() => _NotesState(); } class _NotesState extends State { List notes = List.empty(growable: true); final phraseController = TextEditingController(); Map notesMap = {}; @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text('Your notes:'), actions: [ IconButton( icon: const Icon(Icons.light_mode), onPressed: () { context.read().add(ThemeEvent()); }, ) ], ), body: BlocBuilder( builder: (context, state) { return ListView.builder( itemCount: notes.length, itemBuilder: (context, index) { return Dismissible( onDismissed: (direction) { notes.removeAt(index); setState(() {}); }, key: ValueKey(notes[index]), child: Card( elevation: 5, color: state.theme.colorScheme.primaryContainer, child: SizedBox( height: 50, child: Padding( padding: const EdgeInsets.only(left: 20), child: Align( alignment: Alignment.centerLeft, child: Text( notes[index], style: TextStyle( color: state.theme.colorScheme.onPrimaryContainer), ), ), ), ), ), ); }, ); }, ), floatingActionButton: FloatingActionButton( onPressed: () { final newNote = showEnterItemDialog(context); newNote.then( (value) { if (value != null && value.isNotEmpty) { addNote(value); setState(() {}); } }, ); }, child: const Icon(Icons.add)), ); } Future showEnterItemDialog(BuildContext context) { return showDialog( context: context, builder: (BuildContext context) { return AlertDialog( title: const Text('New list item'), content: TextField( onSubmitted: (val) { Navigator.pop(context, val); phraseController.clear(); }, autofocus: true, controller: phraseController, decoration: InputDecoration( hintText: 'Remember me!', suffixIcon: IconButton( onPressed: () { Navigator.pop(context, phraseController.value.text); phraseController.clear(); }, icon: const Icon(Icons.check), )), ), actions: [ TextButton( child: const Text('Cancel'), onPressed: () { Navigator.pop(context); }, ), ], ); }, ); } void addNote(String text) { notes.add(text); } }