如何验证邮箱前两位字符,实现不同邮箱账号跳转访问指定页面
实现思路
- 先校验邮箱格式合法性,避免空值、前缀长度不足2位、无@符号等异常场景导致程序崩溃
- 拆分邮箱地址获取@符号前的前缀部分,提取前2位字符做匹配
- 按匹配结果执行对应页面跳转逻辑
调整后代码
// 先做异常防护,避免非法邮箱格式报错 if (googleUser.email != null && googleUser.email.contains('@')) { // 拆分获取邮箱前缀 String emailPrefix = googleUser.email.split('@')[0]; // 校验前缀长度是否至少有2位 if (emailPrefix.length >= 2) { String firstTwoChars = emailPrefix.substring(0, 2); if (firstTwoChars == '12') { Navigator.push(context, MaterialPageRoute(builder: (context) => Home())); } else if (firstTwoChars == '43') { Navigator.push(context, MaterialPageRoute(builder: (context) => Home2())); } // 可以在此处补充其他前缀匹配逻辑,或者未匹配到的默认处理 } }
可扩展优化方案
如果后续需要新增其他前缀的跳转规则,可以把前缀和页面对应关系存在Map里做匹配,代码会更简洁,拓展性更强:
// 预定义前缀和页面的映射关系 final Map<String, Widget> prefixPageMap = { '12': Home(), '43': Home2(), // 后续新增规则直接加键值对即可 }; // 匹配逻辑 if (googleUser.email != null && googleUser.email.contains('@')) { String emailPrefix = googleUser.email.split('@')[0]; if (emailPrefix.length >= 2) { String targetPrefix = emailPrefix.substring(0,2); if (prefixPageMap.containsKey(targetPrefix)) { Navigator.push(context, MaterialPageRoute(builder: (context) => prefixPageMap[targetPrefix]!)); } } }
内容的提问来源于stack exchange,提问作者Soo
相关产品推荐
相关产品推荐

