【发布时间】:2019-10-03 16:36:15
【问题描述】:
我有一个带有 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按钮
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。我不知道它是否已经修复了。 -
谢谢。我尝试了
>1而不是==2,但没有奏效。但我同意你的看法。我认为问题出在if。 -
对我来说,它适用于 >1.9,但它也应该适用于 >1。
-
只是一个想法。当
widget._tabBarController.indexIsChanging为真时,也许尝试隐藏FloatingActionButton。 docs.flutter.io/flutter/material/TabController-class.html -
我也试过了,没有任何改变。 :(
标签: flutter floating-action-button