Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何在ListView中插入而不在Flatter中重建_Flutter_Dart - Fatal编程技术网

Flutter 如何在ListView中插入而不在Flatter中重建

Flutter 如何在ListView中插入而不在Flatter中重建,flutter,dart,Flutter,Dart,我正在创建一个聊天,问题是,例如,当消息中有视频或语音消息时,当插入完全重建所有内容时,如果用户写入,则无法观看或收听消息。如何确保不是所有的东西都被重建 我读到,如果键是相同的,那么这个元素将不会被重建,但我仍然重建了它。作为一个键,我给出了消息的时间 PagewiseListView( 相反:是的, 收缩膜:对, 缓存范围:6500, 控制器:\ u滚动控制器, 物理:弹跳CrollPhysics(), 填充:仅限边集(顶部:10.0,左侧:8,右侧:8,底部:getHeight(70)),

我正在创建一个聊天,问题是,例如,当消息中有视频或语音消息时,当插入完全重建所有内容时,如果用户写入,则无法观看或收听消息。如何确保不是所有的东西都被重建

我读到,如果键是相同的,那么这个元素将不会被重建,但我仍然重建了它。作为一个键,我给出了消息的时间

PagewiseListView(
相反:是的,
收缩膜:对,
缓存范围:6500,
控制器:\ u滚动控制器,
物理:弹跳CrollPhysics(),
填充:仅限边集(顶部:10.0,左侧:8,右侧:8,底部:getHeight(70)),
loadingBuilder:(c)=>LoaderPage()
AddAutomaticEpaLifes:没错,
itemBuilder:(c,message,index)=>UserMessage(数据:message,index:index,toUserID:widget.toUserID,player:mPlayer,key:message.key),
showRetry:对,
pageLoadController:pageLoadController消息,
),

我也遇到过这个问题

您可以做的一件事是为所有内容分配关键点。所有具有动态值的小部件及其父部件等等。这有点乏味,但绝对值得

您可以做的另一件事是通过将部分代码提取为单个小部件来分解小部件。当您创建新的小部件时,flatter将只重建需要重建的小部件


如果仍然存在此问题,还可以将小部件包装到
Builder
widgets中只有在不使用setState()更新状态时,此选项才有效。生成器将包含对特定代码段的重建。

您如何注意到它的重建。换句话说,您遇到的实际问题是什么?例如,我打开一条语音消息,当有插入时,它就中断了,或者当我打开视频时,它开始重新加载,这听起来像是应该在两次构建之间保持状态的东西。你不能阻止构建的发生,你应该弄清楚为什么在构建之间状态会丢失。子小部件的键应该与主小部件的键不同?例如,itKeys中的消息键和语音消息键应始终是唯一的。不要使用
UniqueKey()
,这在这种情况下没有帮助