трепет ListView KeepAlive после некоторой прокрутки - PullRequest
0 голосов
/ 27 сентября 2018

Я хочу keepAlive мои виджеты, которые уже отображаются в ListView.Меня опробовали с addAutomaticKeepAlives:true свойствами, которые предоставляют ListView класс.

Вот мой пример кода, который я использовал.Та же проблема в SliverChildBuilderDelegate делегате, который обеспечивает SliverList.

ListView.builder(
    itemBuilder: (context,index){
      return Card(
        child: Container(
          child: Image.asset("images/${index+1}.jpg",fit: BoxFit.cover,),
          height: 250.0,
        ),
      );
    },
    addAutomaticKeepAlives: true,
    itemCount:40 ,
);

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Вы также можете попробовать просмотреть свойство cacheExtent в построителе списков.Установка этого значения на покрытие ваших предметов сохранит их все живыми.Спасибо Реми выше.Я понятия не имел, что нужно использовать keepAlive при использовании его в списке, которого раньше не было в флаттере ...

0 голосов
/ 27 сентября 2018

Чтобы automaticKeepAlive работал, каждый элемент, который необходимо сохранить в живых, должен отправить определенное уведомление.

Типичным способом запуска такого уведомления является использование AutomaticKeepAliveClientMixin

class Foo extends StatefulWidget {
  @override
  FooState createState() {
    return new FooState();
  }
}

class FooState extends State<Foo> with AutomaticKeepAliveClientMixin {
  @override
  Widget build(BuildContext context) {
    return Container(

    );
  }

  @override
  bool get wantKeepAlive => true;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...