我正在尝试实现分页,但是找不到如何创建 Controller 侦听器功能的示例,也没有找到放置示例的示例。请指教。让我知道是否也应该添加更多信息。
目前,我的侦听器功能如下所示:

(within initState)
    pagecontroller.addListener(() {
      print(pagecontroller.page);
      if (pagecontroller.page == _postslist.length-1) {
        fetchMore();
      }
    });
当前发生的情况是该函数仅被调用一次,随后再也不会被调用。

最佳答案

我猜您正在尝试监听pageController来获取currentPage。在这种情况下,您应该使用its methods(animateToPage,jumpToPage,nextPage,previousPage)使用PageController触发事件,以便它可以唤起您的侦听器。

您可以在文档中找到PageView.builder描述,如下所示:

因此,它支持您在页面数众多的情况下有效地构建屏幕。您仍然需要自行处理页面之间的导航。
我上面包含的链接提供了一个示例,您可以引用PageController的用法。为了方便起见,这里将其包括在内:

class MyPageView extends StatefulWidget {
  MyPageView({
    Key key
  }): super(key: key);

  _MyPageViewState createState() => _MyPageViewState();
}

class _MyPageViewState extends State < MyPageView > {
  PageController _pageController;

  @override
  void initState() {
    super.initState();
    _pageController = PageController();
  }

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: PageView(
          controller: _pageController,
          children: [
            Container(
              color: Colors.red,
              child: Center(
                child: RaisedButton(
                  color: Colors.white,
                  onPressed: () {
                    if (_pageController.hasClients) {
                      _pageController.animateToPage(
                        1,
                        duration: const Duration(milliseconds: 400),
                          curve: Curves.easeInOut,
                      );
                    }
                  },
                  child: Text('Next'),
                ),
              ),
            ),
            Container(
              color: Colors.blue,
              child: Center(
                child: RaisedButton(
                  color: Colors.white,
                  onPressed: () {
                    if (_pageController.hasClients) {
                      _pageController.animateToPage(
                        0,
                        duration: const Duration(milliseconds: 400),
                          curve: Curves.easeInOut,
                      );
                    }
                  },
                  child: Text('Previous'),
                ),
              ),
            ),
          ],
        ),
      ),
    );
  }
}

关于flutter - 使用Pageview.builder在Flutter中进行分页,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63641574/

10-13 01:28