member_retain_dialog.dart 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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: 1110 / 1296,
  39. child: Assets.images.imgMemberRetainContainer
  40. .image(width: 301.w)),
  41. Positioned(
  42. top: 360.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: BoxDecoration(
  53. gradient: LinearGradient(
  54. begin: Alignment.centerLeft, // 90度相当于从左到右
  55. end: Alignment.centerRight,
  56. colors: [
  57. Color(0xFF7B7DFF), // #7B7DFF
  58. Color(0xFF6365FF), // #6365FF
  59. ],
  60. stops: [0.0, 1.0],
  61. // 从0%到100%
  62. ),
  63. borderRadius: BorderRadius.circular(40.w / 2.0),
  64. ),
  65. //getPrimaryBtnDecoration(100.w),
  66. child: Center(
  67. child: Text(StringName.memberContinuePay,
  68. style: TextStyle(
  69. fontSize: 15.sp, color: Colors.white)),
  70. ),
  71. ),
  72. ),
  73. ),
  74. ],
  75. ),
  76. SizedBox(height: 24.w,),
  77. Center(
  78. child: GestureDetector(
  79. onTap: () {
  80. MemberRetainDialog.dismiss();
  81. cancelClick();
  82. },
  83. child: Assets.images.iconMemberRetainClose
  84. .image(width: 32.w, height: 32.w),
  85. ),
  86. )
  87. ],
  88. ),
  89. ),
  90. );
  91. }
  92. }