延迟的BottomNavigationBar

时间:2019-06-17 21:21:14

标签: flutter dart

我想在与BottomNavigationBar元素交互后的一段时间内禁用与之交互。
我试图用AbsorbPointer做到这一点:

int _bottomBarIndex = 0;
  bool _isPageTwo = false;
Widget callPage(int index) {
    switch (index) {
      case 0:
          _isPageTwo = false;
        return Page1();
      case 1:
          _isPageTwo = true;
        return Page2();
      case 2:
          _isPageTwo = false;
        return Page3();
      default:
          _isPageTwo = false;
        return Page1();
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      bottomNavigationBar: AbsorbPointer(
        absorbing: _isPageTwo,
        child: BottomNavigationBar(
          currentIndex: _bottomBarIndex,
          // this will be set when a new tab is tapped
          onTap: (value) {
            _bottomBarIndex = value;
            setState(() {

            });
          },
          items: [
            BottomNavigationBarItem(
                icon: new Icon(Icons.home),
                title: Text(
                  '',
                  style: TextStyle(fontWeight: FontWeight.bold, height: 0.0),
                )),
            BottomNavigationBarItem(
                icon: new Icon(Icons.location_on),
                title: Text(
                  '',
                  style: TextStyle(fontWeight: FontWeight.bold, height: 0.0),
                )),
            BottomNavigationBarItem(
                icon: Icon(Icons.event_note),
                title: Text(
                  '',
                  style: TextStyle(fontWeight: FontWeight.bold, height: 0.0),
                ))
          ],
          backgroundColor: Colors.white,
        ),
      ),
      body: callPage(_bottomBarIndex),
    );
  }

但是它总是将交互锁定到一个页面太迟了,我还需要以某种方式使用计时器,这意味着我需要异步地将页面发送到正文。

1 个答案:

答案 0 :(得分:2)

这是两个解决方案。 @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.listman, menu); } 3000ms将再次被激活后,您可以根据需要更改时间。

BottomNavigationBar