member_retain_dialog.dart 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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. keepSingle: true,
  15. clickMaskDismiss: false,
  16. builder: (_) {
  17. return _MemberRetainDialogWidget(
  18. payClick: payClick, cancelClick: cancelClick);
  19. });
  20. }
  21. static void dismiss() {
  22. SmartDialog.dismiss(tag: _tag);
  23. }
  24. }
  25. class _MemberRetainDialogWidget extends Dialog {
  26. final VoidCallback payClick;
  27. final VoidCallback cancelClick;
  28. const _MemberRetainDialogWidget(
  29. {required this.payClick, required this.cancelClick});
  30. @override
  31. Widget build(BuildContext context) {
  32. return Container(
  33. child: IntrinsicHeight(
  34. child: Column(
  35. children: [
  36. Stack(
  37. children: [
  38. AspectRatio(
  39. aspectRatio: 1110 / 1296,
  40. child: Assets.images.imgMemberRetainContainer
  41. .image(width: 301.w)),
  42. Positioned(
  43. top: 360.w,
  44. left: 73.w,
  45. right: 73.w,
  46. child: GestureDetector(
  47. onTap: () {
  48. MemberRetainDialog.dismiss();
  49. payClick();
  50. },
  51. child: Container(
  52. height: 40.w,
  53. decoration: BoxDecoration(
  54. gradient: LinearGradient(
  55. begin: Alignment.centerLeft, // 90度相当于从左到右
  56. end: Alignment.centerRight,
  57. colors: [
  58. Color(0xFF7B7DFF), // #7B7DFF
  59. Color(0xFF6365FF), // #6365FF
  60. ],
  61. stops: [0.0, 1.0],
  62. // 从0%到100%
  63. ),
  64. borderRadius: BorderRadius.circular(40.w / 2.0),
  65. ),
  66. //getPrimaryBtnDecoration(100.w),
  67. child: Center(
  68. child: Text(StringName.memberContinuePay,
  69. style: TextStyle(
  70. fontSize: 15.sp, color: Colors.white)),
  71. ),
  72. ),
  73. ),
  74. ),
  75. ],
  76. ),
  77. SizedBox(height: 24.w,),
  78. Center(
  79. child: GestureDetector(
  80. onTap: () {
  81. MemberRetainDialog.dismiss();
  82. cancelClick();
  83. },
  84. child: Assets.images.iconMemberRetainClose
  85. .image(width: 32.w, height: 32.w),
  86. ),
  87. )
  88. ],
  89. ),
  90. ),
  91. );
  92. }
  93. }