flutter上传图片时候遇到Converting object to an encodable object failed: Instance of 'FormData'

先抛截图如下:

问题图

首先出现上边问题是FormData转换数据时候出错了。

网友和dio官方github上给的解决办法是:

MultipartFile类添加 contentType: MediaType("image", "png"),

MediaType是http_parser里面的一个类型,可以直接搜索引用,

如下:

MediaType作为 contentType参数

到这里基本上解决了百分之99的问题了,我感觉我就是那百分之一,我的问题如下:

我的问题代码

看出区别了么?两个相同的名称,就是构造不一样,我想用上边的正确的方法,但是MultipartFile()初始化方法contentType需要的是一个字符串, MediaType无法使用。我一开始以为版本不一样导致MultipartFile和FormData的初始化方有区别,谁知道是GetX里面的两个同名类,如下:

GetX同名类

因为图片处理和上传是在GetController的子类中进行,编辑器自然直接就使用GetX里面的两个同名类了,结果在上传时候,一直报错。

跟后台一起排查修改headers上传数据类型等各种尝试还是不成功,最后发现是GetX同名的类FormData和MultipartFile导致的,上传图片需要引用的是DIO的FormData和MultipartFile。注意构造函数也不一样。

解决方案:

在当前类中给GetX添加别名,或者给DIO添加别名,二选一解决使用相同类名的类导致的错误问题。

我选择给GetX添加别名。


GetX添加别名

到此问题解决,一定要注意相同的情况,刚刚全局搜索了一下,同名的类还挺多的, 使用的时候有问题先检查一下用的是哪个库的类导致的。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容