как добавить данные в потоки в флаттер дартс - PullRequest
0 голосов
/ 21 февраля 2019

Здесь я использую поток List<DocumentSnapshot> Я мало что знаю о своем потоке.Я думал, что мы можем использовать потоки для разбивки на страницы во Flutter, так как он загружается с изменением данных.Я думал, что все пошло так, как ожидалось, пока отладка, когда я отлаживаю это, показывает исключение, говорит, что поток был вызван на нуль, и я не знаю, где это пошло не так, также не знаю, код правильный, но код для, когдапользователь прокручивает до конца новый список захватывается и добавляется в поток.В соответствии с моей ошибкой я поместил состояние инициализации, чтобы гарантировать, что поток не равен нулю, и это дает мне ошибку

class _Articles extends StatefulWidget {
@override
_ArticlesState createState() {
return new _ArticlesState();
}
}

class _ArticlesState extends State<_Articles> {
final firestore = Firestore.instance;
ScrollController controller;
StreamController<List<DocumentSnapshot>> list;
String s;

@override
void initState() {
controller = ScrollController()..addListener(_listen);
addlist(); // this is to enure the stream should not be null
super.initState();
  }

  @override
  void dispose() {
    list.close();
    controller.removeListener(_listen);
    super.dispose();
  }

  _listen() { // to check user end of the list or not
    if (controller.offset >= controller.position.maxScrollExtent &&
        !controller.position.outOfRange) {
    listadd(); // if end of the list add to stream
            }
          }

          @override
          Widget build(BuildContext context) {
            var height = MediaQuery.of(context).size.height;
            var width = MediaQuery.of(context).size.width;


            return Container(
              padding: EdgeInsets.only(top: 10, bottom: 10),
              color: Colors.grey[100],
              child: StreamBuilder<List<DocumentSnapshot>>(
                  stream: list.stream,
                  builder: (context, snapshot) {
                    return //some widget like listview builder with data in snapshot
                  }),
            );
          }

          void addlist() async{
            QuerySnapshot list1= await Firestore.instance.collection('articles').limit(3).orderBy('title').getDocuments();
            list.add(list1.documents);
            s= list1.documents[2].data['title'];
          }

      void listadd() async{
        QuerySnapshot li= await Firestore.instance.collection('articles').orderBy('title').limit(3).startAt([s]).getDocuments();
        list.add(li.documents);
        s=li.documents[2].data['title'];
      }
}

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

...