PageView.builder постоянно кэширует статические изображения - PullRequest
0 голосов
/ 19 января 2019

У меня есть экран воспроизведения музыки, где пролистывание обложки альбома воспроизводит следующий трек. Я использую PageView.builder для заполнения списка треков.

Я включил флаг checkerboardRasterCacheImages и снял скриншот с видео. Вот ссылка: https://streamable.com/1oi6h

Проблема в том, что изображение альбома постоянно кэшируется, что приводит к пропаданию кадров, что приводит к сценам со скоростью менее 60 кадров в секунду.

Я попытался обернуть мой виджет виджетом 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)
                                        ]
                                    ),
                                  ),
                                );
                              }),
                        ),
                      ),

Я ожидаю, так как это статическое изображение, оно не должно повторно кэшировать каждый кадр. Кроме того, это мое первое приложение и первая публикация здесь, поэтому, если вам нужна дополнительная информация / код, пожалуйста, не стесняйтесь спрашивать, что нужно. Спасибо.

...