我有一个带有TabBarView和FloatingActionButton的Scaffold。当我滑动到最后一个选项卡时,我想要隐藏这个FAB。为此,我编写了以下代码:
@override
void initState() {
super.initState();
widget._tabBarController = new TabController(length: 3, vsync: this);
widget._tabBarController.addListener(() {
if (widget._tabBarController.index == 2) {
setState(() => widget._visibleFab = false);
} else {
setState(() => widget._visibleFab = true);
}
});
}
在脚手架中使用浮动操作按钮(FAB Button)
Visibility(
visible: widget._visibleFab,
child: FloatingActionButton.extended(
elevation: .75,
label: new Text("My Action Button",
style: TextStyle(
fontWeight: FontWeight.w900,
color: statusColor,
letterSpacing: 0.2)),
onPressed: () {
},
backgroundColor: Colors.white,
icon: Icon(Icons.chat, color: statusColor),
isExtended: true,
))
它可以正常工作,但是当我通过滑动切换到最后一个选项卡时,它需要大约半秒钟才能隐藏。除非我直接点击这个最后一个选项卡,而不是滑动页面,否则它会立即隐藏。
为什么会这样呢?
widget._tabBarController.index == 2
。我曾经遇到过很多类似的问题,因为最后一个屏幕永远无法到达。假设你有4个屏幕,它只会到3.99998。我不知道它是否已经修复。 - Jalil>1
而不是==2
,但没有起作用。但我同意你的观点。我认为问题出在这个if
语句上。 - Notheroswidget._tabBarController.indexIsChanging
为 true 时隐藏FloatingActionButton
。https://docs.flutter.io/flutter/material/TabController-class.html - Zvi Karp