【问题标题】:Prevent Image.network from encoding image url防止 Image.network 编码图像 url
【发布时间】:2020-04-10 15:20:55
【问题描述】:

我正在尝试在列表视图中显示多个图像。所以,我将它们传递给 image.network()。当我运行应用程序时,我得到了异常:

HTTP request failed, statusCode: 404,
I/flutter ( 4820): https://cdn.mangacruzers.com/file/AnimeRleases/MHA_265_009.jpg%0D

似乎 '%0D' 附加到了 url。简而言之,当 url 被传递给 Image.network() 时,它正在被编码。有没有办法防止这种编码?我已经检查了列表,url 在传递给 Image.network() 之前没有编码。

代码:

Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: SingleChildScrollView(
          child: FutureBuilder(
              future: doc,
              builder: (BuildContext context, snapshot) {
                if (!snapshot.hasData)
                  return Center(child: CircularProgressIndicator());
                return ListView.builder(
                  primary: false,
                  shrinkWrap: true,
                    itemCount: chapter.images.length,
                    itemBuilder: (BuildContext context, int index) {
                      return Padding(
                        padding: const EdgeInsets.only(bottom: 10),
                        child: Image.network(chapter.images[index]),
                      );
                    });
              }),
        ),
      ),
    );

编辑:

chapter.images 中的数据 -

 https://cdn.mangacruzers.com/file/AnimeRleases/MHA_265_001.jpg
I/flutter ( 4820): https://cdn.mangacruzers.com/file/AnimeRleases/MHA_265_002.jpg
I/flutter ( 4820): https://cdn.mangacruzers.com/file/AnimeRleases/MHA_265_003.jpg
I/flutter ( 4820): https://cdn.mangacruzers.com/file/AnimeRleases/MHA_265_4-5.png
I/flutter ( 4820): https://cdn.mangacruzers.com/file/AnimeRleases/MHA_265_6-7.png
I/flutter ( 4820): https://cdn.mangacruzers.com/file/AnimeRleases/MHA_265_008.jpg
I/flutter ( 4820): https://cdn.mangacruzers.com/file/AnimeRleases/MHA_265_009.jpg
I/flutter ( 4820): https://cdn.mangacruzers.com/file/AnimeRleases/MHA_265_10-11.png
I/flutter ( 4820): https://cdn.mangacruzers.com/file/AnimeRleases/MHA_265_012.jpg
I/flutter ( 4820): https://cdn.mangacruzers.com/file/AnimeRleases/MHA_265_013.jpg
I/flutter ( 4820): https://cdn.mangacruzers.com/file/AnimeRleases/MHA_265_014.jpg
I/flutter ( 4820): https://cdn.mangacruzers.com/file/AnimeRleases/MHA_265_015.jpg
I/flutter ( 4820): https://cdn.mangacruzers.com/file/AnimeRleases/MHA_265_016.jpg
I/flutter ( 4820): https://cdn.mangacruzers.com/file/AnimeRleases/MHA_265_017.jpg
I/flutter ( 4820): https://cdn.mangacruzers.com/file/AnimeRleases/MHA_265_18-19.png

【问题讨论】:

  • 您传递的 URL 有问题,而不是 Image.network() %0D 是换行符。检查您的网址。
  • %0D 不在我通过的列表中。实际网址是除 %0D 之外的所有内容
  • 你能把数据发到chapter.image吗?我认为网址中可能有特殊字符。
  • 根据要求,我已经添加了chapter.images中的数据
  • @U.Watt,请分享chapter.images变量的截图。为变量分配或声明 URL 的代码行。您已共享记录的数据;分享实际的代码行。

标签: image flutter encode


【解决方案1】:

%0D 是回车的 URL 编码值。您可以对您的 url 进行编码并打印它以查看它是否包含任何 CR。

var encoded = Uri.encodeFull(chapter.images[index]);
print(encoded);

如果它有任何 CR,那么你应该在分配给 Image.network() 之前替换它。

var urlWithoutCR = chapter.images[index].replaceAll(RegExp(r'\r'), "");
Image.network(urlWithoutCR);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-07
    • 1970-01-01
    • 1970-01-01
    • 2020-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多