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 {
|
Future<void> _saveReferralCodeAndProceed() async {
|
||||||
if (!_canProceed) return;
|
if (!_canProceed) return;
|
||||||
|
|
||||||
// 推荐码必填,保存到本地存储
|
|
||||||
final inviterCode = _referralCodeController.text.trim();
|
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);
|
||||||
|
|
||||||
// 跳转到手机号注册页面
|
if (!isValid) {
|
||||||
context.push(
|
if (!mounted) return;
|
||||||
RoutePaths.phoneRegister,
|
ScaffoldMessenger.of(context).showSnackBar(
|
||||||
extra: PhoneRegisterParams(inviterReferralCode: inviterCode),
|
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