首页 > 解决方案 > 颤振等待直到 AwesomeDialog 关闭

问题描述

我在 Flutter 项目中使用 AwesomeDialog。当这个 AwesomeDialog 显示时,我想停止下一行执行,直到 AwesomeDialog 关闭。

这是我的 AwesomeDialog Show 代码

import 'package:awesome_dialog/awesome_dialog.dart';
import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Page(),
    );
  }
}

class Page extends StatefulWidget {
  @override
  _PageState createState() => _PageState();
}

class _PageState extends State<Page> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            print("aaaaaaaaaaaaaaaaaaaa");
            AwesomeDialog(
              context: context,
              dialogType: DialogType.INFO,
              animType: AnimType.BOTTOMSLIDE,
              title: 'Register Status',
              desc: "Register Successfull",
              btnOkOnPress: () {
                print("bbbbbbbbbbbbbbbbb");
              },
              width: 400,
            )..show();
            print("cccccccccccccccccccc");
          },
          child: Text("Show Dialog"),
        ),
      ),
    );
  }
}

调试控制台:

aaaaaaaaaaaaaaaaaaaa
cccccccccccccccccccc
bbbbbbbbbbbbbbbbb

在我的警报消失之前,我不想打印 ccccccc。

提前致谢

标签: flutterasynchronousdialogsynchronizationalert

解决方案


import 'package:awesome_dialog/awesome_dialog.dart';
import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Page(),
    );
  }
}

class Page extends StatefulWidget {
  @override
  _PageState createState() => _PageState();
}

class _PageState extends State<Page> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            print("aaaaaaaaaaaaaaaaaaaa");
            AwesomeDialog(
              context: context,
              dialogType: DialogType.INFO,
              animType: AnimType.BOTTOMSLIDE,
              title: 'Register Status',
              desc: "Register Successfull",
              btnOkOnPress: () {
                print("bbbbbbbbbbbbbbbbb");
              },
              width: 400,
            )..show().then((value) {
              print("cccccccccccccccccccc");
            });
          },
          child: Text("Show Dialog"),
        ),
      ),
    );
  }
}

推荐阅读