我想在与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),
);
}
但是它总是将交互锁定到一个页面太迟了,我还需要以某种方式使用计时器,这意味着我需要异步地将页面发送到正文。
答案 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