【问题标题】:Adding List<object> to class将 List<object> 添加到类
【发布时间】:2020-07-29 19:36:29
【问题描述】:

这里是新程序员,我正在尝试将 List 对象添加到另一个类中的列表中,但它一直给我一个错误。我已经被这个问题困扰了好几个小时了

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

我不断遇到的错误

TypeError: C.JSNull_methods.add$1 is not a functionError: TypeError: C.JSNull_methods.add$1 is not a function

【问题讨论】:

  • 我认为你需要创建一个新列表......所以像 List hobbies = new List();现在我猜它已声明但未初始化。 (有类型,但为空)

标签: class flutter dart arraylist


【解决方案1】:

您在这里混合了很多东西,但让我们尝试将它们一一解开。 :) 关于命名约定的事情很少,可以让您的生活更轻松:

  1. 如果对象名称代表一个项目而不是某项列表,则不要使用复数形式。
  2. 列表类型的属性始终使用复数形式。
  3. 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;
}

排序完成后,让我们开始添加数据并初始化这些对象:

void main() {
  List<Hobby> hobbies = [Hobby("Football")];
  User user1 = new User("Harris", 22, hobbies);
  print(user1.getAge().toString());
}

【讨论】:

    【解决方案2】:

    你需要初始化一个List,否则就是null,而null没有add,所以这样做:

    final hobby = List<Hobbies>(); 
    // or final List<Hobbies> hobby = [];
    // or final hobby = <Hobby>[];
    Hobbies hobbies = new Hobbies("Football");
    hobby.add(hobbies);
    final user1 = User("Harris", 22, hobby);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-17
      • 1970-01-01
      • 2014-05-13
      • 2021-01-21
      • 2016-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多