Flutter Web集成Backendless发送邮件出现类型不匹配报错如何解决?
报错原因
该错误是Backendless Flutter SDK旧版本对Flutter Web端的类型适配不完善导致的:Dart 2.12及以上版本默认启用空安全后,未显式声明类型的回调参数会被自动推断为Object类型,而Backendless SDK内部期望接收的是参数为dynamic类型的回调函数,二者类型不匹配触发了该异常。
修复方案
- 方案1:给.then回调的参数显式声明为
dynamic类型,修改_sendMail代码如下:
Future<void> _sendMail() async { Backendless.messaging.sendTextEmail("Reminder", "Email text body", ["my_email@gmail.com"]).then((dynamic response) { print("Email has been sent"); }); }
- 方案2:改用
async/await写法,避开回调类型推断问题,同时可以主动捕获异常方便排查问题:
Future<void> _sendMail() async { try { await Backendless.messaging.sendTextEmail("Reminder", "Email text body", ["my_email@gmail.com"]); print("Email has been sent"); } catch (e) { print("邮件发送失败: $e"); } }
- 方案3:如果修改代码后仍报错,将
pubspec.yaml中的backendless_sdk依赖升级到最新稳定版,重新执行flutter pub get拉取依赖即可。
内容的提问来源于stack exchange,提问作者Stefano Trinca
相关产品推荐
相关产品推荐

