[英]Listen to all events on Flutter's TabController
如果您想知道用户何时更改了标签页,您可以使用常规的TabController.addListener()
方法。 但是如果知道所有的用户事件,例如,用户开始滚动到另一个页面呢?
我需要知道用户何时开始滚动到新页面。 知道用户已经滚动到新页面为时已晚。
有没有办法实现它?
向tabController
添加监听器只会监听选项卡索引的变化,但要监听变化的值(双精度索引),您可以将监听器添加到tabController
的 animation 。
这是一个完整的代码,我正在使用flutter_hooks
来创建tabController
。
class TestTabListener extends HookWidget {
const TestTabListener();
@override
Widget build(BuildContext context) {
final tabController = useTabController(initialLength: 3);
tabController.animation!.addListener(() {
if (tabController.animation!.value != tabController.index) {
{
//code
print("runing");
}
}
});
return Scaffold(
body: TabBarView(
controller: tabController,
children: pages,
),
);
}
static final pages = [
Container(color: Colors.red),
Container(color: Colors.black),
Container(color: Colors.blue),
];
}
此处使用 function 时要小心,因为它会被多次调用,您可能会添加条件。
简单的检测如下:
tabBarController =
TabController(length: 5, initialIndex: pageNumber, vsync: this);
tabBarController.addListener(() {
changePage(tabBarController.index);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.