es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Las acciones en el AlertDialog son transparentes cuando se utiliza un banner como contenido para el dialogo de alerta en Flutter.

Cuando uso un banner dentro de un cuadro de diálogo de alerta, el widget de acción se vuelve transparente. Estoy usando el complemento de google de anuncios para dispositivos móviles.

….


final BannerAd _bannerAdForExitDialog = BannerAd( adUnitId: Constants.getBannerAdUnit, size: AdSize.mediumRectangle, request: const AdRequest(), listener: BannerAdListener( onAdFailedToLoad: (ad, error) { ad.dispose(); }, ), );

…..


@override void initState() { super.initState(); _bannerAdForExitDialog.load(); }

….


TextStyle _getActionTextStyle() { return const TextStyle(fontSize: 18, color: Colors.red); }

….


AlertDialog( title: const Text( "¿Desea salir?", style: TextStyle(color: Colors.black), ), content: Container( alignment: Alignment.center, color: Colors.transparent, height: _bannerAdForExitDialog.size.height.toDouble(), width: _bannerAdForExitDialog.size.width.toDouble(), child: AdWidget(ad: _bannerAdForExitDialog), ), actions: [ TextButton( //onPressed: () => exit(0), onPressed: () => print('sí'), child: Text( 'Sí', style: _getActionTextStyle(), ), ), TextButton( onPressed: () => Navigator.of(context).pop(), child: Text( 'No', style: _getActionTextStyle(), ), ), ], );

…..

Aquí está el resultado. Aunque he asignado un color rojo a los botones de texto ‘sí’ y ‘no’, el color sigue siendo transparente.

Imagen del resultado

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para solucionar el problema con el widget de acción transparente, puedes envolver los botones de acción en un widget Container y establecer la propiedad color con un color no transparente. Por ejemplo:

    Container(
      color: Colors.white,
      child: Row(
        mainAxisAlignment: MainAxisAlignment.spaceEvenly,
        children: [
          TextButton(
            onPressed: () => print('Sí'),
            child: Text(
              'Sí',
              style: _getActionTextStyle(),
            ),
          ),
          TextButton(
            onPressed: () => Navigator.of(context).pop(),
            child: Text(
              'No',
              style: _getActionTextStyle(),
            ),
          ),
        ],
      ),
    ),
    

    Esto creará un fondo blanco para los botones de acción, y el color de texto en rojo será visible.

Comments are closed.