Предотвратить Image.network от кодирования URL изображения - PullRequest
0 голосов
/ 10 апреля 2020

Я пытаюсь отобразить несколько изображений в виде списка. Итак, я передаю их в image.network (). Когда я запускаю приложение, я получаю исключение:

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

Похоже, что к URL добавляется% 0D. Вкратце, 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]),
                      );
                    });
              }),
        ),
      ),
    );

Редактировать:

Данные присутствуют в главе изображений -

 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

1 Ответ

1 голос
/ 10 апреля 2020

% 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);
...