应用程序打开时制作一个 Flutter 警报对话框

Make a Flutter alertdialog when the app open

所以我希望我的 Flutter 应用程序在应用程序打开时立即生成一个警告对话框,并在我摇动手机时使其崩溃我该如何实现?

我不会给你确切的解决方案,但我会尽力指导你。

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

您可以使用 initState method inside State of StatefulWidget 在启动时调用 showDialog(当您的页面是第一次构建时)。

有一个 plugin 用于检测 phone 抖动。

当你检测到抖动时,你应该检查对话框是否打开(可能存储一些标志),如果打开,调用 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.

中的依赖项