diff options
author | Iván Ávalos <avalos@disroot.org> | 2023-05-28 23:27:46 -0600 |
---|---|---|
committer | Iván Ávalos <avalos@disroot.org> | 2023-05-28 23:27:46 -0600 |
commit | 55ec472797581a02ac433e5a9e08d560dcba6a13 (patch) | |
tree | 0abb2ff303b8c5087d66611bff025e477862f93a /lib/screens/favorites_screen.dart | |
parent | 4874a3073450c0dfcb1c443342bcae78728a471b (diff) | |
download | linkchat-main.tar.gz linkchat-main.tar.bz2 linkchat-main.zip |
Sustitución de setState() por ValueNotifiermain
Diffstat (limited to 'lib/screens/favorites_screen.dart')
-rw-r--r-- | lib/screens/favorites_screen.dart | 52 |
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()); + }, + ), ), ), ], |