member_first_week_discount_dialog.dart 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. import 'package:flutter/cupertino.dart';
  2. import 'package:flutter/gestures.dart';
  3. import 'package:flutter/material.dart';
  4. import 'package:flutter_screenutil/flutter_screenutil.dart';
  5. import 'package:get/get.dart';
  6. import 'package:get/get_core/src/get_main.dart';
  7. import 'package:location/utils/common_expand.dart';
  8. import '../../resource/assets.gen.dart';
  9. import '../../resource/colors.gen.dart';
  10. class MemberFirstWeekDiscountDialog {
  11. static void show({
  12. VoidCallback? confirmOnTap,
  13. VoidCallback? onPrivacyPolicyClick,
  14. VoidCallback? onTermOfServiceClick,
  15. }) {
  16. Get.dialog(
  17. SimpleDialog(
  18. titlePadding: EdgeInsets.zero,
  19. contentPadding: EdgeInsets.zero,
  20. insetPadding: EdgeInsets.zero,
  21. backgroundColor:Colors.transparent,
  22. children: [
  23. MemberFirstWeekDiscountDialogTipView(
  24. onPrivacyPolicyClick: onPrivacyPolicyClick,
  25. onTermOfServiceClick: onTermOfServiceClick,
  26. confirmOnTap: confirmOnTap)
  27. ],
  28. )
  29. );
  30. }
  31. }
  32. class MemberFirstWeekDiscountDialogTipView extends StatefulWidget {
  33. final VoidCallback? onPrivacyPolicyClick;
  34. final VoidCallback? onTermOfServiceClick;
  35. final VoidCallback? confirmOnTap;
  36. const MemberFirstWeekDiscountDialogTipView({
  37. super.key,
  38. this.onPrivacyPolicyClick,
  39. this.onTermOfServiceClick,
  40. required this.confirmOnTap,
  41. });
  42. @override
  43. State<MemberFirstWeekDiscountDialogTipView> createState() => _MemberPaymentCompletedTipViewState();
  44. }
  45. class _MemberPaymentCompletedTipViewState extends State<MemberFirstWeekDiscountDialogTipView> {
  46. @override
  47. Widget build(BuildContext context) {
  48. // TODO: implement build
  49. return Container(
  50. width: 1.sw,
  51. margin: EdgeInsets.only(left: 25.w ,right: 13.w),
  52. child: IntrinsicHeight(
  53. child: Column(
  54. children: [
  55. Container(
  56. padding: EdgeInsets.only(right: 12.w,),
  57. decoration: BoxDecoration(
  58. color: Colors.transparent,
  59. image: DecorationImage(
  60. image: Assets.images.imgMemberFirstWeekDiscountContainer.provider(),
  61. //fit: BoxFit.fill,
  62. )
  63. ),
  64. child: Column(
  65. children: [
  66. SizedBox(
  67. height: 337.w,
  68. ),
  69. GestureDetector(
  70. onTap: () {
  71. Get.back();
  72. widget.confirmOnTap!();
  73. },
  74. child: Container(
  75. decoration: BoxDecoration(
  76. gradient: LinearGradient(
  77. begin: Alignment.centerLeft, // 90度相当于从左到右
  78. end: Alignment.centerRight,
  79. colors: [
  80. Color(0xFF7B7DFF), // #7B7DFF
  81. Color(0xFF6365FF), // #6365FF
  82. ],
  83. stops: [0.0, 1.0],
  84. // 从0%到100%
  85. ),
  86. borderRadius: BorderRadius.circular(40.w / 2.0),
  87. ),
  88. margin: EdgeInsets.symmetric(horizontal: 25.w),
  89. height: 40.w,
  90. alignment: Alignment.center,
  91. child: Text("¥48 立即开通",
  92. style: TextStyle(
  93. fontSize: 14.sp,
  94. color: '#FFFFFF'.color,
  95. fontWeight: FontWeight.w500)
  96. ),
  97. ),
  98. ),
  99. SizedBox(
  100. height: 12.w,
  101. ),
  102. buildPrivacyPolicyView(),
  103. SizedBox(
  104. height: 19.w,
  105. ),
  106. ],
  107. ),
  108. ),
  109. SizedBox(height: 20.w,),
  110. Center(
  111. child: GestureDetector(
  112. onTap: () {
  113. Get.back();
  114. },
  115. child: Assets.images.iconMemberRetainClose
  116. .image(width: 32.w, height: 32.w),
  117. ),
  118. ),
  119. ],
  120. ),
  121. ),
  122. );
  123. }
  124. Widget buildPrivacyPolicyView() {
  125. return Padding(
  126. padding: EdgeInsets.only(left: 12.w),
  127. child: RichText(
  128. text: TextSpan(
  129. style: TextStyle(fontSize: 12.sp, color: ColorName.black40),
  130. children: [
  131. TextSpan(text: '购买前请先阅读'),
  132. TextSpan(
  133. recognizer: TapGestureRecognizer()
  134. ..onTap = () {
  135. widget.onPrivacyPolicyClick!();
  136. },
  137. text: '隐私政策',
  138. style: TextStyle(
  139. color: ColorName.black60,
  140. decoration: TextDecoration.underline)),
  141. TextSpan(text: '&'),
  142. TextSpan(
  143. recognizer: TapGestureRecognizer()
  144. ..onTap = () {
  145. widget.onTermOfServiceClick!();
  146. },
  147. text: '服务条款',
  148. style: TextStyle(
  149. color: ColorName.black60,
  150. decoration: TextDecoration.underline)),
  151. ])),
  152. );
  153. }
  154. }