Слушатель ScrollController не срабатывает при извлечении ListView в Android - PullRequest
0 голосов
/ 09 мая 2020

У меня есть ListView и календарь над ним. Я планирую расходовать Календарь на основе состояния прокрутки ListView. Мне удалось справиться со всем этим, кроме одной проблемы с Android.

ScrollController _scrollController;

@override
  void initState() {
    super.initState();
    _scrollController = ScrollController();
    _scrollController.addListener(_handleScroll);
  }

@override
  void dispose() {
    _scrollController.removeListener(_handleScroll);
    _scrollController.dispose();
    super.dispose();
  }

void _handleScroll() {
    // Handle Scrolling here.
}

@override
Widget build(BuildContext context) {
  return SafeArea(
    child: child: Column(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: <Widget>[
        Calendar(),
        Expanded(
          child: ListView(
            controller: _scrollController,
            padding: EdgeInsets.only(bottom: 10),
            children: <Widget>[
              ListViewItem(),
              ListViewItem(),
              ...
            ],
          ),
        ),
      ],
    ),
  );
}

Изображение ниже иллюстрирует проблему!

enter image description here

Как видите, вытягивание ListView, когда пользователь еще не прокрутил вниз, похоже, вообще не запускает _handleScroll. Думаю это по дизайну на Android. Мы будем очень признательны за любые решения или обходные пути.

1 Ответ

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

Вы должны использовать CustomScrollView с Slivers, как описано здесь: https://flutter.dev/docs/cookbook/lists/floating-app-bar

...