如何使用网页浏览在点击按钮时移至下一页?

时间:2019-05-08 10:31:14

标签: flutter

我正在使用Collin Jackson的this要点来实现带点指示器的综合浏览。我想通过点击按钮而不是滑动来移至下一屏幕,这是我面临的问题。

physics属性使用AlwaysScrollableScrollPhysics(),但是在我的情况下,由于我不想让用户滑动,所以我使用NeverScrollableScrollPhysics禁用了滑动,但这导致了点指示符当我移至下一屏幕时(第一个屏幕上显示了点指示符),该按钮没有显示。

如何在单击按钮时实现移至下一个屏幕并保持显示正确点的点指示器?

final _controller = PageController();
  final List<Widget> _pages = [
    FirstScreen(),
    SecondScreen(),
    ThirdScreen()
  ];
  int page = 0;

  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    bool isDone = page == _pages.length - 1;
    return new Scaffold(
      resizeToAvoidBottomPadding: false,
      body: new Stack(
          children: <Widget>[
            Positioned.fill(
            child:PageView.builder(
                physics: NeverScrollableScrollPhysics(),
                controller: _controller,
                itemCount: _pages.length,
                itemBuilder: (BuildContext context, int index) {
                  return _pages[index % _pages.length];
                },
                onPageChanged: (int p) {
                  setState(() {
                    page = p;
                  });
                },
            )
            ),
            Positioned(
            bottom: 10.0,
            left: 0.0,
            right: 0.0,
            child: new SafeArea(
            child: Column(
                children: <Widget>[
                  new Padding(
                    padding: const EdgeInsets.all(8.0),
                    child: DotsIndicator(
                      color: Colors.black,
                      controller: _controller,
                      itemCount: _pages.length,
                      onPageSelected: (int page) {
                        _controller.animateToPage(
                          page,
                          duration: const Duration(milliseconds: 300),
                          curve: Curves.ease,
                        );
                      },
                    ),
                  ),
                ],
            ),
            )
            )
          ]
      ),
    );
  }

0 个答案:

没有答案