Flutter - переупорядочиваемый список с Listview, вложенным в экспантиль - PullRequest
0 голосов
/ 01 мая 2020

Я пытаюсь создать пример с переупорядочиваемым списком, у которого плитка расширения является дочерней. После развертывания тайла пользователю будет предоставлен просмотр списка следующим образом: Расширенная плитка со списком, вложенным в

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

ScrollController attached to multiple scroll views.
'package:flutter/src/widgets/scroll_controller.dart':
Failed assertion: line 111 pos 12: '_positions.length == 1'

Не складывается listview

Как мне go исправить это? Кажется, проблема связана с тем, что контроллер прокрутки вложен в другой контроллер прокрутки. Есть ли способ заставить всю плитку расширения разрушаться при длительном нажатии на нее? Заранее спасибо

List<int> a = [1, 2, 3];

  class _BlankPageState extends State<BlankPage> {
@override
Widget build(BuildContext context) {
return SafeArea(
    child: Scaffold(
      body: Padding(
        padding: EdgeInsets.all(10),
        child: ReorderableListView(
            onReorder: (oldIndex, newIndex) {
              print('now');
              setState(
                () {
                  if (newIndex > oldIndex) {
                    newIndex -= 1;
                  }
                  final int item = a.removeAt(oldIndex);
                  a.insert(newIndex, item);
                },
              );
            },
            children: a.map((index) {
              return ExpansionTile(
                backgroundColor: Colors.grey,
                key: Key('$index'),
                title: Text('Tile' + '${index.toString()}'),
                children: <Widget>[
                  Container(
                    height: 100,
                    child: ListView(children: <Widget>[
                      Text('This is a test' + '$index'),
                      Text('This is a test' + '$index'),
                    ]),
                  )
                ],
              );
            }).toList()),
      ),
    ),
  );

1 Ответ

0 голосов
/ 11 мая 2020

Мне удалось решить вышеуказанную проблему с новым выпуском Flutter 1.17, в котором было представлено

Журнал изменений для Flutter 1.17.0

49148 Открытое необязательное свойство scrollController в ReorderableListView

При добавлении контроллера прокрутки в моем reorderablelistview я больше не сталкиваюсь с ошибкой нескольких представлений прокрутки, описанной выше, когда представление списка вложено в виджет reorderablelistview

 ReorderableListView(
          scrollController: ScrollController(initialScrollOffset: 50),
...