Flutter 在使用flatter';什么是动画列表?

Flutter 在使用flatter';什么是动画列表?,flutter,flutter-animatedlist,Flutter,Flutter Animatedlist,我正在开发一个Flitter应用程序,它的功能类似于whatsapp,其中可以有大量实质上是音频播放器的消息。我使用的是AnimatedList,因此聊天泡泡在里面和外面都有动画 问题是,AnimatedList似乎不支持keepAlive,我也没有遇到任何替代方案。我不希望这些小部件被循环使用,因为如果一条消息正在播放,并且我在视图中滚动消息,我希望消息继续播放和动画,现在我在每个子小部件中实例化一个音频播放器和动画控制器。如果我把所有这些状态都保持在子窗口小部件之外(与列表处于同一级别),我

我正在开发一个Flitter应用程序,它的功能类似于whatsapp,其中可以有大量实质上是音频播放器的消息。我使用的是
AnimatedList
,因此聊天泡泡在里面和外面都有动画

问题是,
AnimatedList
似乎不支持
keepAlive
,我也没有遇到任何替代方案。我不希望这些小部件被循环使用,因为如果一条消息正在播放,并且我在视图中滚动消息,我希望消息继续播放和动画,现在我在每个子小部件中实例化一个音频播放器和动画控制器。如果我把所有这些状态都保持在子窗口小部件之外(与列表处于同一级别),我可以认为这是更“最优的”,但是在这个应用程序中,每个对话的聊天泡泡的最大数量是~50,我们现在想快速移动,而不是最佳状态,所以如果我能保持窗口小部件的活力,我认为这种简化是一个好主意

我尝试用
KeepAlive
包装子部件,但没有成功。下面似乎是我的选择:

  • 有一些支持的方法可以做到这一点,但我不知道
  • 有一些替代/第三方库支持这一点
  • 尝试使用非动画列表并探索其他动画制作方法
  • 把国家凌驾于儿童之上

  • 我很想听听社区里可能的解决方案。谢谢

    所有建议的解决方案都很好(如果需要快速工作,第四种可能是最可靠的,但肯定不是最有效的…)

    您是否想过使用一个InheritedWidget,将其放在动画列表上方,用于控制音频播放器。(我假设您一次只希望播放一个音频)

    因此,具体地说,您将拥有一个继承的小部件,该小部件将公开start(File)方法和pause(File)方法、duration属性以及当前正在播放的消息的唯一标识符。这将允许您保持您的状态结构简单,并且仍然非常有效


    如果我的解释不够清楚,我可以写一段代码。

    选项4似乎是实现时间最长但效率最高的,因为它允许您循环聊天。如果我这样做,不仅仅是关于播放器,我还必须处理音频进度条的动画聊天泡泡内容。实际上,我倾向于这样做,因为这似乎是正确的做法,我倾向于使用一个单一音频聊天泡泡管理器,它知道音频位置,因此可以使用进度条并处理正在播放的音频。是的,一次只想要一个。