Flutter 错误“在使用它构建 PageView 之前无法访问 PageController.page。”

Posted

技术标签:

【中文标题】Flutter 错误“在使用它构建 PageView 之前无法访问 PageController.page。”【英文标题】:Flutter Error "PageController.page cannot be accessed before a PageView is built with it." 【发布时间】:2021-06-11 20:43:29 【问题描述】:

在 PageViewBuilder 中,我想使用我在 pub.dev 上找到的 ArgonTimerButton 上的 onTap 移动到下一页,而不是滑动手势。我创建了一个控制器并使用了 controller.nextPage() 但它给了我这个错误:

'positions.isNotEmpty': PageController.page cannot be accessed before a PageView is built with it.

我的代码:

 final controller = PageController();
   @override
   Widget build(BuildContext context) 
   MediaQueryData size = MediaQuery.of(context).size;
   return  PageView.builder(
      physics: NeverScrollableScrollPhysics(),
      controller: PageController(),
      itemCount: widget.workoutExcercises.length,
      itemBuilder: (context, index) 
        return 

              //other widgets

              ArgonTimerButton(
                initialTimer: 3, // Optional
                height: 50,
                width: size.width * 0.55,
                minWidth: width * 0.40,
                color: Colors.white,
                borderRadius: 5.0,
                curve: Curves.easeInToLinear,
                child: Text(
                  "Done?",
                  style: TextStyle(
                      color: Colors.black,
                      fontSize: 24,
                      fontWeight: FontWeight.w700),
                ),
                loader: (timeLeft) 
                  return Text(
                    "Rest Time | $timeLeft",
                    style: TextStyle(
                        color: Colors.black,
                        fontSize: 18,
                        fontWeight: FontWeight.w700),
                  );
                ,
                onTap: (startTimer, btnState) 
                  if (btnState == ButtonState.Idle) 
                    controller.nextPage(duration: Duration(milliseconds:1000), curve: Curves.easeInToLinear);
                  
                ,
              ),
            ],
          ),
        );
      ,
    );

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

您正在创建控制器,但您没有使用它。

而不是:

controller: PageController(),

做:

controller: controller,

【讨论】:

以上是关于Flutter 错误“在使用它构建 PageView 之前无法访问 PageController.page。”的主要内容,如果未能解决你的问题,请参考以下文章

Flutter:每个flutter命令都会出现这个错误

Flutter 构建 iOS 错误:在 iOS 设备中构建 Flutter 应用程序时遇到错误

我在安装flutter时遇到了一些错误

使用 flutter_twitter 包的 Flutter Web Twitter 登录错误。我错过了啥?

Flutter错误信息搜集

Flutter:无法找到“flutter_assets”错误的资产路径