# 登录异常居中弹窗 ## 目标 - 邮箱登录、邮箱注册及手机号 OTP 登录的提交异常改为屏幕居中弹窗。 - 本地表单校验继续使用现有内联字段错误,不触发弹窗。 ## 实施步骤 1. 新增 `lib/core/widgets/centered_error_dialog.dart`,统一弹窗样式、遮罩关闭和确认按钮。 2. 补充登录失败、注册失败、确认按钮的中英文印尼语文案并重新生成 l10n。 3. 调整邮箱认证页:接口异常展示居中弹窗,提交 busy 在展示弹窗前复位。 4. 调整手机号弹窗:OTP 发送和验证码登录/注册异常展示居中弹窗,成功 SnackBar 保持不变。 5. 补接口异常、注册标题、本地校验不弹窗和手机号两条异常路径测试。 6. 执行 `dart analyze lib test` 与 `flutter test --no-pub`,回填 PROGRESS 后提交合并。 ## 风险 / 待确认 - 同级 FruitServer 的 `INBOX.md` 当前顶部为已处理 K100,未找到本需求条目;以用户消息中的完整需求为准。 - 现有主工作区处于 `feature/payment-iap` 且有未提交 `pubspec.lock`,本次使用独立 worktree,不触碰该文件。 ## 执行结果 - 已新增居中错误弹窗组件及三语言文案,邮箱登录/注册和手机号 OTP/验证码提交异常均改为弹窗。 - 本地字段校验仍走原内联错误;异常展示前提交 busy 已复位。 - 接口异常、注册标题、未知异常网络文案、遮罩关闭、确认关闭、本地校验不弹窗均有测试覆盖。 - `dart analyze lib test` 零告警,`flutter test --no-pub` 570 项全过。 - 未启停服务,未操作真机。