我的应用程序上有两个listview屏幕。用户可以使用BottomNavigationBar控件在它们之间导航。
在listview.builder函数上,我返回类似这样的内容
return ListView.builder(
itemCount: snapshot.data.length,
itemBuilder: (context, index) {
return ListTile(
title: Text('...'),
subtitle: Text('...'),
onTap: () {
...
}
)
});
我发现onTap处理程序似乎混在这两个列表视图之间。
当我打开第一个列表视图时,Flutter会提供正确的onTap,但是当我切换到第二个列表视图时,Flutter仍会提供第一个列表视图onTap。
似乎onTap被flutter缓存了(标题和字幕似乎还可以)。有想法吗?
答案 0 :(得分:0)
问题出在比较过渡值上。因为您首先要反转当前视图的动画过渡。
在您的 botton_nav.dart 中,更改此设置:
return aValue.compareTo(bValue);
对此:
return bValue.compareTo(aValue);
答案 1 :(得分:0)
是的,问题是在进行比较时动画尚未完成,因此堆栈顶部的窗口小部件始终在后面1个选项卡中。实际上,您根本不需要构建堆栈,只需将Center(child: _buildTransitionStack())
的{{1}}替换为_navigationViews[_currentIndex].transition(_type, context)
,它应该可以工作。