Firebase нумерация страниц в флаттер - PullRequest
0 голосов
/ 11 января 2020

Я использую Firebase Firestore для приложения, над которым я работаю. По сути, у меня есть Коллекция ('Chat') , которая может содержать тысячи документов Мне нужен способ реализовать нумерацию страниц базы , чтобы ограничить объем извлекаемого документа из бэкэнда.

im, используя streamBuilder и передавая Запрос ниже в виде потока:

stream: widget.messageDocRef
      .collection('Chat').orderBy('timestamp', descending: true)
      .limit(80)
      .snapshots();

У меня есть ListView и scrollController для него, код:

ListView(
        physics: const AlwaysScrollableScrollPhysics(),
        reverse: true,
        controller: _scrollController,
        padding: EdgeInsets.symmetric(vertical: 20.0, horizontal: 10.0),
        children: messagesBubble,
      ),

Я не смог найти хорошую документацию о том, как реализовать его в флаттере.

Спасибо!

1 Ответ

1 голос
/ 11 января 2020

Используя ScrollController, затем внутри initState выполните следующее:

@override
  void initState() {
    this.getdbData();
    super.initState();
    _scrollController.addListener(() {
      if (_scrollController.position.pixels ==
          _scrollController.position.maxScrollExtent) {
        getdbData();
      }
    });
  }

Поэтому сначала добавьте слушатель, который зарегистрирует замыкание, которое будет вызываться при изменении объекта. Затем убедитесь, что position.pixel равно position.maxScrollExtent, и вызовите метод, если все вышеперечисленное выполнено.

Также не забудьте утилизировать контроллер:

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

https://api.flutter.dev/flutter/widgets/ScrollPosition-class.html

https://api.flutter.dev/flutter/widgets/ScrollController-class.html

getdbData() - это метод, который будет извлекать данные из базы данных, которые вы назначите свойству stream

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...