Исключение обнаружено службой ресурсов изображения, setState (), вызываемой после dispose (): _ImageState - PullRequest
2 голосов
/ 20 июня 2020

enter image description here

Эта ошибка возникает, если я переключаю страницу во время загрузки изображения. И это не вызывает перезагрузки, если я вернусь на страницу. Я не понимаю, разве весь смысл в использовании loadingBuilder, frameBuilder и errorBuilder, чтобы избежать такого сценария? Разве удаление / перезагрузка не должно выполняться таким образом автоматически? Правильно ли я использовал Image.network или сам мой подход неверен?

Я также пробовал назначить Image.network на Image _image в init состоянии, а затем пытался закрыть / удалить / размонтировать в методе dispose, но ни один из методов недоступен.

Image.network(
      widget.url,
      fit: BoxFit.contain,
      frameBuilder: (
          BuildContext context,
          Widget image,
          int frame,
          bool wasSynchronouslyLoaded,
          ) {
        return AnimatedOpacity(
          child: image,
          opacity: frame == null ? 0 : 1,
          duration: const Duration(seconds: 1),
          curve: Curves.easeIn,
        );
      },
      loadingBuilder: (
          BuildContext context,
          Widget image,
          ImageChunkEvent loadingProgress,
          ) {
        if (loadingProgress == null) return image;
        if (loadingProgress != null &&
            loadingProgress.cumulativeBytesLoaded <
                loadingProgress.expectedTotalBytes) {
          return Center(
            child: CircularProgressIndicator(),
          );
        } else if (loadingProgress.cumulativeBytesLoaded ==
            loadingProgress.expectedTotalBytes) {
          return image;
        }
        return image;
      },
      errorBuilder:
          (BuildContext context, Object exception, StackTrace stackTrace) {
        return Center(
          child: Text(
            '${exception.toString()}',
            textAlign: TextAlign.center,
            style: TextStyle(
              fontSize: 15,
            ),
          ),
        );
      },
    )
...