dart - 如何解决此 For 循环不工作错误?for 循环在 Flutter 中只工作一次
问题描述
如何解决此 For 循环不工作错误?for 循环在 Flutter 中只工作一次
这是一个简单的登录表单。如果用户名和密码匹配转到用户页面,否则转到管理页面。
方法代码:
checkLogin(){
setState(() {
for(var c=0;c < global.user_name_arr.length-1 ; c++){
if(global.user_name_arr[c]==myController.text&&global.user_password_arr[c]==myControllerPwd.text)
Navigator.push(context, MaterialPageRoute(builder: (context)=>user()),);
else
Navigator.push(context, MaterialPageRoute(builder:(context)=>admin()),); }
}); }
提升按钮代码:
new RaisedButton(
child:new Text("Click"),
onPressed:checkLogin,
)
全球飞镖
library user_login.globlas;
var user_name_arr=['bhanuka','isuru','sampath'];
var user_password_arr=['1234','123','12'];
解决方案
首先,让我们重构您的代码:) 像这样创建一个用户类:
class User {
final String name;
final String password;
User(this.name, this.password);
}
接下来,修复您的全局用户集合:
final validUsers = [User('bhanuka', '1234'), User('isuru', '123'), User('sampath', '12')];
现在,使用此代码执行正确的导航:
checkLogin() {
if (validUsers.indexWhere((user) => user.name == myController.text && user.password == myControllerPwd.text) >= 0) {
Navigator.push(context, MaterialPageRoute(builder: (context)=>user()),);
} else {
Navigator.push(context, MaterialPageRoute(builder:(context)=>admin()),);
}
}
有更好的方法可以进行这种比较,但我想这对于您的用例来说已经足够了。
推荐阅读
- hangouts-chat - 如何@提及使用 REST API 的机器人?
- xml - 使用 XMLTABLE 在 DB2 本机存储过程中解析 XML
- android - DatePickerDialog.OnDateSetListener() 和 MVP
- html - 如何将两个背景图像添加到同一个标题?
- javascript - 由于webpack,变量定义无法全局访问?
- google-maps - 如何在 Google 我的地图中更改道路颜色
- php - 警告:第 48 行 C:\xampp\htdocs\SwaziTour\rpt_payment_history.php 中为 foreach() 提供的参数无效
- binary-search-tree - 合并两个二叉搜索树
- php - Codeigniter url 重定向到在线服务器。我无法找到问题所在
- javascript - 拦截视频标签 src OTHER 调用并将 url 从 http 更改为 https?