我有这个代码:
class Dev {
static final config = const {
'endpoints': const {
'signIn': '/v1/auth/sign_in',
},
'apiBaseUrl': 'localhost:3000'
};
}
我试图访问配置变量中的signIn属性,当我执行config ['端点']时,它正确访问属性,但当我尝试
var signInEndpoint = config['endpoints']['signIn'];
当我尝试时,它不起作用
var endpoints = config['endpoints'];
var signInEndpoint = endpoints['signIn'];
我怎样才能正确访问变量中的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']