正文可能会正常完成,导致返回"null",但返回类型"Map<String,动态>"可能是不可为空的类型



伙计们,未来,我刚刚开始学习Await异步结构,我得到了这个错误

import 'dart:html';
class product{
late int id;
late String name;
late String category;
late int prize; 

Map<String,dynamic> toMap(){
var map = Map<String,dynamic>();
map["name" ] = name;
map["category"] = category;
map["prize"] = prize;
if(id==null){
map["id"]=id;
}
}

这与async和await无关,您定义了返回Map<String, dynamic>的函数,但您没有返回任何内容,您可以通过在函数末尾添加return map来解决这个问题,但一般来说,您应该先学习编程,然后再深入研究异步函数,因为您会发现这种方法更难,所以最好从基础知识开始

您缺少函数中的返回语句。添加这个:

return map;

但是你的类还有其他一些问题。

  1. toMap()将在任何变量未初始化时崩溃。
  2. 检查if(id==null){没有多大意义,因为id不能是nullid可能还没有初始化,但这与null不同,这实际上会导致1所提到的函数崩溃。
  3. 而不是使用late变量,我建议将它们改为可空。你可以写int? id;来代替late int id;
  4. 我建议添加一个构造函数来填充创建时的变量
  5. 类名通常用大写字母书写,如Product。它仍然像你写的那样工作,但它违反了编码惯例。

如何写这个类:

class Product {
int? id;
String? name;
String? category;
int? prize;
Product({this.id, this.name, this.category, this.prize});
Map<String, dynamic> toMap() =>
{'name': name, 'category': category, 'prize': prize, 'id': id};
}

最新更新