showRightSlideDialog static method

Future showRightSlideDialog(
  1. BuildContext c,
  2. Widget page
)

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;
}