Flutter:不要初始化类类型变量

时间:2020-09-02 12:18:11

标签: class flutter dart initialization

为这个愚蠢的问题表示歉意,但显然我的搜索关键字不正确,或者对其他人来说显而易见的解决方案如此之广,以至于尚未有人问过。以前,初始化没有问题,我也不明白这里有什么不同。

我有一个基于数据类的变量,我想为其分配值

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();创建一个空实例,希望能捕获我的值。

1 个答案:

答案 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();
  }
}