Flutter:PageView-方法“ jumpToPage”在null上被调用

时间:2019-07-14 03:22:45

标签: flutter

我比较陌生,所以这可能是一个非常简单的解决方案。我已经在一个Scaffold()中实现了一个以PageView为主体的抽屉。我希望能够跳到PageView page.no,因为“抽屉”列表项是TappedOn。

我知道我不会在某处初始化或设置任何内容。 我也尝试过keepPage:true,但没有任何区别。

class MyScreen extends StatefulWidget {
@override
  State<StatefulWidget> createState() {
    return _MyScreenState();
  }
}

class _MyScreenState extends State<MyScreen> {
  var _currentIndex = 0;
  PageController _pageController;

  @override
  void initState() {
    super.initState();
    _currentIndex = 0;
    PageController(initialPage: _currentIndex, keepPage: false);
  }

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

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: AppBar(
        title: const Text('AppBar',),
        elevation: 0.0,
        leading: Builder(
          builder: (context) => IconButton(
            icon: new Icon(Icons.toc, size: 35.0),
            onPressed: () => Scaffold.of(context).openDrawer(),
          ),
        ),
        actions: <Widget>[
        ],
      ),

      drawer: Drawer(
        child: ListView(
          padding: EdgeInsets.zero, // Important: Remove any padding from the ListView.
          children: <Widget>[
            Container(
              height: 120,
              child: DrawerHeader(
                child: Text('Heading',),
              ),
            ),
            ListTile(
              title: Text('Home',),
              onTap: () {
                setState(() {
                  _currentIndex = 2;
                });
                Navigator.pop(context);
                _pageController.jumpToPage(_currentIndex);
              },
            ),
            ListTile(),
            ListTile(),
            ....
          ],
        ),
      ),

      body: PageView(
        controller: _pageController,
        onPageChanged: (index) {
          setState(() {
            _currentIndex = index;
          });
        },
        children: <Widget>[
          new Page1(),
          new Page2(),
          ....
        ],
      )

    );

  }

}

上面的代码抛出以下错误:

  

flutter:在处理以下内容时引发了以下NoSuchMethodError:   手势:

     

flutter:方法“ jumpToPage”在null上被调用。

     

颤振:接收方:空

     

颤振:尝试调用:jumpToPage(0)

1 个答案:

答案 0 :(得分:0)

只需将您的PagController公开为:PageController pageController;