在 Flutter 中,哪种方式比高负载处理性能更好?
假设我们正在监听一个每秒发出大约 1000 条消息的流。哪种方式会有更好的性能?
1) 使用 setState() 类似
stream.listen((msg) => setState(() => _msg = msg)
Run Code Online (Sandbox Code Playgroud)
然后在构建方法中
return Text(_msg);
Run Code Online (Sandbox Code Playgroud)
2)使用流生成器
StreamBuilder(
stream: stream,
builder: (context, snapshot) {
if (snapshot.hasData) {
return Text(snapshot.data)
);
}
},
)),
Run Code Online (Sandbox Code Playgroud)
根据颤振文档:
当在 State 上调用 setState() 时,所有后代部件都将重建。因此,将 setState() 调用本地化到 UI 实际需要更改的子树部分。如果更改包含在树的一小部分,请避免在树的高层调用 setState()。
因此,在您的特定情况下,您可能不会有性能差异,但是在大型小部件树中,StreamBuilder 将隔离您的小部件,避免在整个树中重建。
我还建议您使用“DevTools Widget Inspector Page”检查特定场景。它将为您提供实时分析,包括 GPU 时间、内存消耗、性能等等。
| 归档时间: |
|
| 查看次数: |
3908 次 |
| 最近记录: |