最近有一个重力感应的功能,需求是图片根据屏幕倾斜的方向向对应方向移动,大家应该都见过这个功能吧。
所以这个就需要重力感应或者陀螺仪的功能来判断倾斜的方向,轴距的变化。原生里面已经很成熟了,但是在flutter中还是很难找到相关的资料的。
你以为博主要自己写一个用?那你就天真了,前人栽树,后人乘凉,博主找到了一个pub可以用,网上一查,找不到使用记录啊,所以就分享出来给大家,减少大家自己开发plugin的损耗。
pub名叫:sensors
给大家演示下代码:
void initState() {
super.initState();
///加速度传感器
_streamSubscriptions
.add(accelerometerEvents.listen((AccelerometerEvent event) {
setState(() {
_accelerometerValues = <double>[event.x, event.y, event.z];
});
}));
///陀螺仪传感器
_streamSubscriptions.add(gyroscopeEvents.listen((GyroscopeEvent event) {
setState(() {
_gyroscopeValues = <double>[event.x, event.y, event.z];
});
}));
///不受重力影响的加速器
_streamSubscriptions
.add(userAccelerometerEvents.listen((UserAccelerometerEvent event) {
setState(() {
_userAccelerometerValues = <double>[event.x, event.y, event.z];
});
}));
}
从上面代码可以看出这里是包含加速度传感器,陀螺仪传感器和不受重力影响的加速度三种监听类型返回的x,y,z轴信息的,根据这些信息就可以做很多的功能,比如开篇提到的图片位置移动的功能,这个功能xx宝用的是比较多的,年度账单必用的吧。
使用完了记得也要取消监听的任务哦:
void dispose() {
super.dispose();
for (StreamSubscription<dynamic> subscription in _streamSubscriptions) {
subscription.cancel();
}
}
官方提供了一个demo,不过知道大家懒,哈哈,博主提炼出来了,上传给大家。
点击下载