作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
重现步骤:向左滑动,切换到红色Tab
然后切换到紫色 Tab
再次。
什么是:执行重现步骤后,PageView
第一个 Tab
又到蓝页了。
应该是什么:执行重现步骤后,PageView
第一个 Tab
仍然在绿页。
我在这里缺少什么?
import "package:flutter/material.dart";
import "package:flutter/services.dart";
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
SystemChrome.setEnabledSystemUIOverlays([]);
return MaterialApp(
home: MyHome()
);
}
}
class MyHomeState extends State<MyHome> with TickerProviderStateMixin {
TabController tabController;
@override
void initState() {
tabController = tabController?? TabController(
vsync: this,
length: 2
);
super.initState();
}
@override
void dispose() {
tabController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: [
TabBar(
controller: tabController,
tabs: [
Container(
color: Colors.purple,
width: 100.0,
height: 50.0
),
Container(
color: Colors.pink,
width: 100.0,
height: 50.0
)
]
),
Expanded(
child: TabBarView(
controller: tabController,
children: [
MyPageView(),
MyPageView(),
],
)
)
]
)
);
}
}
class MyHome extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return MyHomeState();
}
}
class MyPageViewState extends State<MyPageView> {
PageController pageController;
@override
void initState() {
pageController = pageController?? PageController();
super.initState();
}
@override
void dispose() {
pageController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return PageView(
controller: pageController,
children: [
Container(
color: Colors.blue
),
Container(
color: Colors.green
)
]
);
}
}
class MyPageView extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return MyPageViewState();
}
}
最佳答案
这个问题用 AutomaticKeepAliveMixin
解决了.我以前使用过这个,但由于对错误状态的混淆。它显然必须与包含您想要的状态的类混合在一起 keep alive
.
关于dart - Flutter:PageController 不保留页面,尽管 keepPage: true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53200664/
重现步骤:向左滑动,切换到红色Tab然后切换到紫色 Tab再次。 什么是:执行重现步骤后,PageView第一个 Tab又到蓝页了。 应该是什么:执行重现步骤后,PageView第一个 Tab仍然在绿
我是一名优秀的程序员,十分优秀!