flutter - 颤振设置事件频率
问题描述
假设我不断更改Slider的值并在onChanged回调函数中调用服务器。是否可以有效地更改回调之间的最小时间段?
Slider showSoundBar(){
return Slider(
value: this.volume,
activeColor: Colors.blue,
onChanged: (vol){
// Don't send too often
send('volume', vol);
},
);
}
解决方案
Timer
你可以使用from dart:async
..来做这样的事情
class MyWidget extends StatefulWidget {
@override
_MyWidgetState createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
Timer timer;
int timePassedInMilliseconds = 1500;
@override
void initState(){
super.initState();
timer = Timer.periodic(Duration(milliseconds: 100), (_){
timePassedInMilliseconds = timePassedInMilliseconds + 100;
});
}
@override
Widget build(BuildContext context) {
return Slider(
value: 10,
activeColor: Colors.blue,
onChanged: (vol){
// Don't send too often
if(timePassedInMilliseconds > 1500){
send('volume', vol);
timePassedInMilliseconds = 0;
}
},
);
}
void send(String sendWhat, double value){
}
@override
void dispose(){
timer.cancel();
super.dispose();
}
}
推荐阅读
- reactjs - React Native Base Card Image 圆角不起作用
- css - 更改输入框样式不带默认白框
- reactjs - Heroku(MERN)中没有指定默认引擎,也没有提供扩展
- javascript - 如何将图片索引传递给滑块
- python - 如何分配功能键来执行一串命令?
- excel - listrows.add(alwaysinsert:true) 覆盖最后一行,而不是添加一行
- microsoft-teams - 在 MS Teams 选项卡中执行所需任务后,将 subEntityId 重置为空
- vue.js - 如何用 apollo 客户端状态管理替换 vuex?
- python - pandas 排序功能在 for 循环中不起作用?
- security - https 是防止 csrf 攻击的 csrf 令牌方法的先决条件吗?