Android Studio 必须初始化不可为空的示例字段(数据持久性)

yeotifhr  于 2022-12-04  发布在  Android
关注(0)|答案(2)|浏览(146)

我想更正代码错误。我的问题是:

必须初始化不可为Null的执行严修字段。

z2acfund

z2acfund1#

这是我们在Dart/Flutter中执行此操作的正常方式:

class Course {
      final int id;
      final String name;
      final String content;
      final int hours;
      
      const Course({
        this.id = 0;
        this.name = '';
        this.content = '';
        this.hours = 0;
      });
      
      factory Course.fromMap<String, dynamic> data) {
        return Course(
          id: data['id'] as int ?? 0,
          name: data['name'] as String ?? '',
          content: data['content'] as String ?? '',
          hours: data['hours'] as int ?? 0,
        );
      }
    }

    ...
    
    
    final course = Course.fromMap(data);

我们通常不对数据类使用下划线(私有)变量,因为Dart会自动提供getter来通过点标记法访问字段。

final name = course.name;
wqlqzqxt

wqlqzqxt2#

不可为空的字段应该在对象创建期间初始化,甚至在构造函数体执行之前。

Course(dynamic obj): _id = obj['id'], _name = obj['name'] {}

相关问题