Flutter-触发另一个窗口小部件方法,该窗口小部件位于另一个文件中

时间:2020-09-05 14:03:37

标签: flutter flutter-web

我目前正在学习Flutter,并坚持使用它。我也是编程的新手,所以请对说明保持谨慎:)。

我正在尝试为自己建立一个学习项目网站。网站一般由2个小部件组成。 3页的AppBar和PageView。我创建了这个

websitelayout

现在,从这两个文件中可以看到,标头和主体是单独的文件。

bodyfile

headerfile

我也想从标题中触发上一页或下一页按钮。我将它们连接到他们的页码,但我想弄清楚如何从标头中做到这一点。

谢谢。

1 个答案:

答案 0 :(得分:0)

我如下解决了这个问题;

创建了一个用于包含页码的类,并通知侦听器以进行页面更改。

class PageState extends ChangeNotifier {
  var _currentpage = 0;

  setPage(int pageNum) {
    if (pageNum != _currentpage) {
      _currentpage = pageNum;
      print(currentPage);
      notifyListeners();
    }
  }

  int get currentPage => _currentpage;
}

为主体部分上的当前页面更改创建一个侦听器,如下所示;

    @override
  Widget build(BuildContext context) {
    var statepage = Provider.of<PageState>(context, listen: false);

    void goToPage() {
      pageStateControl.animateToPage(statepage.currentPage,
          duration: Duration(seconds: 1), curve: Curves.easeInCubic);
    }

    statepage.addListener(goToPage);

每当页码更改时,状态页侦听器都会在综合浏览器窗口小部件文件内触发goToPage方法。