import 'package:cpt_payment/modules/payment_success/payment_success_state.dart';
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:flutter_hooks/flutter_hooks.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_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_success_view_model.dart';

@RoutePage()
class PaymentSuccessPage extends HookConsumerWidget {
  final String? orderId;

  const PaymentSuccessPage({
    Key? key,
    @PathParam() required this.orderId,
  }) : super(key: key);

  //启动并关闭其他栈
  static void startWithPop({required String? orderId}) {
    appRouter.pushAndPopUntil(
      PaymentSuccessPageRoute(orderId: orderId),
      predicate: (route) {
        return route.settings.name == 'PaymentPageRoute';
      },
    );
  }

  @override
  Widget build(BuildContext context, WidgetRef ref) {
    final viewModel = ref.read(paymentSuccessViewModelProvider.notifier);
    final PaymentSuccessState state = ref.watch(paymentSuccessViewModelProvider);

    useEffect(() {
      // 组件挂载时执行 - 执行接口请求
      Future.microtask(() {
        viewModel.fetchFormDetail(orderId);
      });
      return () {
        // 组件卸载时执行
      };
    }, []);

    return Scaffold(
      appBar: MyAppBar.appBar(context, state?.paymentDetail?.title ?? "Payment Detail"),
      backgroundColor: context.appColors.backgroundWhite,
      body: SizedBox(
        width: double.infinity,
        child: Column(
          children: [
            //成功图片
            MyAssetImage(
              Assets.facilityPaymentSuccessIcon,
              width: 54,
              height: 54,
              color: DarkThemeUtil.multiColors(context, AppColorsTheme.colorPrimary, darkColor: Colors.white),
            ).marginOnly(top: 11, bottom: 13),

            //支付成功
            MyTextView(
              S.current.payment_successful,
              fontSize: 18,
              marginBottom: 3,
              isFontMedium: true,
              textColor: context.appColors.textPrimary,
            ),

            //支付金额
            MyTextView(
              S.current.fee_paid,
              marginTop: 40,
              fontSize: 15,
              isFontRegular: true,
              textColor: context.appColors.textBlack,
            ),
            MyTextView(
              "\$${state.paymentDetail?.totalAmount ?? ""}",
              fontSize: 15,
              isFontRegular: true,
              textColor: context.appColors.textPrimary,
            ),

            // //付款类型与时间
            // Row(
            //   mainAxisSize: MainAxisSize.min,
            //   children: [
            //     MyTextView(
            //       "Master card ending",
            //       fontSize: 15,
            //       isFontRegular: true,
            //       textColor: context.appColors.textBlack,
            //     ),
            //     MyTextView(
            //       "9423",
            //       fontSize: 15,
            //       isFontMedium: true,
            //       textColor: context.appColors.textBlack,
            //     ),
            //   ],
            // ).marginOnly(top: 12),

            Row(
              mainAxisSize: MainAxisSize.min,
              children: [
                MyTextView(
                  S.current.paid_on,
                  fontSize: 15,
                  isFontRegular: true,
                  textColor: context.appColors.textBlack,
                ),
                MyTextView(
                  state.paymentDetail?.paidAt ?? "",
                  fontSize: 15,
                  isFontMedium: true,
                  textColor: context.appColors.textBlack,
                ),
              ],
            ).marginOnly(top: 5),

            const SizedBox(height: 23),
          ],
        ),
      ),
    );
  }
}
