I'm relatively new to flutter so it might be a very simple solution. I have implemented a drawer in a Scaffold() with a PageView as the body. I want to be able to jump to the PageView page.no as the Drawer list item is TappedOn.
I know I'm not initialising or setting something somewhere. I've also tried keepPage: true, but doesn't make a difference.
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(),
....
],
)
);
}
}
The above code is throwing the following error:
flutter: The following NoSuchMethodError was thrown while handling a gesture:
flutter: The method 'jumpToPage' was called on null.
flutter: Receiver: null
flutter: Tried calling: jumpToPage(0)