flutter - 如何在颤动中从tab1(不是重建tab2)更改tab2的状态
问题描述
当我尝试从 tab1 更改 tab2 的状态时遇到问题
为此,我已经有 tab1 和 tab2 的类来保存用户数据:
AutomaticKeepAliveClientMixin<...>{...}
...
@override
bool get wantKeepAlive => true;
问题是当用户更改 tab1 中的选项时,您只需要更改 tab2 的状态(而不是重建),以便仅使用新数据更新列表 var
我创建了一个 tabcontroller 以便 tab2 在用户访问该视图时更改其状态但它不起作用
class _medState extends State<HomeMed> with SingleTickerProviderStateMixin{
TabController _tabController;
var _context;
@override
void initState() {
super.initState();
_tabController = TabController(vsync: this, length: 2);
_tabController.addListener(_handleTabSelection);
}
void _handleTabSelection() {
if (_tabController.indexIsChanging) {
switch (_tabController.index) {
case 1: //tab2
setState(() {
}); //this not update tab2 view
break;
}
}
}
@override
void dispose() {
_tabController.dispose();
super.dispose();
}
...
解决方案
setState
页面调用HomeMed
应该重建整个小部件,因此两者都将Tab1
重建Tab2
。如果您只有 Tab2 的一部分想要重建,最好使用ValueNotifier
或Service
推荐阅读
- css - 如何使图像幻灯片的叠加层向右显示在 css3 动画中的图像
- google-places-api - 每次用户查看我网站上的页面以显示图像时,我是否需要请求 Google-places-api?
- linux - cpupower 监视器中的 C-state Cx 是什么
- c# - 当我调用 ExecuteScalar 时,',' 附近的语法不正确
- java - 从属性文件中读取反斜杠
- php - mySQL 有时会搜索 null
- wordpress - Wordpress 文章三分之一部分中的组件
- html - CSS中的水平滚动
- jackson - 在流数据解析时从 JSON 模式中选择任何元素
- c# - 如何修复“列的类型值与先前观察到的类型不同”