#android #ios #flutter #dart
Вопрос:
ребята, у меня здесь есть этот код, и проблема в том, что когда я нажимаю на свой любимый значок, все значки в списке будут верными!! вот код:
static const likedKey = 'liked_key';
bool liked;
@override
void initState() {
super.initState();
_restorePersistedPreference();
}
void _restorePersistedPreference() async {
var preferences = await SharedPreferences.getInstance();
var liked = preferences.getBool(likedKey) ?? false;
setState(() => this.liked = liked);
}
void _persistPreference() async {
setState(() => liked = !liked);
var preferences = await SharedPreferences.getInstance();
preferences.setBool(likedKey, liked);
}
И моя любимая кнопка:
IconButton(
icon: Icon(
liked ? Icons.favorite : Icons.favorite_border,
color: liked ? Colors.red : Colors.grey,
),
onPressed: _persistPreference,
),
Комментарии:
1. Можете ли вы предоставить код вашего списка со всеми значками?
2. мой список подключен к api, и если вы хотите, я выложу свой код
3. Вы можете использовать список для хранения понравившегося флага для каждой кнопки. Но лучшим подходом будет создание пользовательского виджета, в котором есть встроенная логика для понравившихся .
4. можете ли вы привести пример моего кода?
Ответ №1:
Это происходит потому, что все ваши кнопки Избранного зависят от одного состояния понравившейся переменной, поэтому, как только состояние понравившейся переменной изменится, это повлияет на все кнопки избранного. Вы должны использовать SQLite для хранения состояния каждой кнопки (рекомендуется) или отдельного ключа для каждой кнопки (не рекомендуется).
Комментарии:
1. Так что же вы рекомендуете?
2. SQLite для небольших программ не подходит. Я рекомендую Улей