2 votes

Le changement de la valeur de l'opacité n'est pas reflété dans l'application.

J'essaie de créer un lecteur vidéo. J'affiche des rangées de boutons d'icônes au-dessus de la vidéo en utilisant le bouton de la souris. Stack() . Je veux faire disparaître ces icônes comme dans l'application mobile YouTube après un certain temps.

J'ai utilisé le AnimatedOpacity() widget mais l'icône reste à l'écran si je les mets visibles et invisibles si je les mets invisibles dès le début.leur opacité ne change jamais.quelqu'un peut-il me guider s'il vous plaît ?

Positioned.fill(
  child: AnimatedOpacity(
    opacity: _isVisible ? 1.0 : 0.0,
    duration: Duration(seconds: 3),
    child: GestureDetector(
      onTap: () {
        setState(() {
          _isVisible = !_isVisible;
        });
        // Future.delayed(Duration(seconds: 4), () {
        //   setState(() {
        //     _isVisible = false;
        //   });
        // });
      },
      child: Container(
          height: (MediaQuery.of(context).size.width /
              _controller.value.aspectRatio),
          width: double.infinity,
          child: PlayerControls(controller: _controller)),
    ),
  ),
)

Je m'attendais à ce que les icônes disparaissent au bout de 3 secondes, mais cela ne s'est pas produit.

0voto

Rodrigo Bastos Points 1318

Tu pourrais faire quelque chose comme ça :

            double opacityLevel = 1.0;

            Positioned.fill(
              child: AnimatedOpacity(
                opacity: opacityLevel,
                duration: Duration(seconds: 3),
                child: GestureDetector(
                  onTap: () {
                    setState(() => opacityLevel = opacityLevel == 0 ? 1.0 : 0.0);
                    // Future.delayed(Duration(seconds: 4), () {
                    //   setState(() {
                    //     _isVisible = false;
                    //   });
                    // });
                  },
                  child: Container(
                      height: (MediaQuery.of(context).size.width /
                          _controller.value.aspectRatio),
                      width: double.infinity,
                      child: PlayerControls(controller: _controller)),
                ),
              ),
            )

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X