Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 如何单独设置类实例的私有属性?_Dart - Fatal编程技术网

Dart 如何单独设置类实例的私有属性?

Dart 如何单独设置类实例的私有属性?,dart,Dart,我试图在Provider类中分别设置类实例的属性。但我不确定我做的是否正确。你能告诉我怎么做吗 void main() { Provider userprovider = Provider(); userprovider.setUsername='johncena'; userprovider.setEmail='hello@gmail.com'; print(userprovider.getUser.username); print(userprovider.getUs

我试图在Provider类中分别设置类实例的属性。但我不确定我做的是否正确。你能告诉我怎么做吗

void main() { 
  Provider userprovider = Provider();
  userprovider.setUsername='johncena';
  userprovider.setEmail='hello@gmail.com';

  print(userprovider.getUser.username);
  print(userprovider.getUser.email
}


class Provider {
  User _user;
  User get getUser => _user;

  set setUsername(username){
    _user.name = username;
  }

  set setEmail(email){
    _user.email = email;
  }
}


class User {
  String uid;
  String name;
  String email;
  String username;
  String status;
  int state;
  String profilePhoto;

  User({
    this.uid,
    this.name,
    this.email,
    this.username,
    this.status,
    this.state,
    this.profilePhoto,
  });
}
我在Dartpad上看到的当前错误是:

未捕获的TypeError:无法读取nullError的属性“set$name”:TypeError:无法读取null的属性“set$name”

编辑如下-----

为了给你一些上下文,我在Flutter上构建了一个入职页面,用户将首先被带去填写他的用户名,然后他将被推到下一个小部件、出生日期等

我计划在用户从第一个小部件移动到最后一个小部件时本地存储数据,并且只将累积的数据作为一个类推送,user(用户名:xyz,出生日期:11/11/2001,性别:男性,兴趣:网球)

但是,我不确定如何在Provider类中设置_user实例的各个属性。请尝试以下操作:

void main(){
Provider=Provider();
provider.name='John Cena';
年龄=40岁;
打印(provider.user.name);//打印“John Cena”
打印(provider.user.age);//打印40
}
类提供者{
最终用户_User=User();
用户获取用户=>\u用户;
设置名称(字符串名称)=>\u user.name=name;
设置年龄(int age)=>\u user.age=age;
}
类用户{
字符串名;
智力年龄;
用户({this.name,this.age});
}

Provider中的用户价值在哪里?是的,我错过了。感谢您指出,您认为有没有一种方法可以单独添加属性,而不删除以前添加的属性?例如,Provider=Provider(用户(用户名:'johncena');Provider=Provider(用户(电子邮件:'hello@gmail.com'), );上下文:我正在Flitter上构建一个入职页面,用户将首先填写用户名,然后被推送到下一个小部件、电子邮件等。因此,我希望能够在移动到下一个小部件时向_用户实例添加属性。我意识到,对于您发送的代码,您可以不使用设置的setUsername(用户名){u user.name=username;}设置setEmail(email){{u user.email=email;}代码仍然有效。您介意向我解释一下什么时候需要setter吗?@Scottle我编写上一个代码的方式通常被用作
提供者
包的模型。我编辑了我的帖子以反映您的想法,您现在可以看到它按照您希望的方式工作了!谢谢!您帮助我解决了这个问题。