Flutter报错The argument type 'String?' can't be assigned to 'String'如何解决
报错原因
这个报错是Dart空安全特性导致的:你代码里的word.text是可空类型String?,而字符串拼接要求传入非空的String类型参数,两者类型不匹配因此触发编译错误。
解决方案
你可以选择以下任意一种方式修改代码:
- 方案1:如果你能确定业务场景下
word.text永远不会为空,可以使用空断言运算符!强转为非空类型:
把拼接行修改为:text = text + (word.text!) + ' '; - 方案2:更稳妥的空值兼容写法,使用空值合并运算符
??给空值场景设置兜底默认值(为空时用空字符串代替),避免运行时崩溃:
把拼接行修改为:text = text + (word.text ?? '') + ' ';
修改后完整代码
static extractText(VisionText visionText) { String text = ''; for (TextBlock block in visionText.blocks) { for (TextLine line in block.lines) { for (TextElement word in line.elements) { // 这里可替换为上述任意一种方案 text = text + (word.text ?? '') + ' '; } text = text + '\n'; } } return text; }
内容的提问来源于stack exchange,提问作者Mayank Shekhar
相关产品推荐
相关产品推荐

