Flutter报错:参数类型'Object'无法分配给参数类型'String'如何解决
问题原因
Text组件仅接受String类型的参数,你编写的三元表达式两侧返回值类型不统一:空判断成立时返回字符串'No date chosen!',不成立时返回的是DateFormat类的实例,Dart会将整个三元表达式的返回值推断为两类的公共父类Object,和Text要求的String类型不匹配,因此抛出类型错误。DateFormat的用法错误:DateFormat.yMd()是日期格式化类的构造方法,入参为可选的地区标识字符串,不是待格式化的DateTime对象。你需要先构造格式化实例,再调用实例的format()方法传入DateTime对象,才能得到格式化后的日期字符串。
修复方案
将Text组件的入参逻辑修改为如下代码即可:
Text(_selectedDate == null ? 'No date chosen!' : DateFormat.yMd().format(_selectedDate!)),
由于你已经提前通过_selectedDate == null完成了非空判断,因此这里使用!非空断言不会触发空安全异常。
内容的提问来源于stack exchange,提问作者Cláudio Vitor Dantas
相关产品推荐
相关产品推荐

