一个对话框队列,供您管理要在 Flutter 平台上显示的对话框

中文

特点

  • 支持按顺序弹出对话框
  • 支持按优先级弹出对话框
  • 支持在队列中去重对话框
  • 支持暂停\恢复弹出操作

  queue-effect.gif

入门

安装

将以下行添加到您的应用模块的pubspec.yaml文件中。然后运行flutter pub get。

dependencies:
  dialog_queue: ">=1.0.1"
  ...

用法

步骤 1:在您的MaterialApp中添加DialogQueueRouteObserver

class App extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      navigatorObservers: [DialogQueueRouteObserver()],
    );
  }
}

步骤 2:将“showDialog”替换为DialogQueue.instance.addDialog

旧用法

showModalBottomSheet<T>(
    context: context,
    backgroundColor: Colors.white,
    isScrollControlled: true,
    isDismissible: false,
    builder: (BuildContext context) {
      return SafeArea(child: Text('Hello DialogQueue'));
    },
  );

新用法

DialogQueue.instance.addDialog(DialogQueueElement(() {
    return showModalBottomSheet(
        context: context,
        backgroundColor: Colors.white,
        isScrollControlled: true,
        isDismissible: false,
        builder: (BuildContext context) {
            return SafeArea(child: Text('Hello DialogQueue'));
        }
    );
}, tag: tag, priority: priority, uniqueKey: uniqueKey));

其他用法

  1. 您可以随时暂停\恢复队列的弹出操作

DialogQueue.instance.resume();
DialogQueue.instance.pause();
  1. 如果您想在路由到PageB时中断队列,并在PageA弹出后恢复它,那么可以使用
DialogQueue.instance.pushNameThenResume(navigatorState, PageB);

auto-resume-effect.gif

GitHub

查看 Github