Flatter StreamBuilder нумерация страниц (данные из базы данных) - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть список в базе данных, и я могу показать его полностью на странице с StreamBuilder, но когда записей становится слишком много, я хочу создать решение для нумерации страниц. Это не будет тип прокрутки, у меня в нижней панели есть значок навигации, он похож на «», и мне нужно перемещаться по страницам с этим.

До сих пор я пробовал что-то подобное ниже, но не может достичь еще.

  StreamBuilder<dynamic>(
          stream: listDao.findAllItemsAsStream(),
          builder: (context, snapshot) {
            if (snapshot.hasError)
              return new Scaffold(...)
            else return SafeArea(
              child: Scaffold(
                body: Container(
                  padding: EdgeInsets.all(4),
                  width: MediaQuery.of(context).size.width,
                  height: MediaQuery.of(context).size.height,
                  child: GridView.builder(
                      gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
                        crossAxisCount: mediaQueryData.orientation == 1,
                        childAspectRatio: mediaQueryData.orientation == 1/2,
                      ),
                      var page = 1
                      itemcount: snapshot.data.length > 10 ? 10 : snapshot.data.length
                      var totalPages = snapshot.data.length/10.toInt()+1 
                      page == 1 ? indexP = index : indexP = index + page*10
                      itemBuilder: (context, index) {
                        return  Text(snapshot.data[indexP].title)
                      }
                     ),
                    ),

            bottomNavigationBar: 
            new BottomAppBar(
                    child: Row (
                           children: <Widget> [
                                InkWell(
                                   onTap () {
                                   if (page > 1){page = page - 1;}
                                   else {}},
                                child: Icon(Icons.arrow_back_ios, size: 35,)),),

                                Text(page + "/" + totalPage),

                                InkWell(
                                   onTap () {
                                   if (page < totalPages){page = page + 1;}
                                   else {},
                                child: Icon(Icons.arrow_forward_ios, size: 35,)),
                               ),]
                            ),
                         );
                      })
...