Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
369 of 1024 menu
◀ ▶

Виджет ReorderableListView

Виджет ReorderableListView принимает children с ключами или builder. Колбэк onReorder сообщает новые индексы.

Синтаксис

ReorderableListView( children: [ListTile(key: ValueKey(0), title: Text('abcde'))], onReorder: (old, neu) {}, )

Параметры

Параметр Описание
children Пункты списка, у каждого нужен Key.
onReorder Вызывается после перестановки. Обязательный параметр.

Методы

Метод Описание
builder ReorderableListView. Давайте разберём вызов на примерах.

Пример

Давайте переставим два пункта:

import 'package:flutter/material.dart'; class ReorderDemo extends StatefulWidget { @override State<ReorderDemo> createState() => _ReorderDemoState(); } class _ReorderDemoState extends State<ReorderDemo> { final items = ['abcde', '12345']; @override Widget build(BuildContext context) { return ReorderableListView( onReorder: (oldIndex, newIndex) { setState(() { final item = items.removeAt(oldIndex); items.insert(newIndex, item); }); }, children: [ for (final t in items) ListTile(key: ValueKey(t), title: Text(t)), ], ); } } void main() { runApp(MaterialApp(home: Scaffold(body: ReorderDemo()))); }

На экране два пункта, их можно перетаскивать за длинное нажатие.

Пример

Давайте добавим третий пункт:

import 'package:flutter/material.dart'; void main() { runApp( MaterialApp( home: Scaffold( body: ReorderableListView( onReorder: (a, b) {}, children: [ ListTile(key: ValueKey(1), title: Text('abcde')), ListTile(key: ValueKey(2), title: Text('12345')), ListTile(key: ValueKey(3), title: Text('abcde')), ], ), ), ), ); }

На экране три строки с разными ключами.

Смотрите также

  • виджет RefreshIndicator,
    который часто ставят рядом в прокручиваемых экранах
  • метод builder,
    который дополняет работу с прокруткой
  • виджет Scrollbar,
    который помогает собрать сложный список
  • виджет ReorderableDragStartListener,
    который задаёт поведение или данные прокрутки
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить