Как управлять кнопкой «Нравится» на изображениях в flutter

#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, прочитанных отсюда

Надеюсь, я смогу вам помочь