flutter 参数“id”的类型不允许其值为“null”?

rsl1atfo  于 2023-03-31  发布在  Flutter
关注(0)|答案(1)|浏览(219)

我从视频中复制了这段代码,但我得到了这个错误:* 由于其类型,参数“id”的值不能为“null”,但隐式默认值为“null”。请尝试添加显式非“null”默认值或“required”修饰符。*

import 'package:flutter/material.dart';

class CataologModel {
  static final items = [
    Item(
      1,    //ERROR on this line
      "iPhone 12",
      "Apple 12th Gen",
      999,
      "White",
      "assets/images/iphone12b.jpg",
    )
  ];
}

class Item {
  final num id;
  final String name;
  final String desc;
  final num price;
  final String color;
  final String image;

  Item({this.id, this.name, this.desc, this.price, this.color, this.image}); //ERROR on this line

  factory Item.fromMap(Map<String, dynamic> map) {
    return Item(
      id: map["id"],
      name: map["name"],
      desc: map["desc"],
      price: map["price"],
      color: map["color"],
      image: map["image"],
    );
  }

  toMap() => {
        "id": id,
        "name": name,
        "desc": desc,
        "price": price,
        "color": color,
        "image": image,
      };
}

而且这个错误在开始时:

即使我按要求在参数中使用“required”,我也会得到这个新错误,并且无法解决它们。

注意:我是Flutter的新手
我复制了代码,但它不工作,如视频中所示,这可能是因为空安全,因为我是新的,我不知道很多关于空安全。

oyxsuwqo

oyxsuwqo1#

作为null安全final,构造函数上不需要要求可空字段。

Item({
    required this.id,
    required this.name,
    required this.desc,
    required this.price,
    required this.color,
    required this.image,
  });

你使用的是命名参数,就像

Item(
      id: 1, 
      name: "iPhone 12",
      desc: "Apple 12th Gen",
      price: 999,
      color: "White",
      image: "assets/images/iphone12b.jpg",
    )

更多关于null-safety的信息。

相关问题