首页 > 解决方案 > dart 变量不等于它们在对象的构造函数中设置的值

问题描述

我有一个叫做分支的类:

class Branch {
  String id;
  String businessName;
  String businessAddress;
  String businessPhone;
  int status;

  Branch({
    businessName = "unknown",
    businessAddress = "unknown",
    businessPhone = "unknown",
    id = "unknown",
    status = -1,
  });


然后我有这个简单的有状态小部件:

class PageMain extends StatefulWidget {

  PageMain({Key key}) : super(key: key);

  @override
  _PageMainState createState() => _PageMainState();
}

class _PageMainState extends State<PageMain> {
  bool _isInitalized = false;    

  void _initializeOnFirstBuild(){
    if(!_isInitialized) {
      Branch testBranch = new Branch(businessName: "test");
      print(testBranch.businessName);
      _isInitialized = true;
    }
  }

  void didChangeDependencies() {
    // TODO: implement didChangeDependencies
    super.didChangeDependencies();
    _initializeOnFirstBuild();
  }
}

当尝试打印业务名称或在构造函数中存储和设置的任何其他变量时,它返回 null。(返回返回“null”而不是“test”)

标签: flutterdart

解决方案


构造函数中的初始化是错误的。您需要使用this关键字。

Branch({
    this.businessName = "unknown",
    this.businessAddress = "unknown",
    this.businessPhone = "unknown",
    this.id = "unknown",
    this.status = -1,
});

推荐阅读