member_retain_dialog.dart 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import 'package:flutter/material.dart';
  2. import 'package:flutter_screenutil/flutter_screenutil.dart';
  3. import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
  4. import 'package:location/resource/assets.gen.dart';
  5. import 'package:location/resource/string.gen.dart';
  6. import 'package:location/utils/common_style.dart';
  7. class MemberRetainDialog {
  8. static final String _tag = 'MemberRetainDialog';
  9. static void show(
  10. {required VoidCallback payClick, required VoidCallback cancelClick}) {
  11. SmartDialog.show(
  12. tag: _tag,
  13. backDismiss: false,
  14. clickMaskDismiss: false,
  15. builder: (_) {
  16. return _MemberRetainDialogWidget(
  17. payClick: payClick, cancelClick: cancelClick);
  18. });
  19. }
  20. static void dismiss() {
  21. SmartDialog.dismiss(tag: _tag);
  22. }
  23. }
  24. class _MemberRetainDialogWidget extends Dialog {
  25. final VoidCallback payClick;
  26. final VoidCallback cancelClick;
  27. const _MemberRetainDialogWidget(
  28. {required this.payClick, required this.cancelClick});
  29. @override
  30. Widget build(BuildContext context) {
  31. return Container(
  32. child: IntrinsicHeight(
  33. child: Column(
  34. children: [
  35. Stack(
  36. children: [
  37. AspectRatio(
  38. aspectRatio: 1080 / 1296,
  39. child: Assets.images.imgMemberRetainContainer
  40. .image(width: 301.w)),
  41. Positioned(
  42. top: 324.w,
  43. left: 73.w,
  44. right: 73.w,
  45. child: GestureDetector(
  46. onTap: () {
  47. MemberRetainDialog.dismiss();
  48. payClick();
  49. },
  50. child: Container(
  51. height: 40.w,
  52. decoration: getPrimaryBtnDecoration(100.w),
  53. child: Center(
  54. child: Text(StringName.memberContinuePay,
  55. style: TextStyle(
  56. fontSize: 15.sp, color: Colors.white)),
  57. ),
  58. ),
  59. ),
  60. ),
  61. Positioned(
  62. bottom: 0,
  63. left: 0,
  64. right: 0,
  65. child: Center(
  66. child: GestureDetector(
  67. onTap: () {
  68. MemberRetainDialog.dismiss();
  69. cancelClick();
  70. },
  71. child: Assets.images.iconMemberRetainClose
  72. .image(width: 32.w, height: 32.w),
  73. ),
  74. ),
  75. )
  76. ],
  77. ),
  78. ],
  79. ),
  80. ),
  81. );
  82. }
  83. }