feat: 在向导页添加推荐码API验证
在用户点击"继续"按钮时,调用API验证推荐码是否有效: - 推荐码不存在或已失效时显示错误提示 - 网络错误时显示友好提示 - 验证通过后才保存并跳转到注册页 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
a188d7629f
commit
2a5cb0d2ec
|
|
@ -343,22 +343,49 @@ class _WelcomePageContentState extends ConsumerState<_WelcomePageContent> {
|
|||
Future<void> _saveReferralCodeAndProceed() async {
|
||||
if (!_canProceed) return;
|
||||
|
||||
// 推荐码必填,保存到本地存储
|
||||
final inviterCode = _referralCodeController.text.trim();
|
||||
final secureStorage = ref.read(secureStorageProvider);
|
||||
await secureStorage.write(
|
||||
key: StorageKeys.inviterReferralCode,
|
||||
value: inviterCode,
|
||||
);
|
||||
debugPrint('[GuidePage] 保存邀请人推荐码: $inviterCode');
|
||||
|
||||
if (!mounted) return;
|
||||
// 调用API验证推荐码是否有效
|
||||
try {
|
||||
final accountService = ref.read(accountServiceProvider);
|
||||
final isValid = await accountService.verifyReferralCode(inviterCode);
|
||||
|
||||
// 跳转到手机号注册页面
|
||||
context.push(
|
||||
RoutePaths.phoneRegister,
|
||||
extra: PhoneRegisterParams(inviterReferralCode: inviterCode),
|
||||
);
|
||||
if (!isValid) {
|
||||
if (!mounted) return;
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
const SnackBar(
|
||||
content: Text('推荐码不存在或已失效'),
|
||||
backgroundColor: Colors.redAccent,
|
||||
),
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
// 验证通过,保存到本地存储
|
||||
final secureStorage = ref.read(secureStorageProvider);
|
||||
await secureStorage.write(
|
||||
key: StorageKeys.inviterReferralCode,
|
||||
value: inviterCode,
|
||||
);
|
||||
debugPrint('[GuidePage] 保存邀请人推荐码: $inviterCode');
|
||||
|
||||
if (!mounted) return;
|
||||
|
||||
// 跳转到手机号注册页面
|
||||
context.push(
|
||||
RoutePaths.phoneRegister,
|
||||
extra: PhoneRegisterParams(inviterReferralCode: inviterCode),
|
||||
);
|
||||
} catch (e) {
|
||||
debugPrint('[GuidePage] 验证推荐码失败: $e');
|
||||
if (!mounted) return;
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
const SnackBar(
|
||||
content: Text('网络错误,请稍后重试'),
|
||||
backgroundColor: Colors.redAccent,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/// 打开二维码扫描页面
|
||||
|
|
|
|||
Loading…
Reference in New Issue