Class 添加列表<;对象>;上课

Class 添加列表<;对象>;上课,class,flutter,dart,arraylist,Class,Flutter,Dart,Arraylist,新来的程序员,我试图在另一个类中的列表中添加一个列表对象,但它总是给我一个错误。我已经在这个问题上纠缠了好几个小时了 void main() { List<Hobbies> hobby; Hobbies hobbies = new Hobbies("Football"); hobby.add(hobbies); User user1 = new User("Harris", 22, hobby); print(user1.

新来的程序员,我试图在另一个类中的列表中添加一个列表对象,但它总是给我一个错误。我已经在这个问题上纠缠了好几个小时了

void main() 
{
  List<Hobbies> hobby;
  Hobbies hobbies = new Hobbies("Football");
  hobby.add(hobbies);
  User user1 = new User("Harris", 22, hobby);
  print(user1.getAge());
  
}

class User 
{
  String name;
  int age;
  List<Hobbies> hobbies;
  
  User(String name, int age, List<Hobbies> hobbies) 
  {
    this.name = name;
    this.age = age;
    this.hobbies = hobbies;
  }
  
  getAge() 
  {
    print(name);
  }
}

class Hobbies 
{
  String name;
  
  Hobbies(String name) 
  {
    this.name = name;
  }
  
  getAge() 
  {
    print(name);
  }
}

你在这里混合了很多东西,但让我们试着一个接一个地把它们拆开。:) 关于命名约定,让您的生活更轻松的事情很少:

  • 如果对象名代表一个项目,而不是某个项目的列表,则不要使用复数形式
  • 列表类型的属性始终使用复数
  • Getter方法应该总是返回一个类型,如果您错过了该部分,您将不会看到您的上层项目在试图打印变量而不是返回值时出现的编译时错误,然后再次在主文件中打印第二次
  • 如果你遵循这些原则,你会让你的物体看起来像这样

    class User {
      String name;
      int age;
      List<Hobby> hobbies;
    
      User(String name, int age, List<Hobby> hobbies) {
        this.name = name;
        this.age = age;
        this.hobbies = hobbies;
      }
    
      int getAge() => print(name);
    }
    
    class Hobby {
      String name;
    
      Hobby(String name) {
        this.name = name;
      }
    
      String getName() => this.name;
    }
    
    类用户{
    字符串名;
    智力年龄;
    列出爱好;
    用户(字符串名称、整数年龄、兴趣爱好列表){
    this.name=名称;
    这个。年龄=年龄;
    这个。爱好=爱好;
    }
    int getAge()=>打印(名称);
    }
    课堂爱好{
    字符串名;
    爱好(字符串名称){
    this.name=名称;
    }
    字符串getName()=>this.name;
    }
    
    排序完成后,让我们开始添加数据并初始化这些对象:

    void main() {
      List<Hobby> hobbies = [Hobby("Football")];
      User user1 = new User("Harris", 22, hobbies);
      print(user1.getAge().toString());
    }
    
    void main(){
    列出爱好=[爱好(“足球”);
    用户1=新用户(“Harris”,22岁,爱好);
    打印(user1.getAge().toString());
    }
    
    您在这里混合了很多东西,但让我们试着一个接一个地打开它。:) 关于命名约定,让您的生活更轻松的事情很少:

  • 如果对象名代表一个项目,而不是某个项目的列表,则不要使用复数形式
  • 列表类型的属性始终使用复数
  • Getter方法应该总是返回一个类型,如果您错过了该部分,您将不会看到您的上层项目在试图打印变量而不是返回值时出现的编译时错误,然后再次在主文件中打印第二次
  • 如果你遵循这些原则,你会让你的物体看起来像这样

    class User {
      String name;
      int age;
      List<Hobby> hobbies;
    
      User(String name, int age, List<Hobby> hobbies) {
        this.name = name;
        this.age = age;
        this.hobbies = hobbies;
      }
    
      int getAge() => print(name);
    }
    
    class Hobby {
      String name;
    
      Hobby(String name) {
        this.name = name;
      }
    
      String getName() => this.name;
    }
    
    类用户{
    字符串名;
    智力年龄;
    列出爱好;
    用户(字符串名称、整数年龄、兴趣爱好列表){
    this.name=名称;
    这个。年龄=年龄;
    这个。爱好=爱好;
    }
    int getAge()=>打印(名称);
    }
    课堂爱好{
    字符串名;
    爱好(字符串名称){
    this.name=名称;
    }
    字符串getName()=>this.name;
    }
    
    排序完成后,让我们开始添加数据并初始化这些对象:

    void main() {
      List<Hobby> hobbies = [Hobby("Football")];
      User user1 = new User("Harris", 22, hobbies);
      print(user1.getAge().toString());
    }
    
    void main(){
    列出爱好=[爱好(“足球”);
    用户1=新用户(“Harris”,22岁,爱好);
    打印(user1.getAge().toString());
    }
    
    您需要初始化
    列表
    ,否则它是
    空的
    ,并且
    空的
    没有
    添加
    ,因此请执行以下操作:

    final hobby=List();
    //或最终列表爱好=[];
    //或最终爱好=[];
    爱好=新爱好(“足球”);
    爱好。添加(爱好);
    最终用户1=用户(“哈里斯”,22岁,爱好);
    
    您需要初始化
    列表
    ,否则它是
    空的
    ,并且
    空的
    没有
    添加
    ,因此请执行以下操作:

    final hobby=List();
    //或最终列表爱好=[];
    //或最终爱好=[];
    爱好=新爱好(“足球”);
    爱好。添加(爱好);
    最终用户1=用户(“哈里斯”,22岁,爱好);
    
    我认为您需要创建一个新列表。。。例如,列出爱好=新建列表();现在我想它已经声明了,但还没有初始化。(有一个类型,但为空)我认为您需要创建一个新列表。。。例如,列出爱好=新建列表();现在我想它已经声明了,但还没有初始化。(具有类型,但为空)