Проверьте, что изображение загружено в виджет Image.network во флаттере - PullRequest
0 голосов
/ 08 июня 2018

Я новичок во Флаттере.Я пытаюсь загрузить сетевое изображение, используя image.network виджет.все работает нормально, но иногда требуется время для загрузки. Я добавил прослушиватель крана image.network во время касания. Мне нужно проверить, загружено ли изображение полностью или нет, в зависимости от результата, который мне нужно перенаправить на страницу.как проверить изображение загружено или нет?

Код:

new Image.network('http://via.placeholder.com/350x150')

Любая помощь будет оценена, заранее спасибо

Ответы [ 2 ]

0 голосов
/ 11 июня 2019

для тех, кому не нужно кэшировать изображение, можно использовать meet_network_image пакет,

Базовое использование пакета:

                MeetNetworkImage(
                  imageUrl:
                      "https://random.dog/3f62f2c1-e0cb-4077-8cd9-1ca76bfe98d5.jpg",
                  loadingBuilder: (context) => Center(
                        child: CircularProgressIndicator(),
                      ),
                  errorBuilder: (context, e) => Center(
                        child: Text('Error appear!'),
                      ),
                )

Кроме того, вы можете сделатьчто при использовании FutureBuilder,

Нам нужно получить данные с помощью http-вызова таким образом, нам нужно импортировать http перед импортом, вам также нужно добавить pubspec.yaml и выполнить команду flutter packages get

import 'package:http/http.dart' as http;
  FutureBuilder(
    // Paste your image URL inside the htt.get method as a parameter
    future: http.get(
        "https://random.dog/3f62f2c1-e0cb-4077-8cd9-1ca76bfe98d5.jpg"),
    builder: (BuildContext context, AsyncSnapshot<http.Response> snapshot) {
      switch (snapshot.connectionState) {
        case ConnectionState.none:
          return Text('Press button to start.');
        case ConnectionState.active:
        case ConnectionState.waiting:
          return CircularProgressIndicator();
        case ConnectionState.done:
          if (snapshot.hasError)
            return Text('Error: ${snapshot.error}');
          // when we get the data from the http call, we give the bodyBytes to Image.memory for showing the image
          return Image.memory(snapshot.data.bodyBytes);
      }
      return null; // unreachable
    },
  );
0 голосов
/ 08 июня 2018

для такого рода проблем хорошо использовать cached_network_image , чтобы вы могли предоставить заполнитель при загрузке изображения и виджет ошибки в случае, если ресурс не загружается

String url = "http://via.placeholder.com/350x150";
CachedNetworkImage(
       imageUrl: url,
       placeholder: (context,url) => CircularProgressIndicator(),
       errorWidget: (context,url,error) => new Icon(Icons.error),
     ),
...