Flutter使用translator插件无法将Translation类型赋值给String类型
错误原因
你引入的translator插件中,translate()方法的返回值是Translation类型对象,而非原生String类型。你定义的translatedPhrase是字符串类型变量,直接把Translation实例赋值给它就会触发类型不匹配报错。
修复方法
Translation类型对象通过.text属性存储翻译完成的纯字符串结果,只需要修改赋值语句,读取该属性赋值即可,同时可以移除冗余的外层setState调用,减少不必要的组件重绘。
修改后的翻译按钮点击逻辑代码如下:
MaterialButton( child: const Text("Translate"), color: Colors.white, onPressed: () { translator.translate(textController.text, from: "en", to: "es").then((t) { setState(() { // 读取Translation对象的text属性,获取字符串类型的翻译结果 translatedPhrase = t.text; }); }); }, ),
效果验证
修改后重新运行代码即可正常使用功能:
- 点击翻译按钮无类型报错,可正常发起翻译请求
- 翻译结果可正常显示在下方灰色区域的文本组件中
- 清空、复制按钮可正常调用
translatedPhrase变量,无类型异常
内容的提问来源于stack exchange,提问作者Nate Givens
相关产品推荐
相关产品推荐

