这个周末我刚刚开始使用Flutter,并且取得了很大的进展。我有一个应用程序,简单地改变屏幕上的图像时,图像被点击,或者,如果手机是摇晃。第一部分很简单,只要点击一下,我的图像就会改变。在摇晃的部分挣扎。我一直在看传感器包,但没有太多的运气(可能是因为我不完全理解我在寻找什么!)。我是否只想让应用程序侦听某个加速度计发生变化的时间,如果是这样的话,运行我的更改图像功能?如果是这样,那么最好的方法是什么?欢迎任何其他想法!感谢所有人:)
更新:这是我到目前为止所拥有的,几乎和我从Shake文档中读到的一样。但shake上什么也没发生。
import 'package:flutter/material.dart';
import 'package:shake/shake.dart';
void main() {
runApp(DemoPage());
}
String mytext = "Martini?";
class DemoPage extends StatefulWidget {
@override
_DemoPageState createState() => _DemoPageState();
}
class _DemoPageState extends State<DemoPage> {
@override
void initState() {
super.initState();
ShakeDetector detector = ShakeDetector.waitForStart(onPhoneShake: () {
mytext = "Shaken, not stirred";
print("hello");
});
detector.startListening();
// To close: detector.stopListening();
// ShakeDetector.waitForStart() waits for user to call detector.startListening();
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Container(
child: Padding(padding: const EdgeInsets.all(50),child:
Text(
mytext,
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 25,
),
)))));
}
}发布于 2019-11-18 08:16:54
使用this包来识别摇动事件并执行一些操作。
要收听电话抖动:
ShakeDetector detector = ShakeDetector.autoStart(
onPhoneShake: () {
// Do stuff on phone shake
}
);或
ShakeDetector detector = ShakeDetector.waitForStart(
onPhoneShake: () {
// Do stuff on phone shake
}
);
detector.startListening();要停止侦听,请执行以下操作:
detector.stopListening();要在您的pubspec.yaml文件中安装此软件包,请访问this链接。

示例可以在this链接上找到。
import 'package:flutter/material.dart';
import 'package:shake/shake.dart';
class DemoPage extends StatefulWidget {
@override
_DemoPageState createState() => _DemoPageState();
}
class _DemoPageState extends State<DemoPage> {
@override
void initState() {
super.initState();
ShakeDetector detector = ShakeDetector.autoStart(onPhoneShake: () {
// Do stuff on phone shake
});
// To close: detector.stopListening();
// ShakeDetector.waitForStart() waits for user to call detector.startListening();
}
@override
Widget build(BuildContext context) {
return Scaffold();
}
}发布于 2020-09-17 03:18:06
我正在做一个和你的类似的应用程序。当我们摇动手机时,你只是想改变图像或做一些其他事情,对吗?
'package:shake/shake.dart'包非常适合这项工作。这个包有一些预定义的函数,它使用加速度计从我们的手机读数,并检测何时我们已经摇晃我们的手机,当我们已经停止。
而不是使用:
ShakeDetector detector = ShakeDetector.waitForStart(onPhoneShake: () {
mytext = "Shaken, not stirred";
print("hello");
});我已经使用了:
ShakeDetector detector = ShakeDetector.autoStart(onPhoneShake: () {
setState(() {
//Code for changing image or something else.
});
});这解决了问题,当我摇动手机并停止时,图像在我停止摇动后立即发生了变化。
我不知道这个包中给出的其他函数,比如waitForStart()和stopListening()函数。上面的autoStart()函数做了我想要的事情。
发布于 2020-12-25 19:37:54
https://stackoverflow.com/questions/58905928
复制相似问题