showDialog(
context: context,
builder: (context) {
return AlertDialog(
title: Stack(
clipBehavior: Clip.none,
children: [
Text("Title"),
Positioned(
top: -20,
right: -20,
child: InkWell(
onTap: () {
Navigator.pop(context);
},
child: Align(
alignment: Alignment(1, -1),
child: CircleAvatar(
maxRadius: 20,
backgroundColor: Colors.transparent,
child:
Icon(Icons.cancel, size: 30)),
),
))
],
),
content: Container(
height: 200,
width: 500,
child: Text("Some data"),
));
});
Future<void> _showMyDialog() async {
return showDialog<void>(
context: context,
barrierDismissible: false,
builder: (BuildContext context) {
return AlertDialog(
iconPadding: const EdgeInsets.all(0),
icon: Align(
alignment: Alignment.topRight,
child: InkWell(
onTap: () {
Navigator.pop(context);
},
child: Icon(Icons.close),
// child: Image.asset(
// 'assets/cancel.png',
// height: 30,
// ),
),
),
content: const SingleChildScrollView(
child: ListBody(
children: <Widget>[
Text('This is a demo alert dialog.'),
Text('Would you like to approve of this message?'),
],
),
),
actions: <Widget>[
TextButton(
child: const Text('Approve'),
onPressed: () {
Navigator.of(context).pop();
},
),
],
);
},
);
}
CircleAvatar
,因为它用于用户的个人头像。这个小部件会添加额外的内边距,而我无法去掉这个内边距。
请检查一下这个解决方案是否有效。Stack(
children: [
InkWell(
onTap: () {
Navigator.pop(context);
},
child: Container(
alignment: Alignment.topRight,
padding: EdgeInsets.all(10),
child: CircleAvatar(
maxRadius: 20,
backgroundColor: Colors.transparent,
child: Image.asset(
'assets/cancel.png',
height: 30,
),
),
),
),
// write your rest code here
],
)
AlertDialog
?你可以分享一下PopUp Container
的父部件吗? - RiyanAlertDialog
吗?能否请你分享一下PopUp Container
的父部件? - Riyan