如何在带有私有变量的dart构造函数中使用它

时间:2019-01-24 18:27:46

标签: dart flutter

当我尝试使用Student(this._name)之类的飞镖创建构造函数时,它不适用于私有变量。

我已经尝试过使用setter,但是它也不起作用。

    class Student{

    var _id;
    var _name;

    Student(this.id, this.name);

    void set id(int id) => _id = id;
    void set name(String name) => _name = name;

    }

1 个答案:

答案 0 :(得分:3)

不支持此操作,因为会将私有实现暴露给外部。

如果将var _id;重命名为var _userId;,您将通过重命名私有字段来破坏使用类的代码。
请改用我的答案下方的评论。

  class Student{

    var _id;
    var _name;

    Student({this._id, this._name}); // error

    void set id(int id) => _id = id;
    void set name(String name) => _name = name;
  }

替代方案

  class Student{

    var _id;
    var _name;

    Student({int id, String name}) : _id = id, _name = name;

    void set id(int id) => _id = id;
    void set name(String name) => _name = name;
  }