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.dart52
1 files changed, 27 insertions, 25 deletions
diff --git a/lib/screens/favorites_screen.dart b/lib/screens/favorites_screen.dart
index 4d6f949..db87c4a 100644
--- a/lib/screens/favorites_screen.dart
+++ b/lib/screens/favorites_screen.dart
@@ -1,3 +1,4 @@
+import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:linkchat/firebase/database.dart';
import 'package:linkchat/widgets/chat_bubble.dart';
@@ -16,19 +17,19 @@ class _FavoritesScreenState extends State<FavoritesScreen> {
final Auth _auth = Auth();
final Database _db = Database();
final TextEditingController _controller = TextEditingController();
- List<Favorite> favorites = [];
- List<Favorite> filteredFavorites = [];
+ final ValueNotifier<List<Favorite>> _favoritesNotifier =
+ ValueNotifier<List<Favorite>>([]);
+ final ValueNotifier<List<Favorite>> _filteredFavoritesNotifier =
+ ValueNotifier<List<Favorite>>([]);
@override
void initState() {
super.initState();
_db.getFavoritesByUserID(_auth.currentUser!.uid).first.then((f) {
- setState(() {
- favorites = f;
- filteredFavorites = f;
- });
+ _favoritesNotifier.value = f;
+ _filteredFavoritesNotifier.value = f;
}).onError((e, st) {
- print(e);
+ if (kDebugMode) print(e);
});
}
@@ -55,28 +56,29 @@ class _FavoritesScreenState extends State<FavoritesScreen> {
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;
- }
- });
+ if (value.isNotEmpty) {
+ _filteredFavoritesNotifier.value = _favoritesNotifier.value
+ .where((fav) =>
+ fav.messageText.contains(value) == true ||
+ fav.linkTitle?.contains(value) == true ||
+ fav.linkDescription?.contains(value) == true)
+ .toList();
+ } else {
+ _filteredFavoritesNotifier.value = _favoritesNotifier.value;
+ }
},
),
),
Expanded(
- child: ListView.builder(
- itemCount: filteredFavorites.length,
- itemBuilder: (context, index) {
- Favorite fav = filteredFavorites[index];
- return LinkPreview(fav.getMessage());
- },
+ child: ValueListenableBuilder(
+ valueListenable: _filteredFavoritesNotifier,
+ builder: (context, value, child) => ListView.builder(
+ itemCount: value.length,
+ itemBuilder: (context, index) {
+ Favorite fav = value[index];
+ return LinkPreview(fav.getMessage());
+ },
+ ),
),
),
],