我正在尝试将一些图像加载到gridview中。每个GridTile都包含一个带有使用NetworkImage装饰的容器。我正在使用的所有图像都存储在Google驱动器中,问题是由于某种原因,抖动不喜欢Google驱动器网址。我尝试了以下网址:
以上所有方法均无效。它将引发以下错误:
抛出了以下_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),
),
),
),
),
答案 0 :(得分:3)
以下是步骤:
之后,单击Copy link
,然后将其粘贴到某处
应该是类似https://drive.google.com/file/d/1VdjEgb0aZl9IZa2jOzGU5_SNbmlmeiCj/view?usp=sharing
的格式
https://drive.google.com/file/d/
/ view?usp = sharing
复制 1VdjEgb0aZl9IZa2jOzGU5_SNbmlmeiCj
https://drive.google.com/uc?export=view&id=1VdjEgb0aZl9IZa2jOzGU5_SNbmlmeiCj
NetworkImage()
或Image.network()
小部件中,然后完成操作答案 1 :(得分:0)
您必须像下面那样修改链接:
在https://drive.google.com/open?id=1PpUCg8U0YkedIPYmm2NtLXt00JsdBJt2
上进行链接共享时,由Google云端硬盘给出的链接现在用 uc?export = download&
替换Url中的打开?因此将与NetworkImage()小部件一起使用的网址为:https://drive.google.com/uc?export=download&id=1PpUCg8U0YkedIPYmm2NtLXt00JsdBJt2
答案 2 :(得分:0)
嗯,结果是问题中提到的所有选项都起作用。无需更改。问题在于图像是私有的,因此无法获取它们。为了获取图像,我必须实现Google Sign In。
用户登录后,我只需获取访问令牌并将其放入NetworkImage类的标题中,如下所示:
NetworkImage(imgUrl, headers: {"Authorization": "Bearer ${accessToken}"})
之后,我能够使用任何url来获取图像。