заставить gif начинать с начала после закрытия и повторного открытия - PullRequest
1 голос
/ 11 февраля 2020

Я пытаюсь, чтобы этот gif появлялся при нажатии на кнопку с плавающим действием и всплываю снова после нажатия ОК: https://66.media.tumblr.com/1ce23970665b7736bd857720ebf5a5b2/tumblr_pp3sftPVIy1wb1n5x_540.gif Проблема в том, что когда я нажимаю кнопку ОК и повторно нажимаю кнопку с плавающим действием , gif продолжить с этого остановился в прошлый раз, когда я нажал ОК; Я хочу, чтобы он начинался каждый раз, когда я нажимаю кнопку с плавающим действием. Как я могу это сделать? Вот код:

floatingActionButton: FloatingActionButton(
          child: Icon(Icons.healing),

          onPressed: () {
            showDialog(
              context: context,
              builder: (_) => Container(
                height: 200.0,
                child: NetworkGiffyDialog(
                  // key: keys[1],
                  image: Image.network(
                    gif,
                    fit: BoxFit.fitHeight,
                  ),
                  title: Text("Exercises of breathing"),
                  description: Text(
                    'This will help you with breathing exercises to overcome anxiety attacks',
                  ),
                  entryAnimation: EntryAnimation.RIGHT,
                  onOkButtonPressed: () {
                    Navigator.of(context).pop();
                  },
                ),
              ),
            );
          },
          //child: new Text("Breathing exercise"),
        ),

РЕДАКТИРОВАТЬ : я следовал за первым ответом и пытался переключиться между нулевым значением и ссылкой gif следующим образом, однако у меня все еще есть та же проблема

floatingActionButton: FloatingActionButton(
          child: Icon(Icons.healing),

          onPressed: () {
            setState(() => gif = giflink);
            showDialog(
              context: context,
              builder: (_) => Container(
                height: 200.0,
                child: NetworkGiffyDialog(
                  // key: keys[1],
                  image: Image.network(
                    gif,
                    fit: BoxFit.fitHeight,
                  ),
                  title: Text("Exercises of breathing"),
                  description: Text(
                    'This will help you with breathing exercises to overcome anxiety attacks',
                  ),
                  entryAnimation: EntryAnimation.RIGHT,
                  onOkButtonPressed: () {
                    Navigator.of(context).pop();
                    setState(() => gif = null);
                  },
                ),
              ),
            );
          },
          //child: new Text("Breathing exercise"),
        ),

1 Ответ

0 голосов
/ 12 февраля 2020

Одна вещь, которую вы можете попробовать, - это использовать вашу переменную gif в качестве setState для него нулевое значение после окончания анимации (длительности GIF) (или если пользователь отменяет).

var gif = "https://theurlofyourgif.com/file.gif"

void doYourGIFLogic() {
  // show it with a Navigator, or Opacity, or Visibility, etc
  // wait for that animation (GIF duration) to be done
  final NetworkImage provider = NetworkImage(gif);
  provider.evict().then<void>((bool success) {
  if (success) {
    print('removed image!');
  }
});
}

Когда пользователь щелкает снова используя FAB, кеш будет очищен, а GIF должен начинаться с начала.

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