首页 > 解决方案 > 在 Flutter 中从 PageView 中的 Page 获取回调

问题描述

我有一个综合浏览量,我想更改 WalkThroughScreen 中具有该综合浏览量的按钮的颜色:

class WalkThroughScreen extends StatefulWidget {

  @override
  WalkThroughScreenState createState() => WalkThroughScreenState();
}

class WalkThroughScreenState extends State<WalkThroughScreen> {
  int currentIndexPage = 0;
  int pageLength;
  PageController _pageController = PageController(
    initialPage: 0,
  );

  List<Widget> _pages;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Stack(
        children: <Widget>[
          Container(
            width: MediaQuery.of(context).size.width,
            height: MediaQuery.of(context).size.height,
            child: PageView(
              controller: _pageController,
              physics: NeverScrollableScrollPhysics(), // verhindert swipen
              children: [
                Welcome()
                SecondPage()
                ],
              onPageChanged: (value) {
                setState(() => currentIndexPage = value);
              },
            ),
          ),
          Positioned(
            bottom: 40,
            left: 0,
            right: 0,
            child: Container(
              padding: EdgeInsets.symmetric(horizontal: 20),
              child: ElevatedButton(
                onPressed: () {
                  _pageController.animateToPage(
                    currentIndexPage + 1,
                    duration: Duration(milliseconds: 200),
                    curve: Curves.linear,
                  );
                },
                style: ElevatedButton.styleFrom(
                  primary: Colors.blue, // background
                  onPrimary: Colors.white, // foreground
                  elevation: 0,
                ),
                child: Container(
                  width: MediaQuery.of(context).size.width,
                  padding: EdgeInsets.symmetric(vertical: 15),
                  alignment: Alignment.center,
                  child: Text(
                    'Next',
                  ),
                ),
              ),
            ),
          ),
        ],
      ),
    );
  }
}

Pageview 如何与其中一个页面进行通信?在这种情况下欢迎。

class Welcome extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
          height: double.infinity,
          width: double.infinity,
          child: TextButton(onPressed: () {}, child: Text("Change Color"))),
    );
  }
}

是否可以将按钮放在欢迎页面并与 WalkthroughScreen 进行通信?我想逐步实施注册过程。

标签: flutterdart

解决方案


推荐阅读