diff --git a/frontend/mobile-app/lib/features/kyc/presentation/pages/kyc_entry_page.dart b/frontend/mobile-app/lib/features/kyc/presentation/pages/kyc_entry_page.dart index 89312361..c014c6ed 100644 --- a/frontend/mobile-app/lib/features/kyc/presentation/pages/kyc_entry_page.dart +++ b/frontend/mobile-app/lib/features/kyc/presentation/pages/kyc_entry_page.dart @@ -25,7 +25,10 @@ final kycStatusProvider = FutureProvider.autoDispose((ref) as /// 层级2: 实人认证 (人脸活体检测) /// 层级3: KYC (证件照上传验证) class KycEntryPage extends ConsumerWidget { - const KycEntryPage({super.key}); + /// 从认种流程跳转时带的订单号,KYC成功后需要跳转到合同签署 + final String? orderNo; + + const KycEntryPage({super.key, this.orderNo}); @override Widget build(BuildContext context, WidgetRef ref) { @@ -257,7 +260,8 @@ class KycEntryPage extends ConsumerWidget { // 手机号未验证,跳转到验证手机号页面 _showPhoneVerificationRequiredDialog(context); } else { - context.push(RoutePaths.kycId); + // 传递 orderNo 到 KycIdPage + context.push(RoutePaths.kycId, extra: orderNo); } } }, diff --git a/frontend/mobile-app/lib/features/kyc/presentation/pages/kyc_id_page.dart b/frontend/mobile-app/lib/features/kyc/presentation/pages/kyc_id_page.dart index f5245a45..f3ea1a39 100644 --- a/frontend/mobile-app/lib/features/kyc/presentation/pages/kyc_id_page.dart +++ b/frontend/mobile-app/lib/features/kyc/presentation/pages/kyc_id_page.dart @@ -2,14 +2,15 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:go_router/go_router.dart'; -import 'kyc_entry_page.dart'; -import '../../../home/presentation/pages/home_shell_page.dart'; -import '../../../../core/di/injection_container.dart'; +import 'kyc_entry_page.dart' show kycStatusProvider, kycServiceProvider; import '../../../../routes/route_paths.dart'; /// KYC 层级1: 实名认证页面 (三要素验证: 姓名+身份证号+手机号) class KycIdPage extends ConsumerStatefulWidget { - const KycIdPage({super.key}); + /// 从认种流程跳转时带的订单号,KYC成功后需要跳转到合同签署 + final String? orderNo; + + const KycIdPage({super.key, this.orderNo}); @override ConsumerState createState() => _KycIdPageState(); @@ -85,9 +86,16 @@ class _KycIdPageState extends ConsumerState { behavior: SnackBarBehavior.floating, ), ); - // 刷新状态并返回 + // 刷新状态 ref.invalidate(kycStatusProvider); - context.pop(true); + + // 如果有 orderNo,说明是从认种流程来的,跳转到合同签署页面 + if (widget.orderNo != null) { + context.go('${RoutePaths.contractSigning}/${widget.orderNo}'); + } else { + // 否则直接返回 + context.pop(true); + } } else { setState(() { _errorMessage = result.errorMessage ?? '验证失败,请检查信息是否正确'; diff --git a/frontend/mobile-app/lib/features/planting/presentation/pages/planting_location_page.dart b/frontend/mobile-app/lib/features/planting/presentation/pages/planting_location_page.dart index ba2f33f9..bb7693f0 100644 --- a/frontend/mobile-app/lib/features/planting/presentation/pages/planting_location_page.dart +++ b/frontend/mobile-app/lib/features/planting/presentation/pages/planting_location_page.dart @@ -287,7 +287,8 @@ class _PlantingLocationPageState extends ConsumerState { final goToKyc = await KycRequiredDialog.show(context: context); if (goToKyc == true && mounted) { - context.push(RoutePaths.kycEntry); + // 传递 orderNo,KYC 成功后自动跳转到合同签署 + context.push(RoutePaths.kycEntry, extra: widget.orderNo); return; } } else if (mounted) { diff --git a/frontend/mobile-app/lib/routes/app_router.dart b/frontend/mobile-app/lib/routes/app_router.dart index 65d179a9..f7c8c088 100644 --- a/frontend/mobile-app/lib/routes/app_router.dart +++ b/frontend/mobile-app/lib/routes/app_router.dart @@ -368,7 +368,11 @@ final appRouterProvider = Provider((ref) { GoRoute( path: RoutePaths.kycEntry, name: RouteNames.kycEntry, - builder: (context, state) => const KycEntryPage(), + builder: (context, state) { + // 从认种流程来时会带 orderNo + final orderNo = state.extra as String?; + return KycEntryPage(orderNo: orderNo); + }, ), // KYC Phone Verification Page (手机号验证) @@ -382,7 +386,11 @@ final appRouterProvider = Provider((ref) { GoRoute( path: RoutePaths.kycId, name: RouteNames.kycId, - builder: (context, state) => const KycIdPage(), + builder: (context, state) { + // 从认种流程来时会带 orderNo + final orderNo = state.extra as String?; + return KycIdPage(orderNo: orderNo); + }, ), // KYC Face Verification Page (层级2: 实人认证 - 人脸活体)