showRightSlideDialog static method
Implementation
static Future showRightSlideDialog(BuildContext c, Widget page) async {
final res = await showGeneralDialog(
context: c,
barrierDismissible: true,
barrierLabel: "Dismiss",
barrierColor: Colors.black54, // 背景遮罩颜色
transitionDuration: Duration(milliseconds: 300),
pageBuilder: (context, animation1, animation2) {
return Align(
alignment: Alignment.centerRight,
child: Theme(
data: Theme.of(c),
child: Material(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.only(
topLeft: Radius.circular(12),
bottomLeft: Radius.circular(12),
),
),
color: Theme.of(c).colorScheme.secondary,
child: SizedBox(
width: MediaQuery.of(context).size.width * 0.5, // 80%宽度
height: double.infinity,
child: page,
),
),
),
);
},
transitionBuilder: (context, animation1, animation2, child) {
final curvedValue = Curves.easeInOut.transform(animation1.value) - 1.0;
return Transform.translate(
offset: Offset(
curvedValue * -(MediaQuery.of(context).size.width * 0.5),
0,
),
child: child,
);
},
);
return res;
}