在原生Android开发中,通常使用FragmentTransaction
创建导航动画,其中actionBar的位置保持固定(但actionBar的内容发生了变化),而actionBar下面的片段执行过渡动画(如滑入或滑出)。
简单地说,AppBar
和主体执行不同的过渡动画。在flutter中,创建这种动画的最佳实践是什么?
目前我可以想到一个解决方案,在Scaffold.body
中使用导航,并使用Stream
+ StreamBuilder
启动AppBar
重绘。类似于下面的代码。
Scaffold(
appBar: StreamBuilder<Int>(
stream: Bloc.of(context).currentFragmentId
builder: //Some logic to decide which AppBar is appropriate
),
body: Navigator(
//Navigation between fragments
),
)
但这真的很奇怪。那么,有没有最佳实践来做到这一点呢?请告诉我!
2条答案
按热度按时间f2uvfpb91#
好吧,因为目前还没有答案。我将在这里分享我的解决方案,尽管它不是那么优雅。
解决方案是将AppBar Package 在Hero小部件中。由于Scaffold只将PreferedSize小部件作为应用栏,因此需要进行一些自定义。
并确保您的导航器实现了HeroController。(默认导航器已实施)
pinkon5k2#
也许是一个更优雅的解决方案(代码方面),而不是@First_Strike: