【问题标题】:How to Pre-cache Images From list in Flutter如何在 Flutter 中预缓存列表中的图像
【发布时间】:2022-10-23 16:43:41
【问题描述】:

我正在尝试使用缓存网络图像预缓存我存储在几个列表中的所有图像。

我希望应用程序在应用程序启动时缓存图像。

我在下面列出了我的项目清单。有什么帮助吗? List image

【问题讨论】:

    标签: flutter image caching


    【解决方案1】:

    您可以使用precacheImage 功能

    【讨论】:

      【解决方案2】:

      我最终使用了这样的东西

        @override
        void initState() {
          findImageToCache();
          loading = true;
          super.initState();
        }
      
        void findImageToCache() {
          Timer(const Duration(microseconds: 1), () async {
            final manifestJson =
                await DefaultAssetBundle.of(context).loadString('AssetManifest.json');
            List<String> imagePaths = json
                .decode(manifestJson)
                .keys
                .where((String key) => key.startsWith('assets/images'))
                .toList();
      
            for (int i = 0; i < imagePaths.length; i++) {
              String path = imagePaths[i];
              String filename = (path.split('/').last);
              Image image = Image.asset(path);
              globals.imageCache[filename] = image;
            }
            Timer.periodic(const Duration(milliseconds: 1), precache);
          });
        }
      
        void precache(Timer t) {
          List<String> keys = globals.imageCache.keys.toList();
          for (int i = 0; i < keys.length; i++) {
            Image image = globals.imageCache[keys[i]]!;
            precacheImage(image.image, context);
          }
          loading = false;
          t.cancel();
          setState(() {});
        }
      
        @override
        void didChangeDependencies() {
          super.didChangeDependencies();
        }
        @override
        Widget build(BuildContext context) {
          if (loading) {
            return LoadingWidget();
          }
          // the rest
        }
      

      要调用它,我使用

      Image(image: globals.imageCache["familypicitem.png"]!.image, height: ySize,)
      

      我首先在 assets/images 中找到所有图像 然后我将它加载到缓存

      【讨论】:

        猜你喜欢
        • 2020-10-14
        • 2021-05-21
        • 2020-09-13
        • 1970-01-01
        • 1970-01-01
        • 2021-05-17
        • 1970-01-01
        • 2012-05-22
        • 2018-11-29
        相关资源
        最近更新 更多