在课堂上颤抖地使用foreach

时间:2020-09-26 14:44:48

标签: flutter dart

我是Flutter的新手,我尝试过上课,但遇到了一些问题。 我有一个类UsersList和User。 当我使用作为用户列表的UsersList时,如何使用foreach方法? length,last,remove Last,add,...属性也不可用。该怎么做?

我的班级UsersList和用户:

class UsersList{
  List<User> users;

  UsersList({
    this.users
  });

  factory UsersList.fromJson(List<dynamic> json) {
    List<User> users= List<User>();

    users= json.map((i) => User.fromJson(i)).toList();

    return UsersList(
      users : users
    );
  }

  Map<String, dynamic> toJson() => {
    "users": users,
  };

  @override
  String toString() {
    return '{'
        'users: ${this.users},'
        '}';
  }
}

class User{
  int type;
  String name;
  bool gender;

  User({
    this.type,
    this.name,
    this.gender,
  });

  factory User.fromJson(Map<String, dynamic> json){
    return User(
      type : json['type'],
      name: json['name'],
      gender : json['gender'],
    );
  }

  Map<String, dynamic> toJson() => {
    "type" : type,
    "name" : name,
    "gender" : gender,
  };

  @override
  String toString() {
    return '{'
        'type : ${this.type},'
        'name: ${this.name},'
        'gender : ${this.gender},'
        '}';
  }
 }

这是我的功能: 我在此使用UserList类。当我不使用类时,此代码有效...

static UsersList getUsersValid(UsersList users, num distance)
  {
    //**************** Initialisation  ****************//
    List<String> _listValidUsersName = [];
    UsersList _filteredUsers = UsersList();

    //**************** Script  ****************//
    users.forEach((user) // ERROR => The method 'forEach' isn't defined for the type 'UsersList'. 
    {
      if(distance <= 100 && !_listValidUsersName.contains(user.name))
      {
        _listValidUsersName.add(user.name);
      }
    });

    if(_listValidUsersName.length > 0)
    {
      users.forEach((user) // ERROR => The method 'forEach' isn't defined for the type 'UsersList'. 
      {
        if (_listValidUsersName.contains(user.name))
        {
          if (_filteredUsers.length > 0 && _filteredUsers.last.name == user.name)
          // ERROR => The getter 'length' isn't defined for the type 'UsersList'
          // ERROR => The getter 'last' isn't defined for the type 'UsersList'
          {
            _filteredUsers.removeLast();
            _filteredUsers.add(user);
          }
          else {
            _filteredUsers.add(user);
          }
        }
      });
    }

    if (_filteredUsers.length <= 0)
    {
      throw MyException.noData();
    }

    return _filteredUsers;
  }

1 个答案:

答案 0 :(得分:1)

一个类就像包裹它的变量的父类。要在类中调用变量,您应该使用

users.users.forEach