Flutter - Скрыть кнопку FAB при смахивании - PullRequest
1 голос
/ 16 мая 2019

У меня есть Scaffold с TabBarView и FloatingActionButton.Я хочу, чтобы скрыть этот 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,
))

Это работает, но на скрытие его уходит около половины секунды, когда я перехожу к последнемуВкладка, когда я проведу.Если я не коснусь этой последней вкладки напрямую, не проведя пальцем по странице, она мгновенно будет скрыта.

Почему это так?

Ответы [ 2 ]

0 голосов
/ 20 мая 2019

В итоге я решил использовать Scaffold для каждого TabBarView. Теперь я могу настроить FloatActionButton и BottomNavigatorBar для каждой вкладки без хлопот.

0 голосов
/ 17 мая 2019

Измените метод сборки, чтобы он возвращал значение NULL, если вы не хотите, чтобы Fab.

например.

 floatingActionButton: _createFloatingActionButton(),
 Widget _createFloatingActionButton() {
    if (!_tfFabVisible) {
      return null;
    }
    return FloatingActionButton(
      onPressed: _btnSubmitPressed,
...