伙计们,未来,我刚刚开始学习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;
但是你的类还有其他一些问题。
toMap()
将在任何变量未初始化时崩溃。- 检查
if(id==null){
没有多大意义,因为id
不能是null
。id
可能还没有初始化,但这与null
不同,这实际上会导致1所提到的函数崩溃。 - 而不是使用
late
变量,我建议将它们改为可空。你可以写int? id;
来代替late int id;
- 我建议添加一个构造函数来填充创建时的变量
- 类名通常用大写字母书写,如
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};
}