import 'package:cs_resources/generated/assets.dart'; import 'package:cs_resources/generated/l10n.dart'; import 'package:cs_resources/theme/app_colors_theme.dart'; import 'package:flutter/material.dart'; import 'package:auto_route/auto_route.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:router/ext/auto_router_extensions.dart'; import 'package:widgets/ext/ex_widget.dart'; import 'package:widgets/my_appbar.dart'; import 'package:widgets/my_button.dart'; import 'package:widgets/my_load_image.dart'; import 'package:widgets/my_text_view.dart'; import 'package:widgets/utils/dark_theme_util.dart'; import '../../router/page/payment_page_router.dart'; import 'payment_confirm_view_model.dart'; @RoutePage() class PaymentConfirmPage extends HookConsumerWidget { final String? title; final String? orderId; final String? amount; final String? deposit; const PaymentConfirmPage({ Key? key, @PathParam() required this.title, @PathParam() required this.orderId, @PathParam() required this.amount, @PathParam() this.deposit, }) : super(key: key); //启动当前页面 static void startInstance({ BuildContext? context, required String? title, required String? orderId, required String? amount, String? deposit, }) { if (context != null) { context.router.push(PaymentConfirmPageRoute(title: title, orderId: orderId, amount: amount, deposit: deposit)); } else { appRouter.push(PaymentConfirmPageRoute(title: title, orderId: orderId, amount: amount, deposit: deposit)); } } @override Widget build(BuildContext context, WidgetRef ref) { final viewModel = ref.watch(paymentConfirmViewModelProvider.notifier); final state = ref.watch(paymentConfirmViewModelProvider); return Scaffold( appBar: MyAppBar.appBar(context, title ?? "Payment"), backgroundColor: context.appColors.backgroundWhite, body: Column( mainAxisSize: MainAxisSize.max, crossAxisAlignment: CrossAxisAlignment.start, children: [ SingleChildScrollView( scrollDirection: Axis.vertical, physics: const BouncingScrollPhysics(), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ //支付 Visibility( visible: true, child: Row( children: [ MyAssetImage( Assets.paymentInfoDetails, width: 27, height: 27, color: DarkThemeUtil.multiColors(context, AppColorsTheme.colorPrimary, darkColor: Colors.white), ), MyTextView( S.current.payment, textColor: context.appColors.textBlack, fontSize: 17, marginLeft: 14, isFontMedium: true, ).expanded(), ], ).marginOnly(top: 15, left: 15, right: 15), ), //支付金额 Visibility( visible: true, child: Row( mainAxisSize: MainAxisSize.max, children: [ MyTextView( S.current.fee, textColor: context.appColors.textBlack, fontSize: 18, isFontRegular: true, ), const Spacer(), MyTextView( "SGD", textColor: context.appColors.textBlack, fontSize: 18, isFontRegular: true, ), MyTextView( "\$${amount ?? "0.00"}", textColor: context.appColors.textPrimary, fontSize: 22, marginLeft: 8, isFontMedium: true, ), ], ).marginOnly(top: 20, left: 15, right: 15, bottom: 20), ), //分割线 Visibility( visible: deposit != null && int.parse(deposit!) > 0, child: Divider( color: context.appColors.dividerDefault, height: 0.5, ), ), //押金 Visibility( visible: deposit != null && int.parse(deposit!) > 0, child: Row( children: [ MyAssetImage( Assets.paymentInfoDetails, width: 27, height: 27, color: DarkThemeUtil.multiColors(context, AppColorsTheme.colorPrimary, darkColor: Colors.white), ), MyTextView( S.current.deposit, textColor: context.appColors.textBlack, fontSize: 17, marginLeft: 14, isFontMedium: true, ).expanded(), ], ).marginOnly(top: 15, left: 15, right: 15), ), //押金金额 Visibility( visible: deposit != null && int.parse(deposit!) > 0, child: Row( children: [ MyTextView( S.current.deposit_hold, textColor: context.appColors.textBlack, fontSize: 18, isFontRegular: true, ), const Spacer(), MyTextView( "SGD", textColor: context.appColors.textBlack, fontSize: 18, isFontRegular: true, ), MyTextView( "\$${deposit ?? "0.00"}", textColor: context.appColors.textPrimary, fontSize: 22, marginLeft: 8, isFontMedium: true, ), ], ).marginOnly(top: 20, left: 15, right: 15, bottom: 20), ), // // DESC // Row( // children: [ // MyAssetImage( // Assets.paymentInfoNotes, // width: 27, // height: 27, // color: DarkThemeUtil.multiColors(context, AppColorsTheme.colorPrimary, darkColor: Colors.white), // ), // MyTextView( // S.current.notes_to_recipient, // textColor: context.appColors.textBlack, // fontSize: 17, // marginLeft: 14, // isFontMedium: true, // ).expanded(), // ], // ).marginOnly(left: 15, right: 15), // MyTextView( // "The money has already been paid", // textColor: context.appColors.textPrimary, // fontSize: 16, // marginTop: 15, // marginBottom: 20, // marginLeft: 15, // marginRight: 15, // isFontRegular: true, // ), // _paymentInfo(context, ref), ], ), ).expanded(), // 底部按钮 MyButton( onPressed: () { viewModel.doPaymentOrder(orderId ?? ""); }, text: S.current.proceed_with_payment, textColor: Colors.white, backgroundColor: context.appColors.btnBgDefault, fontWeight: FontWeight.w500, type: ClickType.throttle, fontSize: 16, minHeight: 50, radius: 0, ).marginOnly(top: 15), ], ), ); } //底部的支付信息 Widget _paymentInfo(BuildContext context, WidgetRef ref) { final viewModel = ref.watch(paymentConfirmViewModelProvider.notifier); return Container( height: 75, padding: const EdgeInsets.symmetric(horizontal: 20), color: context.appColors.backgroundDark, child: Row( children: [ const MyAssetImage( Assets.paymentMasterCardIcon, height: 34, width: 56, ), MyTextView( "Ending 9423", marginLeft: 15, marginRight: 15, textColor: context.appColors.textBlack, fontSize: 15, isFontMedium: true, ).expanded(), MyTextView( S.current.change, textColor: Colors.white, backgroundColor: context.appColors.btnBgDefault, paddingRight: 16, paddingLeft: 16, paddingTop: 8, paddingBottom: 8, cornerRadius: 7, fontSize: 15, isFontMedium: true, ) ], )); } }