Какая альтернатива RecyclerView во Flutter?

Какова альтернатива представлению Recycle во флаттере? Я пробовал использовать этот код, но как сделать анимацию с виджетом списка во флаттере.

Это действительно?

 ListView(
 children: <Widget>[
ListTile(
  leading: Icon(Icons.map),
  title: Text('Map'),
),
ListTile(
  leading: Icon(Icons.photo_album),
  title: Text('Album'),
),
ListTile(
  leading: Icon(Icons.phone),
  title: Text('Phone'),
  ),
 ],
);

person Community    schedule 20.06.2018    source источник
comment
RecyclerView по сути является расширенной версией ListView. Я бы предположил, что ListView во флаттере - это не то же самое, что RecyclerView, а обычный ListView   -  person Zoe    schedule 20.06.2018


Ответы (3)


Вы также можете использовать виджет с анимированным списком для анимации. Пример кода приведен по следующей ссылке.

Анимированный список

person MRizwan33    schedule 20.06.2018

ListView:

Обычно это следует использовать с небольшим количеством дочерних элементов, поскольку список также будет создавать невидимые элементы в списке, а большое количество элементов может сделать это неэффективным.

ListView.builder():

Элементы списка создаются лениво, то есть создается только определенное количество элементов списка, и когда пользователь прокручивает вперед, более ранние уничтожаются.

Дополнительная информация находится здесь.

person CaballeroF    schedule 13.11.2018

После flutter-for/android-devs

Рекомендуемый, эффективный и действенный способ построения списка использует ListView.Builder. Этот метод отлично подходит, когда у вас есть динамический список или список с очень большими объемами данных. По сути, это эквивалент RecyclerView на Android, который автоматически перерабатывает элементы списка:

@override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text("Sample App"),
        ),
        body: ListView.builder(
            itemCount: widgets.length,
            itemBuilder: (BuildContext context, int position) {
              return getRow(position);
            }));
  }

  Widget getRow(int i) {
    return GestureDetector(
      child: Padding(
          padding: EdgeInsets.all(10.0),
          child: Text("Row $i")),
      onTap: () {
        setState(() {
          widgets.add(getRow(widgets.length + 1));
          print('row $i');
        });
      },
    );
  }
person Durdu    schedule 28.08.2019