Flutter flatter中的富文本组件

Flutter flatter中的富文本组件,flutter,flutter-animation,Flutter,Flutter Animation,我想做一个混合应用程序使用颤振。我看到的一种特殊组件听起来像这样: 像这样的汉字家 (意思是家)显示 当用户单击该字符时,它可以显示其发音(jia) 用户还可以选择单击播放发音 用户还可以选择打开一个窗口,在该窗口中播放角色如何编写的动画 对于这样的句子:蓝天是白云的家(字面翻译为:蓝天是白云的故乡),这7个字符中的每一个都可以单独点击,用户可以选择显示/播放发音/显示它们的书写方式 普通静态文本不够丰富,无法显示所有这些信息。我目前的想法是让每个角色都成为一个定制的小部件,其中嵌入了这样的

我想做一个混合应用程序使用颤振。我看到的一种特殊组件听起来像这样:

  • 像这样的汉字家 (意思是家)显示
  • 当用户单击该字符时,它可以显示其发音(jia)
  • 用户还可以选择单击播放发音
  • 用户还可以选择打开一个窗口,在该窗口中播放角色如何编写的动画
  • 对于这样的句子:蓝天是白云的家(字面翻译为:蓝天是白云的故乡),这7个字符中的每一个都可以单独点击,用户可以选择显示/播放发音/显示它们的书写方式
普通静态文本不够丰富,无法显示所有这些信息。我目前的想法是让每个角色都成为一个定制的小部件,其中嵌入了这样的数据

如果每个汉字(通常使用大约5000个字符)都有自己丰富的数据格式,那么这项任务可能会非常艰巨

关于如何在颤振中有效地解决这个问题,有什么建议吗


提前谢谢

有几种方法可以做到这一点。使用小部件肯定是一种选择,但从长远来看,这可能会给您带来问题

让我们将其分为两部分:


1:显示文本 我建议不要使用widget,而是与许多孩子一起使用。您可以创建一个自定义类,该类接受字符串,将其拆分为字符,并将每个字符放入其自己的TextSpan中。通过使用。然后,如果您不需要点击的位置,您可以使用with在点击时显示信息,或者/如果您需要(例如,如果您希望在点击发生的位置显示一个弹出窗口,而不是像弹出的底部纸张那样)


2:显示信息 因为您需要处理大量字符,我建议不要全部用代码来处理,而是用其他一些易于操作的格式来处理字符,例如JSON。通过这种方式,您可以将数据拆分成块并根据需要加载,和/或从web服务器获取数据

您的数据可能看起来像:

{
"家": {
“发音”:“加”,
“audio”:“path/to/sound.m4a”,
“动画”:“path/to/animation.gif”
},
...
}
从理论上讲,你甚至可以做一些事情,比如当角色第一次显示或单击时开始加载发音文件

点击角色时,您可以:

  • 检查缓存中是否存在数据
  • 如果需要,从网络/磁盘加载数据
  • 打开底部页面或弹出窗口,显示音频和绘图动画的发音信息+按钮
  • 你在颤振中试过widget吗?希望能有所帮助