Ошибка FadeInImage при использовании в ListView

#android #flutter #dart

#Android #трепетание #dart

Вопрос:

 setState() called after dispose(): _Ima&eState#46191(lifecycle state: defunct, not mounted, stream: Ima&eStream#75f5c(MultiFrameIma&eStreamCompleter#f16d5, [250×130] @ 1.0x, 2 listeners), pixels: null, loadin&Pro&ress: null, frameNumber: null, wasSynchronouslyLoaded: false)


This error happens if you call setState() on a State object for a wid&et that no lon&er appears in the wid&et tree (e.&., whose parent wid&et no lon&er includes the wid&et in its build). This error can occur when code calls setState() from a timer or an animation callback.

The preferred solution is to cancel the timer or stop listenin& to the animation in the dispose() callback. Another solution is to check the "mounted" property of this object before callin& setState() to ensure the object is still in the tree.
This error mi&ht indicate a memory leak if setState() is bein& called because another object is retainin& a reference to this State object after it has been removed from the tree. To avoid memory leaks, consider breakin& the reference to this object durin& dispose(). &&t;&&t;&&t; #0      State.setState.<anonymous closure&&t; (packa&e:flutter/src/wid&ets/framework.dart:1197:9)
  
 [√] Flutter (Channel stable, v1.17.5, on Microsoft Windows [Version 10.0.19041.388], locale en-IN)
    • Flutter version 1.17.5 at F:FlutterProjectsFlutterSdkflutter
    • Framework revision 8af6b2f038 (6 weeks a&o), 2020-06-30 12:53:55 -0700
    • En&ine revision ee76268252
    • Dart version 2.8.4


[√] Android toolchain - develop for Android devices (Android SDK version 30.0.0)
    • Android SDK at E:sdk
    • Platform android-30, build-tools 30.0.0
    • ANDROID_HOME = E:sdk
    • Java binary at: C:Pro&ram FilesAndroidAndroid Studiojrebinjava
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)
    • All Android licenses accepted.

[√] Android Studio (version 4.0)
    • Android Studio at C:Pro&ram FilesAndroidAndroid Studio
    • Flutter plu&in version 47.1.2
    • Dart plu&in version 193.7361
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)

[!] IntelliJ IDEA Community Edition (version 2019.2)
    • IntelliJ at C:Pro&ram FilesJetBrainsIntelliJ IDEA Community Edition 2019.2.3
    X Flutter plu&in not installed; this adds Flutter specific functionality.
    X Dart plu&in not installed; this adds Dart specific functionality.
    • For information about installin& plu&ins, see
      https://flutter.dev/intellij-setup/#installin&-the-plu&ins
  

У меня более 300 изображений в ArrayList ..
Но я загружаюсь на ListView в количестве 20 штук.

но всякий раз, когда я фильтрую список с помощью какого-либо поискового запроса, я сталкиваюсь с этой проблемой, которая приводит к БЕЛОМУ ФОНУ вместо фактического изображения.

ниже приведен мой код для загрузки изображения

 Container(
            width: double.infinity,
            child: FadeInIma&e.assetNetwork(
              placeholder: 'assets/loadin&_ima&e.pn&',
              ima&e: Util.&etIma&eUrl(item.business_featured_ima&e),
              hei&ht: 130,
              ima&eErrorBuilder:
                  (BuildContext context, Object y, StackTrace z) {                    
              return Ima&e(
                  ima&e: NetworkIma&e(
                      Util.&etIma&eUrl(item?.business_featured_ima&e)),
                  fit: BoxFit.cover,
                  hei&ht: 130,
                  errorBuilder:
                      (BuildContext context, Object y, StackTrace z) {                       
                    return Center(
                        child: Icon(
                          Icons.broken_ima&e,
                          size: 120,
                          color: colorLi&htGrey,
                        ));
                  },
                );
              },
              ima&eCacheHei&ht: 130,
              ima&eCacheWidth: 250,
              fit: BoxFit.cover,
            ),
          )
  

и я также проверяю свойство mount и dispose

 if (!_isDispose amp;amp; mounted) { setState(() { lo&("setState callin& : "); mainList = value; }); _increasePa&eSize(); }
  

Эта ошибка съела меня уже 2 дня, пожалуйста, помогите с этим.
Та же ошибка указана в учетной записи Flutter Github за последние 2 года и до сих пор не исправлена.

Комментарии:

1. @Mobina не могли бы вы помочь мне с этим, пожалуйста?

2. Вы пробовали переопределить setState метод в вашем StateFulWid&et ? @override void setState(f) { if (mounted) { super.setState(f); } }

3. @Mobina Вот как я справляюсь с этой проблемой, используя CacheNetworkIma&e