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.
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:
Esto creará un fondo blanco para los botones de acción, y el color de texto en rojo será visible.