Untitled
atha
plain_text
5 months ago
5.7 kB
6
Indexable
part of '../pages.dart'; class NotePage extends StatefulWidget { const NotePage({super.key}); @override State<NotePage> createState() => _NotePageState(); } class _NotePageState extends State<NotePage> { final FirebaseService _firebaseService = FirebaseService(); final TextEditingController _titleController = TextEditingController(); final TextEditingController _imageUrlController = TextEditingController(); final TextEditingController _contentController = TextEditingController(); void _addNote() async { if (_titleController.text.isEmpty || _imageUrlController.text.isEmpty || _contentController.text.isEmpty) { return null; } else { await _firebaseService.addNote( _titleController.text, _imageUrlController.text, _contentController.text); } } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("Note Page"), ), body: Column( children: <Widget>[ Padding( padding: const EdgeInsets.all(10), child: Column( crossAxisAlignment: CrossAxisAlignment.end, children: [ TextFormField( controller: _titleController, decoration: InputDecoration( labelText: "Title", border: OutlineInputBorder()), ), SizedBox( height: 15, ), TextFormField( controller: _imageUrlController, decoration: InputDecoration( labelText: "Image URL", border: OutlineInputBorder()), ), SizedBox( height: 15, ), TextFormField( controller: _contentController, decoration: InputDecoration( labelText: "Content", border: OutlineInputBorder()), maxLines: 3, ), SizedBox(height: 10), ElevatedButton( onPressed: () { _addNote(); }, child: Text('Save Note')) ], ), ), Expanded( child: StreamBuilder<QuerySnapshot>( stream: _firebaseService.getNotes(), builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.waiting) { return const Center( child: CircularProgressIndicator(), ); } if (snapshot.hasError) { return const Center( child: Text('Error fetching data'), ); } if (!snapshot.hasData || snapshot.data!.docs.isEmpty) { return const Center( child: Text('No data found'), ); } else { return ListView.builder( padding: EdgeInsets.all(10), itemCount: snapshot.data!.docs.length, itemBuilder: (context, index) { var doc = snapshot.data!.docs[index]; return Card( margin: EdgeInsets.symmetric(vertical: 8), elevation: 4, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(10), ), child: ListTile( contentPadding: EdgeInsets.all(12), leading: ClipRRect( borderRadius: BorderRadius.circular(8), child: Image.network( doc['imageUrl'], width: 100, height: 100, fit: BoxFit.cover, ), ), title: Text( doc['title'], style: TextStyle(fontWeight: FontWeight.bold), ), subtitle: Text( doc['content'], maxLines: 2, overflow: TextOverflow.ellipsis, ), trailing: Row( mainAxisSize: MainAxisSize.min, children: [ IconButton( icon: Icon(Icons.edit, color: Colors.blue), onPressed: () { }, ), IconButton( icon: Icon(Icons.delete, color: Colors.red), onPressed: () { }, ), ], ), ), ); }, ); } }), ), ], ), ); } }
Editor is loading...
Leave a Comment