我比较陌生,所以这可能是一个非常简单的解决方案。我已经在一个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)
答案 0 :(得分:0)
只需将您的PagController
公开为:PageController pageController;
。