启用空安全时,默认的“列表”构造函数不可用。 - 颤振

时间:2021-06-04 12:28:32

标签: flutter dart

我刚刚初始化列表,一切都很好,直到我升级了颤振,因为现在我收到一个错误,说明为 The default 'List' constructor isn't available when null safety is enabled. 。我正在使用 getget_storage 依赖项。

这是我收到错误的控制器类

class TodoController extends GetxController {
  var todos = List<Todo>().obs;

  @override
  void onInit() {
    List storedTodos = GetStorage().read<List>('todos');

    if (!storedTodos.isNull) {
      todos = storedTodos.map((e) => Todo.fromJson(e)).toList().obs;
    }
    ever(todos, (_) {
      GetStorage().write('todos', todos.toList());
    });
    super.onInit();
  }
}

这是我正在使用的模型类

class Todo {
  String text;
  bool done;

  Todo({required this.text, this.done = false});

  factory Todo.fromJson(Map<String, dynamic> json) =>
      Todo(text: json['text'], done: json['done']);

  Map<String, dynamic> toJson() => {'text': text, 'done': done};
}```

While initializing the constructor I did get an error stating as ```The parameter 'text' can't have a value of 'null' because of its type, but the implicit default value is 'null'.```

Can i get to know a bit more about this?

2 个答案:

答案 0 :(得分:0)

我认为你可以去掉构造函数括号并像这样重新排列:

List<Todo> todos = [].obs;

get docs 中也有一个列表示例。

答案 1 :(得分:0)

该用法已被弃用,请参阅 docs

您应该使用 var todos = <Todo>[].obs; 代替,并且您仍然保留类型信息