Flutter PageController不作为状态变量工作
当使用myFlutter PageController不作为状态变量工作,flutter,dart,Flutter,Dart,当使用myState的build函数中实例化的页面控制器时,我的控制器的行为符合预期。然而,如果我将它作为在状态本身上声明的变量,我似乎根本无法让它工作 作品: class _MyHomePageState extends State<MyHomePage> { var _currentPage = 0; @override Widget build(BuildContext context) { return Scaffold( backgrou
State
的build
函数中实例化的页面控制器
时,我的控制器的行为符合预期。然而,如果我将它作为在状态
本身上声明的变量,我似乎根本无法让它工作
作品:
class _MyHomePageState extends State<MyHomePage> {
var _currentPage = 0;
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.blueGrey,
body: PageView(
physics: NeverScrollableScrollPhysics(),
controller: PageController(initialPage: _currentPage, keepPage: false, viewportFraction: 0.9),
children: <Widget>[
SomeWidget(),
SomeWidget(),
SomeWidget(),
],
),
);
}
class\u MyHomePageState扩展状态{
var _currentPage=0;
@凌驾
小部件构建(构建上下文){
返回脚手架(
背景颜色:颜色。蓝灰色,
正文:页面视图(
物理学:NeverscrollableScroll物理学(),
控制器:PageController(initialPage:_currentPage,keepPage:false,viewportFraction:0.9),
儿童:[
SomeWidget(),
SomeWidget(),
SomeWidget(),
],
),
);
}
不起作用:
class _MyHomePageState extends State<MyHomePage> {
var _currentPage = 0;
var _pageController;
@override
void initState() {
super.initState();
_pageController = PageController(initialPage: _currentPage, keepPage: false, viewportFraction: 0.9);
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.blueGrey,
body: PageView(
physics: NeverScrollableScrollPhysics(),
controller: _pageController,
children: <Widget>[
SomeWidget(),
SomeWidget(),
SomeWidget(),
],
),
);
}
class\u MyHomePageState扩展状态{
var _currentPage=0;
变量控制器;
@凌驾
void initState(){
super.initState();
_pageController=pageController(initialPage:_currentPage,keepPage:false,viewportFraction:0.9);
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
背景颜色:颜色。蓝灰色,
正文:页面视图(
物理学:NeverscrollableScroll物理学(),
控制器:_pageController,
儿童:[
SomeWidget(),
SomeWidget(),
SomeWidget(),
],
),
);
}
对于非工作代码,它甚至不应用viewportFraction
,就像我在build
方法本身中实例化它一样
我在这里遗漏了什么?我已经将其与我发现的其他示例进行了比较,但也许我遗漏了一些我完全忘记的东西。当然,在我发布之后,答案是显而易见的 我的错误是因为我认为在保存更改时重新加载后,我的状态会重新初始化。事实并非如此。重新运行我的应用程序使一切都变得顺利