Flutter开发 - 重力感应和陀螺仪相关功能的开发

2,647 阅读1分钟

最近有一个重力感应的功能,需求是图片根据屏幕倾斜的方向向对应方向移动,大家应该都见过这个功能吧。

所以这个就需要重力感应或者陀螺仪的功能来判断倾斜的方向,轴距的变化。原生里面已经很成熟了,但是在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,不过知道大家懒,哈哈,博主提炼出来了,上传给大家。
点击下载