除了 setstate 颤振之外,如何在小部件构建中获取值
Posted
技术标签:
【中文标题】除了 setstate 颤振之外,如何在小部件构建中获取值【英文标题】:How is to get a value down in the widget build other than setstate flutter 【发布时间】:2021-06-07 14:19:23 【问题描述】:我正在使用 Agora 设置音频和视频通话。我想在接听电话后显示通话时间。
Agora 提供带有通话时长的回调:
rtcStats: (stats)
print('stats');
print(stats.cpuAppUsage);
print(stats.totalDuration);
setState(()
duration = Duration(seconds: stats.totalDuration!);
);
,
而不是像上面那样使用 setState,这基本上是每秒重建小部件,我这里有什么选择?
【问题讨论】:
【参考方案1】:像这样使用 valueNotifier
ValueNotifier<double?> secondsNotifier = ValueNotifier(null)
and double become like this
rtcStats: (stats)
print('stats');
print(stats.cpuAppUsage);
print(stats.totalDuration);
secondNotifier.value = stats.totalDuration
,
in build add ValueListenableBuilder<double> (
valueListenable:secondNotifier,
build:(ctx,second,_)
if(second == null)
return SizedBox.shrink();
return Text("$second");
)
【讨论】:
完美。非常感谢!以上是关于除了 setstate 颤振之外,如何在小部件构建中获取值的主要内容,如果未能解决你的问题,请参考以下文章
通过 addPostFrameCallback 访问 Flutter Provider 时说小部件在小部件树之外,但颤振检查器显示其他情况
ScaffoldMessenger.of(context).showSnackBar() 在小部件构建函数中直接调用时不起作用