我正在尝试将一些图像加载到 gridview 中。每个 GridTile 都包含一个带有使用 NetworkImage 装饰的容器。我使用的所有图像都存储在 google drive 中,问题是由于某种原因,flutter 不喜欢 Google Drive url。我试过以下网址:
以上都不起作用。它引发以下错误:
在解析图像编解码器时引发了以下 _Exception:异常:无法实例化图像编解码器。
我注意到所有这些 url 最终都重定向到另一个链接,可能是图像被缓存的地方。这就是不工作的原因吗?如果是这样,我如何强制它遵循重定向?
这是相关的一段代码:
String imgUrl = "https://drive.google.com/file/d/$fileId/view";
GridTile(
child: InkWell(
onTap: () {
openDriveImage(fileId);
},
child: Container(
margin: EdgeInsets.all(5.0),
decoration: BoxDecoration(
border: Border.all(
color: Colors.black38,
),
shape: BoxShape.rectangle,
image: DecorationImage(
fit: BoxFit.fitWidth,
image: NetworkImage(imgUrl),
),
),
),
),
Run Code Online (Sandbox Code Playgroud)
Pet*_*uyo 13
以下是步骤:
之后,单击Copy link然后将其粘贴到某处
它应该是这样https://drive.google.com/file/d/1VdjEgb0aZl9IZa2jOzGU5_SNbmlmeiCj/view?usp=sharing的格式
https://drive.google.com/file/d/ <FILE_ID> /view?usp=sharing
复制<FILE_ID>在我的情况下是1VdjEgb0aZl9IZa2jOzGU5_SNbmlmeiCj
https://drive.google.com/uc?export=view&id=1VdjEgb0aZl9IZa2jOzGU5_SNbmlmeiCj
NetworkImage()或Image.network()小部件中,您就完成了嗯,结果是问题中提到的所有选项都有效。没有什么需要改变的。问题是图像是私有的,因此无法获取它们。为了获取图像,我必须实现Google Sign In。
用户登录后,我只需获取访问令牌并将其放入 NetworkImage 类的标头中,如下所示:
NetworkImage(imgUrl, headers: {"Authorization": "Bearer ${accessToken}"})
Run Code Online (Sandbox Code Playgroud)
之后,我就可以使用任何 url 获取图像。
| 归档时间: |
|
| 查看次数: |
2721 次 |
| 最近记录: |