aboutsummaryrefslogtreecommitdiff
path: root/lib/screens/favorites_screen.dart
diff options
context:
space:
mode:
Diffstat (limited to 'lib/screens/favorites_screen.dart')
-rw-r--r--lib/screens/favorites_screen.dart86
1 files changed, 86 insertions, 0 deletions
diff --git a/lib/screens/favorites_screen.dart b/lib/screens/favorites_screen.dart
new file mode 100644
index 0000000..4d6f949
--- /dev/null
+++ b/lib/screens/favorites_screen.dart
@@ -0,0 +1,86 @@
+import 'package:flutter/material.dart';
+import 'package:linkchat/firebase/database.dart';
+import 'package:linkchat/widgets/chat_bubble.dart';
+
+import '../firebase/auth.dart';
+import '../models/favorite.dart';
+
+class FavoritesScreen extends StatefulWidget {
+ const FavoritesScreen({super.key});
+
+ @override
+ State<FavoritesScreen> createState() => _FavoritesScreenState();
+}
+
+class _FavoritesScreenState extends State<FavoritesScreen> {
+ final Auth _auth = Auth();
+ final Database _db = Database();
+ final TextEditingController _controller = TextEditingController();
+ List<Favorite> favorites = [];
+ List<Favorite> filteredFavorites = [];
+
+ @override
+ void initState() {
+ super.initState();
+ _db.getFavoritesByUserID(_auth.currentUser!.uid).first.then((f) {
+ setState(() {
+ favorites = f;
+ filteredFavorites = f;
+ });
+ }).onError((e, st) {
+ print(e);
+ });
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ return Scaffold(
+ appBar: AppBar(
+ title: const Text('Favoritos'),
+ leading: IconButton(
+ icon: const Icon(Icons.arrow_back),
+ onPressed: () {
+ Navigator.of(context).pop();
+ },
+ ),
+ ),
+ body: Column(
+ children: [
+ Padding(
+ padding: const EdgeInsets.all(8.0),
+ child: TextField(
+ controller: _controller,
+ decoration: const InputDecoration(
+ border: OutlineInputBorder(),
+ labelText: 'Buscar',
+ ),
+ onChanged: (value) {
+ setState(() {
+ if (value.isNotEmpty) {
+ filteredFavorites = favorites
+ .where((fav) =>
+ fav.messageText.contains(value) == true ||
+ fav.linkTitle?.contains(value) == true ||
+ fav.linkDescription?.contains(value) == true)
+ .toList();
+ } else {
+ filteredFavorites = favorites;
+ }
+ });
+ },
+ ),
+ ),
+ Expanded(
+ child: ListView.builder(
+ itemCount: filteredFavorites.length,
+ itemBuilder: (context, index) {
+ Favorite fav = filteredFavorites[index];
+ return LinkPreview(fav.getMessage());
+ },
+ ),
+ ),
+ ],
+ ),
+ );
+ }
+}