所以我希望Flutter应用程序在打开时立即发出警报对话框,并在摇动手机时使其崩溃,我该如何制作呢?
答案 0 :(得分:0)
我不会为您提供确切的解决方案,但我会尽力为您提供指导。
showDialog函数可让您打开模式对话框。
您可以在initState的State内使用StatefulWidget方法在开始时(首次构建页面时)调用showDialog。
有一个plugin用于检测电话震动。
检测到抖动时,应检查对话框是否已打开(可能存储了一些标志),如果对话框已打开,请调用Navigator.of(context).pop();
将其关闭。
UPD:好的,解决方法来了:
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
ShakeDetector detector;
bool dialogOpened = true;
@override
void initState() {
WidgetsBinding.instance.addPostFrameCallback((_) {
showDialog(
context: context,
builder: (cxt) => AlertDialog(content: Text('shake to close')),
).then((_) => dialogOpened = false);
});
detector = ShakeDetector.autoStart(
onPhoneShake: () {
if (dialogOpened) {
Navigator.of(context).pop();
}
detector?.stopListening();
detector = null;
}
);
super.initState();
}
@override
void dispose() {
detector?.stopListening();
super.dispose();
}
@override
Widget build(BuildContext context) {...}
}
还将shake_event: ^0.0.4
添加到 pubspec.yaml 中的依赖项。