gpt4 book ai didi

flutter - 在 flutter Dart 中创建和使用单例

转载 作者:行者123 更新时间:2023-12-03 04:50:19 25 4
gpt4 key购买 nike

我对 flutter 和 Dart 非常陌生,并尝试将单例实例用于全局状态(?)。
这是从后端服务器获取的公司信息。
当 Flutter 应用启动时,向服务器发送请求并获取响应并基于响应构建单例实例。
所以我创建了类

class Company {
static final Company _instance = new Company._internal();

factory Company() {
return _instance;
}

@protected
String name;
@protected
String intro;

String get companyName => name;
String get companyIntro => intro;

void setCompany(String name, String intro) {
name = name;
intro = intro;
}

Company._internal();
}

在 main.dart
// companyResult is the response from server
final String companyName = companyResult["name"];
final String companyIntro = companyResult["intro"];

// create singleton instance
var company = Company();
// set company info
company.setCompany(companyName, companyIntro);

// cheking
print(company.companyName)

prints null

我究竟做错了什么?

最佳答案

单例是 better avoided , 我建议你使用 Provider而是在您的小部件树上注入(inject)一个简单的对象引用,这样您就可以随时获取该引用。

您的示例打印 null 的原因是因为您在 setCompany() 上错误地引用了变量。 , 变量 nameintro都是同一个变量,您正在更改函数内部的变量,而不是类变量,为了修复它,请将其更改为:

void setCompany(String name, String intro) {
this.name = name;
this.intro = intro;
}

另外,我建议您将变量命名为 _name_intro ,因为拥有 get 没有任何意义对于不是私有(private)的变量。

关于flutter - 在 flutter Dart 中创建和使用单例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61513345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com