Как управлять кнопками лайков на изображениях во флаттере - PullRequest
0 голосов
/ 19 апреля 2019

Я сделал иконку для изображений, чтобы дать пользователю возможность понравиться, но когда я перехожу на другую страницу или снова открываю приложение, понравившаяся фотография снова не нравится. Как я могу убедиться, что понравившаяся фотография остается любимым, если я снова открою его?

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 Ответ

1 голос
/ 19 апреля 2019

Чтобы ваше приложение запомнило любые данные, которые зависят от 2 основных факторов:

1 - время жизни ваших контейнеров данных (переменных, баз данных и т. Д.)

2-Область, в которой вы хотите использовать свои данные (классы, страницы, приложения)

Из того, что я понял в вашей проблеме.Вы хотите, чтобы ваше приложение запоминало состояние кнопки после ее закрытия / повторного открытия.

Как правило, большинство типов переменных данных, используемых в Dart, хранятся в мобильной энергозависимой памяти (ОЗУ).Это делает их доступными для очистки операционной системой сразу после закрытия приложения.Это помогает другим работающим приложениям найти пространство памяти для работы.

Таким образом, сохранение состояний ваших кнопок в часто используемых переменных (например: bool) в вашем случае не поможет.

Для решения вашей проблемы У вас есть 2 энергонезависимых метода хранения данных:

1- Используйте SQLite DB для хранения вашего состояния кнопки, на которое ссылается кнопка в виде primary key.(SQLite сохраняет ваши данные в постоянном файле БД внутри пакета приложения). Прочитайте отсюда

2- Самый простой и быстрый способ: используйте sharedPreferences для хранения ваших состояний кнопок, на которые ссылается каждая кнопка, в виде пары значений ключей внутри `sharedPreferences Читайте здесь

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...