首页 > 解决方案 > 如何解决此 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'];

标签: dartflutter

解决方案


首先,让我们重构您的代码:) 像这样创建一个用户类:

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()),);   
  }         
}

有更好的方法可以进行这种比较,但我想这对于您的用例来说已经足够了。


推荐阅读