gpt4 book ai didi

dart - Flutter:PageController 不保留页面,尽管 keepPage: true

转载 作者:行者123 更新时间:2023-12-03 02:48:24 54 4
gpt4 key购买 nike

重现步骤:向左滑动,切换到红色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/

54 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com