PageController.страница не может быть доступна до того, как с ее помощью будет создан просмотр страницы . Неудачное утверждение: строка 172 поз 7: «позиции.Не пусто’

#flutter #flutter-layout

Вопрос:

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

это мой код

     class On_Boarding extends StatelessWidget {

   List <Boarding_model> boarding = [
     Boarding_model(
         image: 'assets/images/onbording1.png',
         title: 'Screen title 1',
         body: 'Screen body 1',
     ),
     Boarding_model(
         image: 'assets/images/onbording1.png',
         title: 'Screen title 2',
         body: 'Screen body 2',
     ),
     Boarding_model(
         image: 'assets/images/onbording1.png',
         title: 'Screen title 3',
         body: 'Screen body 3',
     ),
   ];

   var boardController = PageController();
   
   @override
  Widget build(BuildContext context) {

    return Scaffold(
      appBar: AppBar(),
      body:Padding(
        padding: const EdgeInsets.all(23.0),
        child: Column(
          children: [
            Expanded(
              child: PageView.builder(
                physics: BouncingScrollPhysics(),
                itemBuilder:(context ,index)=> buildBoardingItem(boarding[index]),
                itemCount:boarding.length ,
              ),
            ),
            SizedBox(
              height: 40.0,
            ),
            Row(
              children: [
                Text(
                  'indicator'
                ),
                Spacer(),
                FloatingActionButton(
                  onPressed: (){
                    boardController.nextPage(
                        duration: Duration(
                          milliseconds: 750,
                        ),
                        curve: Curves.fastLinearToSlowEaseIn,
                    );
                  },
                  child: Icon(
                    Icons.arrow_forward_ios,
                  ),
                ),
              ],
            ),
          ],
        ),
      ) ,
    );
  }
 

Ответ №1:

вы создаете контроллер, но не используете его в просмотре страниц.builder

Внесите Изменения:

 PageView.builder(
                controller: boardController,
                physics: BouncingScrollPhysics(),
                itemBuilder:(context ,index)=> buildBoardingItem(boarding[index]),
                itemCount:boarding.length ,
              );
 

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

1. большое спасибо @Tushar Patel , это работает

2. вы можете пометить этот ответ правильной галочкой? очень признателен.