Не удается сохранить положение прокрутки в ListView при добавлении нового элемента сверху

#flutter #flutter-layout

Вопрос:

Когда я нажимаю кнопку FloatingAction, добавьте новые 30 элементов поверх ListView

Затем ListView автоматически прокручивается до элемента 61

Я хочу, чтобы он оставался в пункте 30

-> Не использовать обратный

Исходный код https://gist.github.com/VNAPNIC/a0c279ab81ff7f7c7120b5c4207b5fe4

Ответ №1:

Это не удерживает прокрутку в нужном положении, но мы можем использовать controller.jumpTo on increment, чтобы сохранить 30 ее в нужном положении.

 
  void _incrementCounter() {
    final startIndex = listItem.length - 1;
    final endIndex = listItem.length   30;
    for (int i = startIndex; i <= endIndex; i  ) {
      listItem.insert(0, 'Message -------> $i');
    }

    // 50 commig from container  padding
    const itemHeightWithPadding = 50   16;

    setState(() {
      // replace 30 with itemLength and set your logic,
      controller.jumpTo(
        (itemHeightWithPadding * 30)   (16 * 8),
      );
    });
  }
 

Комментарии:

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

2. в этом случае вы используете scroll_to_index

3. Я не хочу использовать Jump, потому что он не подходит для эффектов пользовательского интерфейса