From 55ec472797581a02ac433e5a9e08d560dcba6a13 Mon Sep 17 00:00:00 2001 From: Iván Ávalos Date: Sun, 28 May 2023 23:27:46 -0600 Subject: Sustitución de setState() por ValueNotifier MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/screens/favorites_screen.dart | 52 ++++++++++++++++++++------------------- 1 file changed, 27 insertions(+), 25 deletions(-) (limited to 'lib/screens/favorites_screen.dart') 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 { final Auth _auth = Auth(); final Database _db = Database(); final TextEditingController _controller = TextEditingController(); - List favorites = []; - List filteredFavorites = []; + final ValueNotifier> _favoritesNotifier = + ValueNotifier>([]); + final ValueNotifier> _filteredFavoritesNotifier = + ValueNotifier>([]); @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 { 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()); + }, + ), ), ), ], -- cgit v1.2.3