为这个愚蠢的问题表示歉意,但显然我的搜索关键字不正确,或者对其他人来说显而易见的解决方案如此之广,以至于尚未有人问过。以前,初始化没有问题,我也不明白这里有什么不同。
我有一个基于数据类的变量,我想为其分配值
class MyData {
int id;
String description;
MyData({
this.id,
this.description,
});
factory MyData.fromJson(Map<String, dynamic> parsedJson){
return new ProblemTask(
id: parsedJson['id'],
taskText: parsedJson['decription'],
);
}
Map<String, dynamic> toJson() => {
'id': id,
'taskText': description,
};
}
class _MyPageState extends State<MyPage>{
MyData myVar;
@override
void initState() {
super.initState();
myVar = MyData();
}
_onDone() {
myVar.id = 1;
myVar.description = "abc";
}
}
这导致
设置程序'descr ='在null上被调用。
收件人:空
但是我的理解是,我希望使用myVar = MyData();
创建一个空实例,希望能捕获我的值。
答案 0 :(得分:0)
有一些拼写错误的参数:
import 'package:flutter/material.dart';
class MyData {
int id;
String description;
MyData({
this.id,
this.description,
});
factory MyData.fromJson(Map<String, dynamic> parsedJson){
return new MyData( // MyData instead ProblemTask
id: parsedJson['id'],
description: parsedJson['description'], //description instead of taskText
);
}
Map<String, dynamic> toJson() => {
'id': id,
'taskText': description,
};
}
class MyPage extends StatefulWidget {
@override
_MyPageState createState() => _MyPageState();
}
class _MyPageState extends State<MyPage> {
MyData myVar;
@override
void initState() {
super.initState();
myVar = new MyData(id:1,description:'abc');
}
@override
Widget build(BuildContext context) {
return Container();
}
}