Flutter报错:String类型无法作为Null类型value赋值问题咨询
问题解答
能否实现需求?
可以实现,让host字段同时支持String或Null的需求完全可行。
为什么当前代码不被允许?
Dart是强类型语言,会根据变量初始值自动推断类型。你初始化_json['configuracao']['host']时赋值为null,Dart会自动推断这个字段的类型为**Null**(只能存储null),而非可空的String?(支持String或null)。后续尝试给它赋值String类型的Configuracao().host时,就会触发类型不匹配的错误。
解决方法
方法1:显式指定内部Map类型
初始化configuracao时,显式声明它是键为String、值为String?的Map,让host字段允许存储String或null:
final Map<String, dynamic> _json = { 'login': { 'cnpj': '', 'usuario': '', 'senha': '', }, 'configuracao': <String, String?>{ 'host': null, }, };
方法2:赋值时强制类型转换
若不想修改初始化代码,可在赋值时通过类型转换确保兼容性(推荐方法1,代码更清晰):
(_json['configuracao'] as Map<String, String?>)['host'] = Configuracao().host;
内容的提问来源于stack exchange,提问作者Gustavo Schwarz
相关产品推荐
相关产品推荐

