J'essaie de créer une boîte de dialogue plein écran transparente en plus de l'activité. J'ai essayé de suivre ceci thread mais la solution ne fonctionne pas.
En bref, ce dont j'ai besoin c'est:
voici mon code:
Pour ouvrir la boîte de dialogue
void onNextBtnClick(){
var route = new MaterialPageRoute(
builder: (BuildContext context) =>
new GenreDialogUI(),fullscreenDialog: true
);
Navigator.of(context).Push(route);
}
Pour la vue Dialogue
import 'package:flutter/widgets.Dart';
class HolePuncherPainter extends CustomPainter {
static final clearPaint = new Paint()
..color = Colors.transparent,
..blendMode = BlendMode.clear;
const HolePuncherPainter();
@override
void Paint(Canvas canvas, Size size) {
canvas.drawRect(
new Rect.fromLTWH(0.0, 0.0, size.width, size.height), clearPaint);
}
@override
bool shouldRepaint(CustomPainter oldDelegate) {
return true;
}
}
class GenreDialogUI extends StatefulWidget {
@override
_GenreDialogUI createState() => new _GenreDialogUI();
}
class _GenreDialogUI extends State<GenreDialogUI> {
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: addAppbar(),
body: new CustomPaint(
Painter: HolePuncherPainter(),
child: new Container(
color: Colors.transparent,
alignment: Alignment.center,
child: UtilCommonWidget.addText('Transparent Dialog', Colors.red, 22.0, 1),
),
),
);
}
}
Navigator.of(context).Push(PageRouteBuilder(
opaque: false,
pageBuilder: (BuildContext context, _, __) {
return YourFullScreenAlertDialog()
}
));
YourFullScreenAlertDialog pourrait être un widget qui a une couleur d'arrière-plan, Colors.transparent, comme @creativecreatorormaybenot mentionné précédemment.
Pour moi, ce qui suit a fonctionné:
showDialog(
context: context,
builder: (_) => Material(
type: MaterialType.transparency,
child: Center( // Aligns the container to center
child: Container( // A simplified version of dialog.
width: 100.0,
height: 56.0,
color: Colors.green,
child: Text('jojo'),
)
),
)
);
Scaffold
a une propriété backgroundColor
. Vous devrez également rendre celui-ci transparent :
Scaffold(
backgroundColor: Colors.transparent,
...
);