You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中如何根据邮箱后缀控制登录页面跳转?

实现邮箱后缀校验与跳转控制

直接修改登录按钮的回调逻辑即可,核心是在非空校验通过后,判断邮箱后缀并跳转对应页面:

修改后的登录按钮回调代码

signInButton(
  context,
  () {
    if (_mail.text.isEmpty || _password.text.isEmpty) {
      Fluttertoast.showToast(
          msg: "Yanlış veya eksik bilgi girdiniz.",
          toastLength: Toast.LENGTH_LONG,
          gravity: ToastGravity.BOTTOM_RIGHT,
          timeInSecForIosWeb: 3,
          backgroundColor: Colors.red,
          textColor: Colors.white,
          fontSize: 16.0);
    } else {
      final email = _mail.text.trim();
      // 判断邮箱后缀
      if (email.endsWith("@gmail.com")) {
        // 跳转到Gmail对应的页面,比如原有的StudentWidget
        Navigator.of(context).push(MaterialPageRoute(
          builder: (context) => const StudentWidget(),
        ));
      } else if (email.endsWith("@hotmail.com")) {
        // 跳转到Hotmail对应的页面,替换成你的目标页面
        Navigator.of(context).push(MaterialPageRoute(
          builder: (context) => const HotmailTargetWidget(),
        ));
      } else {
        // 后缀不匹配时的提示
        Fluttertoast.showToast(
            msg: "Desteklenmeyen e-posta son ekleri.",
            toastLength: Toast.LENGTH_LONG,
            gravity: ToastGravity.BOTTOM_RIGHT,
            timeInSecForIosWeb: 3,
            backgroundColor: Colors.orange,
            textColor: Colors.white,
            fontSize: 16.0);
      }
    }
  },
  false,
)

关键说明

  • 用trim()去除邮箱前后空格,避免输入空格导致判断错误
  • 用endsWith()方法精准匹配邮箱后缀,比contains()更可靠(防止邮箱中间出现这些字符串的情况)
  • 新增了后缀不匹配的提示逻辑,提升用户体验

额外优化建议

你当前TextFormField的validator逻辑存在问题(if (value == "@hotmail") return 'Hata';),可以改成更合理的邮箱格式校验,提前在输入阶段给出提示:

validator: (value) {
  if (value == null || value.isEmpty) {
    return "E-posta boş olamaz";
  }
  // 基础邮箱格式校验
  final emailRegex = RegExp(r'^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$');
  if (!emailRegex.hasMatch(value)) {
    return "Geçersiz e-posta formatı";
  }
  // 提前校验后缀合法性
  if (!value.endsWith("@gmail.com") && !value.endsWith("@hotmail.com")) {
    return "Sadece @gmail.com veya @hotmail.com adresleri desteklenir";
  }
  return null;
},

内容的提问来源于stack exchange,提问作者ckot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 18:09:23