需求简介
TabBar的切换,分为点击和手势两种方式。所以加一个监听方法进行数据的切换是很常见的。
问题
-
手势切换的时候很正常;
-
点击切换的时候,会发现一次点击会带来两次回调;
-
假如在点击的时候再加一次onTap处理,就会出现调用3次后台接口,肯定有问题。
原因
这个已经有大神给出了答案,点击的时候,点击一次,动画一次,所以有2次。
真不知道这样做的意义是什么,除了徒增烦恼,有什么用?
解决
点击的一次和手势的一次,_tabController.indexIsChanging这个变量都是false,可以利用这一点进行过滤。
@override
void initState() {
super.initState();
_tabController = TabController(vsync: this, length: myTabs.length);
_tabController.addListener(() {
if (!_tabController.indexIsChanging) {
//do your work
}
});
}
网友评论