Flutter accelerometer/gyroscope 传感器滞后
Flutter accelerometer/gyroscope sensor lag
我一直在尝试使用 sensors package, however, the result seems to be very laggy. I have found a similar project on YouTube 实现一个陀螺仪图像查看器,它试图实现类似的目标,但正如您在视频中看到的那样,动画也非常滞后。
下面的代码只是简单地从事件中输出数据,我注意到数据的更新是如何在两次更新之间滞后 50 毫秒的。
有没有办法使动画更平滑或更快地更新数据?或者这是 Flutter 的限制?
注意:
我已经按照其他帖子的建议尝试了 --release 版本,但结果保持不变。
import 'package:sensors/sensors.dart';
class MyGyro extends StatefulWidget {
final Widget child;
MyGyro({this.child});
@override
_MyGyroState createState() => _MyGyroState();
}
class _MyGyroState extends State<MyGyro> {
double gyroX = 0;
double gyroY = 0;
@override
void initState() {
super.initState();
gyroscopeEvents.listen((GyroscopeEvent event) {
setState(() {
gyroX = ((event.x * 100).round() / 100).clamp(-1.0, 1.0) * -1;
gyroY = ((event.y * 100).round() / 100).clamp(-1.0, 1.0);
});
});
}
@override
Widget build(BuildContext context) {
return Container(
height: 100,
width: 100,
child: Transform.translate(
offset: Offset(gyroY, 0),
child: Container(
child: Center(
child: Column(
children: [Text("X: ${gyroX}"), Text("Y: ${gyroY}"),],
),
),
),
),
);
}
}
我发现这纯粹是我使用的 sensors 包的问题,要么他们在侦听传感器事件时硬编码了一个较慢的间隔,要么他们只是使用默认间隔IOS频道。
所以,我找到了另一个名为 flutter_sensors 的软件包,它解决了这个问题。访问传感器事件非常简单API,但它允许您更改时间间隔。
我一直在尝试使用 sensors package, however, the result seems to be very laggy. I have found a similar project on YouTube 实现一个陀螺仪图像查看器,它试图实现类似的目标,但正如您在视频中看到的那样,动画也非常滞后。
下面的代码只是简单地从事件中输出数据,我注意到数据的更新是如何在两次更新之间滞后 50 毫秒的。
有没有办法使动画更平滑或更快地更新数据?或者这是 Flutter 的限制?
注意: 我已经按照其他帖子的建议尝试了 --release 版本,但结果保持不变。
import 'package:sensors/sensors.dart';
class MyGyro extends StatefulWidget {
final Widget child;
MyGyro({this.child});
@override
_MyGyroState createState() => _MyGyroState();
}
class _MyGyroState extends State<MyGyro> {
double gyroX = 0;
double gyroY = 0;
@override
void initState() {
super.initState();
gyroscopeEvents.listen((GyroscopeEvent event) {
setState(() {
gyroX = ((event.x * 100).round() / 100).clamp(-1.0, 1.0) * -1;
gyroY = ((event.y * 100).round() / 100).clamp(-1.0, 1.0);
});
});
}
@override
Widget build(BuildContext context) {
return Container(
height: 100,
width: 100,
child: Transform.translate(
offset: Offset(gyroY, 0),
child: Container(
child: Center(
child: Column(
children: [Text("X: ${gyroX}"), Text("Y: ${gyroY}"),],
),
),
),
),
);
}
}
我发现这纯粹是我使用的 sensors 包的问题,要么他们在侦听传感器事件时硬编码了一个较慢的间隔,要么他们只是使用默认间隔IOS频道。
所以,我找到了另一个名为 flutter_sensors 的软件包,它解决了这个问题。访问传感器事件非常简单API,但它允许您更改时间间隔。