gpt4 book ai didi

dart - 我可以从 json 字符串创建一个 const 对象吗?

转载 作者:行者123 更新时间:2023-12-03 04:40:41 24 4
gpt4 key购买 nike

我想从固定的 JSON 字符串创建一个 const 对象。
此 json 字符串来自 --dart-define 参数。
我正在使用 const _APP_CONF = String.fromEnvironment('APP_CONF', defaultValue: '{}');我已经尝试了下面的代码,但它不起作用。编译器提示第二个构造函数:

class AuthnProvider {
final String id;
final String clientId;
final List<String> scopes;

const AuthnProvider(
{this.id,
this.clientId,
this.scopes});

const AuthnProvider.fromJson(final Map<String, dynamic> json)
: id = json['id'],
clientId = json['clientId'],
scopes = json['scopes'].cast<String>();
json 参数来自 json.decode()方法。
我还尝试从 json 映射创建 const 和 final var 并使用第一个构造函数,但编译器也会出错。

最佳答案

这是意料之中的。 const创建一个编译时常量。 Dart 在编译期间不执行代码,因此无法创建 const来自 Map .这就是原因const构造函数不能有一个主体,为什么没有其他方法可以解决这个限制。
您没有在问题中提及这样做的原因,但如果是为了性能,差异将可以忽略不计。如果是为了不变性,我们看到的所有字段都已经是final了, 所以制作对象 const没什么区别。

关于dart - 我可以从 json 字符串创建一个 const 对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63314952/

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