我有这个代码:
class Dev {
static final config = const {
'endpoints': const {
'signIn': '/v1/auth/sign_in',
},
'apiBaseUrl': 'localhost:3000'
};
}
我试图访问配置变量中的 signIn 属性,当我执行 config['endpoints'] 时,它会正确访问该属性,但是当我尝试时
var signInEndpoint = config['endpoints']['signIn'];
它不起作用,当我尝试时一样
var endpoints = config['endpoints'];
var signInEndpoint = endpoints['signIn'];
如何正确访问变量中的登录属性?,提前感谢。
那是因为endPoints
值是一个Object
而不是dynamic
,试试这个:
var signInEndpoint = (Dev.config['endpoints'] as dynamic)['signIn'];
你尝试过两种方法@Juan知道,
var signInEndpoint = config['endpoints']['signIn'];
可以根据@diegoveloper的建议修复
var endpoints = config['endpoints']; var signInEndpoint = endpoints['signIn'];
可以像
Map endpoints = config['endpoints']; //Map<String, String> will be much better var signInEndpoint = endpoints['signIn'];
附加信息:
我不喜欢dynamic
类型,因为它只会创建运行时错误(动态/对象没有编译时错误(。
在您的情况下Dev.config
是Map<String, Object>
.对象可以强制转换为任何内容,这将创建运行时错误。
所以我稍微改变了Dev
类。请看一看
class Dev {
static final Map<String, Map<String, String>> config = const {
'endpoints': const {
'signIn': '/v1/auth/sign_in',
'apiBaseUrl': 'localhost:3000'
},
};
}
var signInEndpoint = Dev.config['endpoints']['signIn'] //will work
或者像这样
class Dev {
static final Map<String, String> endpoints = const {
'signIn': '/v1/auth/sign_in',
};
static final Map<String, String> config = const {
'baseUrl': 'localhost:3000',
'other': 'others'
};
}
var signInEndpoint = Dev.endpoints['signIn']