flutter上傳圖片時(shí)候遇到Converting object to an encodable object failed: Instance of 'FormData'

先拋截圖如下:

問題圖

首先出現(xiàn)上邊問題是FormData轉(zhuǎn)換數(shù)據(jù)時(shí)候出錯(cuò)了。

網(wǎng)友和dio官方github上給的解決辦法是:

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

MediaType是http_parser里面的一個(gè)類型,可以直接搜索引用,

如下:

MediaType作為 contentType參數(shù)

到這里基本上解決了百分之99的問題了,我感覺我就是那百分之一,我的問題如下:

我的問題代碼

看出區(qū)別了么??jī)蓚€(gè)相同的名稱,就是構(gòu)造不一樣,我想用上邊的正確的方法,但是MultipartFile()初始化方法contentType需要的是一個(gè)字符串, MediaType無法使用。我一開始以為版本不一樣導(dǎo)致MultipartFile和FormData的初始化方有區(qū)別,誰知道是GetX里面的兩個(gè)同名類,如下:

GetX同名類

因?yàn)閳D片處理和上傳是在GetController的子類中進(jìn)行,編輯器自然直接就使用GetX里面的兩個(gè)同名類了,結(jié)果在上傳時(shí)候,一直報(bào)錯(cuò)。

跟后臺(tái)一起排查修改headers上傳數(shù)據(jù)類型等各種嘗試還是不成功,最后發(fā)現(xiàn)是GetX同名的類FormData和MultipartFile導(dǎo)致的,上傳圖片需要引用的是DIO的FormData和MultipartFile。注意構(gòu)造函數(shù)也不一樣。

解決方案:

在當(dāng)前類中給GetX添加別名,或者給DIO添加別名,二選一解決使用相同類名的類導(dǎo)致的錯(cuò)誤問題。

我選擇給GetX添加別名。


GetX添加別名

到此問題解決,一定要注意相同的情況,剛剛?cè)炙阉髁艘幌拢念愡€挺多的, 使用的時(shí)候有問題先檢查一下用的是哪個(gè)庫的類導(dǎo)致的。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容