如何在颤动中从tab1(不是重建tab2)更改tab2的状态
Posted
技术标签:
【中文标题】如何在颤动中从tab1(不是重建tab2)更改tab2的状态【英文标题】:how to change the state of a tab2 from tab1 (not rebuild tab2) in flutter 【发布时间】:2021-04-22 03:46:14 【问题描述】:当我尝试从 tab1 更改 tab2 的状态时遇到问题
为此,我已经有 tab1 和 tab2 的类来保存用户数据:
AutomaticKeepAliveClientMixin<...>...
...
@override
bool get wantKeepAlive => true;
问题是当用户更改 tab1 中的选项时,您只需要更改 tab2 的状态(不重建),仅用新数据更新列表变量
我创建了一个 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();
...
【问题讨论】:
【参考方案1】:HomeMed
页面中的setState
调用应该重建整个小部件,因此Tab1
和Tab2
都将重建。如果您只有 Tab2 的一部分想要重建,最好使用 ValueNotifier
或 Service
【讨论】:
以上是关于如何在颤动中从tab1(不是重建tab2)更改tab2的状态的主要内容,如果未能解决你的问题,请参考以下文章
C# 如何实现sqlserver 2008中两个数据库中两张表的关联查询。 如: sleect * from db1.tab1,db2.tab2;
setState 是不是会在颤动中为屏幕重建整个小部件树,以及它与其他状态管理相比如何