Flutter Widget 之 sensors_plus

643 阅读2分钟

你是否曾经在房间郑手机,并想知道它何时停止移动?

传感器可以帮助您!

欲访问传感器 请使用sensors_plus包。

它使您可以访问两个传感器,分别是Accelerometer和Gyroscope

ezgif.com-gif-maker.gif

您可以在每个传感器中获得一个分流, 例如,AccelerometerEvent的分流会告诉您手机的去向。分流发送的事件包含X,Y和Z值,表示手机位置变化的速度

但这些数字是司机上代表什么呢?

void initState() {
    accelerometerEvents.listen(
        (AccelerometerEvent event) {
            var x = event.x;
            var y = event.y;
            var z = event.z;
        }
    ),
}

把你的手机想象成空间中的一个点,它没有在动,对吧?

image.png

事实也许不然,你在一个有中立的星球上,对吧?

即使它看起来不像在动,实际上,它也试图在向下移动。

至少在地球上,如果上下方,没有发生任何其他事情,那就是Y如果您将手机直立,则始终具有恒定的9.8 meters/second 向下力,

void initState() {
    accelerometerEvent.listen(
        (AccelerometterEvent event) {
            var x = event.x;// ~0
            var y = event.y;// ~9.8
            var z = event.z;// ~0
        }
    ),
}

但有时重力有点儿难以计算,这种情况下请使用userAccelerometerEvent提呼喊AccelerometerEvent,它告诉您手机在没有中立的情况下运动,保持手机完全稳定杆它在每个方向的位置变化都为零。

void initState() {
    userAccelerometerEvents.listen(
        (UserAccelerometerEvent event) {
            var x = event.x; // ~0
            var y = event.y; // ~0
            var z = event.z; // ~0
        }
    ),
}

接下来,将您的手机想象成一个扁平的直立正方形

image.png

现在,倾斜它

image.png

它是否继续倾斜得更多?

与Accelerometer一样 sensors_plus可让您通过发送事件的分流访问gyroscope,注意听,当事情发生变化时,它会给你GyroscopeEvents,它也包括X、Y和Z,它们代表了手机的方向倾斜度如何变化。保持它的完全静止,一切将会归零

void initState() {
    gyroscpreEvents.listen() {
       (GyroscopeEvent event) {
           var x = event.x;// ~0
           var y = event.y;// ~0
           var z = event.z;// ~0
       },
    }
}

做一些激进的事情。比如,把它向左旋转。您会看到一些新数字代表它转多块

image.png

void initState() {
    gyroscopeEvent.listen(
        (GyroscopeEvent event) {
            var x = event.x; // ~0
            var y = event.y; // ~0
            var z = event.z; // ~1.0
        }
    ),
}

该如何处理这些信息呢?随意

image.png

但是,也许可以在手机崩溃前保存这些数据

image.png

如果想了解有关sensors_plus的内容,或者关于Flutter的其他功能,请访问flutter.dev

原文翻译自视频:视频地址