首页 > 解决方案 > PageView.builder 不断重新缓存静态图像

问题描述

我有一个音乐播放屏幕,在专辑封面上滑动会播放下一首曲目。我正在使用 PageView.builder 来填充曲目列表。

我启用了 checkerboardRasterCacheImages 标志并截屏了一个视频。这是链接:https ://streamable.com/1oi6h

问题是专辑图像不断被重新缓存,这会导致丢帧,从而导致低于 60 fps 的场景。

我尝试用 RepaintBoundary 小部件包装我的小部件,但它仍然重新缓存图像。还尝试去除背景模糊。

                      AspectRatio(
                        aspectRatio: 1.0 / 1.0,
                        child: Container(
                          width: media.size.width,
                          child: PageView.builder(
                              controller: _pageController,
                              onPageChanged: (int idx) {
                                if (idx < _pageController.page)
                                  prev();
                                else
                                  next();
                              },
                              itemCount: widget.playlist.length(),
                              itemBuilder: (context, index) {
                                return Padding(
                                  padding: media.padding.add(
                                      EdgeInsets.all(40)),
                                  child: DecoratedBox(
                                    decoration: new BoxDecoration(
                                        image: DecorationImage(
                                          image: widget.playlist
                                              .get(index)
                                              .albumArt,
                                          fit: BoxFit.fill,
                                        ),
                                        boxShadow: [
                                          new BoxShadow(
                                              color: Colors.black
                                                  .withOpacity(
                                                  0.5),
                                              offset: new Offset(2.0, 2.0),
                                              blurRadius: 5.0,
                                              spreadRadius: 5.0)
                                        ]
                                    ),
                                  ),
                                );
                              }),
                        ),
                      ),

我期待,因为它是一个静态图像,它不应该重新缓存每一帧。此外,这是我的第一个应用程序,也是第一次在这里发布,所以如果需要更多信息/代码,请不要犹豫,询问需要什么。谢谢。

标签: androidimagedartflutterflutter-layout

解决方案


推荐阅读