Flutter加载Odoo HTTP图片失败,HTTPS图片正常加载求助
Flutter加载Odoo HTTP图片失败的解决办法
几个可行的排查方向:
1. 先检查URL是否拼对了
从报错信息里的URL能看到,field参数的值被截断成imag了,但你代码里写的是image_1920,这明显不对。先把完整URL打出来对比:
String fullImageUrl = "$theUrl/web/image?model=product.template&field=image_1920&id=${provider.allProducts[index].id}"; print(fullImageUrl);
确认控制台输出的URL和浏览器里能正常打开的URL完全一致,比如theUrl变量有没有多余字符、拼接时有没有漏掉参数部分。
2. 给Flutter开启HTTP访问权限
Flutter默认限制HTTP资源访问,只允许HTTPS,这大概率是核心问题:
- Android端:打开
android/app/src/main/AndroidManifest.xml,在<application>标签内添加android:usesCleartextTraffic="true":<application ... android:usesCleartextTraffic="true"> - iOS端:打开
ios/Runner/Info.plist,添加以下配置:<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
3. 确认Odoo接口的认证信息
浏览器能打开图片,可能是因为保存了Odoo的登录会话,但Flutter请求时没携带认证信息:
- 用浏览器开发者工具查看打开图片时的请求头,找到
Cookie中的session_id,然后在NetworkImage中添加请求头:NetworkImage( fullImageUrl, headers: { 'Cookie': 'session_id=你的实际会话ID', }, )
4. 清除Flutter图片缓存
之前的错误缓存可能导致一直加载失败,试试清除缓存:
imageCache.clear();
或者直接重启Flutter应用。
内容的提问来源于stack exchange,提问作者Andy
相关产品推荐
相关产品推荐

