应用打开时发出Flutter警报对话框

时间:2019-11-09 14:45:19

标签: flutter shake flutter-alertdialog

所以我希望Flutter应用程序在打开时立即发出警报对话框,并在摇动手机时使其崩溃,我该如何制作呢?

1 个答案:

答案 0 :(得分:0)

我不会为您提供确切的解决方案,但我会尽力为您提供指导。

showDialog函数可让您打开模式对话框。

您可以在initStateState内使用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 中的依赖项。