#dart #flutter #facebook-like
#dart #flutter #facebook-нравится
Вопрос:
Я сделал значок кнопки для изображений, чтобы дать пользователю возможность поставить лайк изображению, но когда я перехожу на другую страницу или повторно открываю приложение, понравившаяся фотография снова не нравится.Как я могу убедиться, что понравившаяся мне фотография останется понравившейся, когда я снова ее открою?
P.S. -Могу ли я показать все фотографии, которые мне понравились, на новом экране?
class FavoriteWidget extends StatefulWidget {
@override
_FavoriteWidgetState createState() => _FavoriteWidgetState();
}
class _FavoriteWidgetState extends State<FavoriteWidget> {
bool liked = false;
_pressed() {
setState(() {
liked = !liked;
});
}
@override
Widget build(BuildContext context) {
return Row(
mainAxisSize: MainAxisSize.min,
children: [
Container(
child: IconButton(
icon: Icon(liked ?Icons.favorite: Icons.favorite_border,
color: liked ? Colors.red :Colors.grey ),
onPressed: () => _pressed(),
),
),
],
);
}
}
Я хочу, чтобы фотография ставила лайки постоянно, даже после закрытия приложения или перехода на другой экран, если мне это не нравится..
Ответ №1:
Чтобы ваше приложение запоминало любые данные, которые зависят от 2 основных факторов:
1- Время жизни ваших контейнеров данных (переменные, базы данных и т. Д.)
2 — Область, в которой вы хотите использовать свои данные (классы, страницы, приложения)
Из того, что я понял в вашей проблеме. Вы хотите, чтобы ваше приложение запоминало статус кнопки после ее закрытия / повторного открытия.
Обычно большинство типов используемых переменных данных Dart
хранятся в энергозависимой памяти (ОЗУ) мобильного устройства. Это делает их доступными для очистки ОС сразу после закрытия вашего приложения. Это помогает другим запущенным приложениям находить место в памяти для работы.
Итак, сохранение состояний ваших кнопок в часто используемых переменных (например: bool
) в вашем случае не поможет.
Для решения вашей проблемы у вас есть 2 энергонезависимых метода хранения данных:
1- Используйте SQLite
DB для хранения состояния вашей кнопки, на которое ссылается клавиша button как a primary key
. ( SQLite
сохраняет ваши данные в постоянном файле DB внутри пакета приложения). Читайте отсюда
2- Самый простой и быстрый способ: используйте a sharedPreferences
для хранения состояний ваших кнопок, на которые ссылается каждая клавиша кнопки, в виде пары ключ-значение внутри `SharedPreferences, прочитанных отсюда
Надеюсь, я смогу вам помочь