Flutter现代化对话框插件modern_dialog的使用

发布于 1周前 作者 sinazl 来自 Flutter

Flutter现代化对话框插件modern_dialog的使用

modern_dialog 是一个用于Flutter应用程序的现代化自定义对话框插件,它具有简单实现、适应Android和iOS平台、多种现成布局以及完全自定义的特点。

🎯 特性

  • 简单实现
  • 适应Android & iOS
  • 各种现成可用的布局
  • 完全自定义

📦 使用

Standard Dialog 标准对话框

标准对话框是最基本的一种对话框,通常包含标题、内容和一个确认按钮。以下是创建标准对话框的示例:

ModernDialog.showStandard(
    context,
    title: "Title",
    content: const Text("description"),
    buttonTitle: "Save",
    onAccept: () => print("do sometime"),
);

更多自定义选项

你可以通过添加更多参数来自定义标准对话框:

ModernDialog.showStandard(
    context,
    icon: const Icon(Icons.phone_android),
    mainButtonColor: Colors.blue,
    cancelButtonColor: Colors.red,
    onCancel: (){},
    cancelButtonTitle: "",
    dismissibleDialog: true,
    backgroundColor: Colors.orange,
    disableTintColor: true,
    shouldCloseOnMainButton: true,
    title: "Title",
    content: const Text("description"),
    buttonTitle: "Save",
    onAccept: () => print("do sometime"),
);

Info Dialog 提示对话框

提示对话框是一种只有同意按钮的对话框,适用于提供信息或提示。以下是如何创建提示对话框的示例:

ModernDialog.showInfo(
    context,
    content: const Text("You need to know this!"),
);

更多自定义选项

你可以通过添加更多参数来自定义提示对话框:

ModernDialog.showInfo(
    context,
    title: "Title",
    buttonTitle: "Save",
    mainButtonColor: Colors.red,
    dismissibleDialog: true,
    backgroundColor: Colors.grey,
    disableTintColor: true,
    content: const Text("You need to know this!"),
);

Trailing Action Dialog 带尾随动作的对话框

当需要一个带有两个重要操作按钮的对话框时,可以使用带尾随动作的对话框。以下是如何创建带尾随动作的对话框的示例:

ModernDialog.showTrailingAction(
    context,
    content: const Text("This a dialog showing a trailing action button"),
    buttonTitle: 'Save',
    onAccept: () => print("do sometime"),
    trailingButtonTitle: "Open Settings",
    onTrailingPressed: () => print("do sometime"),
);

更多自定义选项

你可以通过添加更多参数来自定义带尾随动作的对话框:

ModernDialog.showTrailingAction(
    context,
    title: "Title",
    mainButtonColor: Colors.red,
    trailingButtonColor: Colors.red,
    dismissibleDialog: true,
    backgroundColor: Colors.grey,
    disableTintColor: true,
    content: const Text("This a dialog showing a trailing action button"),
    buttonTitle: 'Save',
    onAccept: () => print("do sometime"),
    trailingButtonTitle: "Open Settings",
    onTrailingPressed: () => print("do sometime"),
);

Vertical Dialog 垂直对话框

垂直对话框是按钮垂直排列的对话框。你可以通过DialogButton类来添加自定义按钮。以下是如何创建垂直对话框的示例:

ModernDialog.showVerticalDialog(
    context,
    content: const Text("description"),
    buttons: [
      DialogButton(
        title: "Discard",
        onPressed: () => print("do sometime"),
        color: Colors.red,
      ),
      DialogButton(
        title: "Allow all changes",
        onPressed: () => print("do sometime"),
      ),
    ],
);

更多自定义选项

你可以通过添加更多参数来自定义垂直对话框:

ModernDialog.showVerticalDialog(
    context,
    icon: const Icon(Icons.ac_unit),
    title: "Title",
    dismissibleDialog: true,
    backgroundColor: Colors.grey,
    disableTintColor: true,
    content: const Text("description"),
    buttons: [
      DialogButton(
        title: "Discard",
        onPressed: () => print("do sometime"),
        color: Colors.red,
      ),
      DialogButton(
        title: "Allow all changes",
        onPressed: () => print("do sometime"),
      ),
    ],
);

Custom Dialog 自定义对话框

自定义对话框允许你添加任何自定义的小部件。以下是如何创建自定义对话框的示例:

ModernDialog.showCustom(
    context,
    view: const Text("Add any view you would like"),
);

更多自定义选项

你可以通过添加更多参数来自定义自定义对话框:

ModernDialog.showCustom(
    context,
    borderRadius: 70,
    disablePadding: true,
    dismissibleDialog: true,
    backgroundColor: Colors.grey,
    disableTintColor: true,
    view: const Text("Add any view you would like"),
);

🧱 参数说明

名称 描述 数据类型 默认值
icon 显示在顶部中心的图标 Widget -
title 对话框的标题 String -
content 显示对话框内容的小部件 Widget -
buttonTitle 主按钮的文本 String -
onAccept 处理主按钮点击事件的函数 Function() -
onCancel 关闭对话框时执行的操作 Function() -
cancelButtonTitle 取消按钮的文本 String “Cancel”
cancelButtonColor 取消按钮的颜色 Color -
mainButtonColor 主按钮的颜色 Color ColorScheme.primary
shouldCloseOnMainButton 按下主按钮时关闭对话框 bool true
dismissibleDialog 允许对话框可取消 bool true
backgroundColor 对话框的背景颜色(仅限Android) Color white
disableTintColor 禁用应用于背景颜色的颜色色调(仅限Android) bool false

Vertical Dialog 参数

名称 描述 数据类型 默认值
buttons 垂直对话框的自定义按钮列表 List<DialogButton> -

Trailing Dialog 参数

名称 描述 数据类型 默认值
trailingButtonTitle 尾随按钮的文本(次要按钮) String -
onTrailingPressed 处理尾随按钮点击事件的函数 Function() -
trailingButtonColor 尾随按钮的颜色 Color -

Custom Dialog 参数

名称 描述 数据类型 默认值
view 自定义对话框的小部件 Widget -
borderRadius 覆盖默认对话框填充 double -
disablePadding 禁用对话框的默认填充 bool false
backgroundColor 对话框的背景颜色(仅限Android) Color white
disableTintColor 禁用应用于背景颜色的颜色色调(仅限Android) bool false

示例代码

以下是完整的示例代码,展示了如何在Flutter应用程序中使用modern_dialog插件:

import 'package:flutter/material.dart';
import 'package:modern_dialog/dialogs/vertical.dart';
import 'package:modern_dialog/modern_dialog.dart';

void main() => runApp(const MyApp());

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(
        useMaterial3: true,
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
      ),
      home: const HomePage(),
    );
  }
}

class HomePage extends StatelessWidget {
  const HomePage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: const Text("Modern Dialog"),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            ElevatedButton(
              onPressed: () {
                ModernDialog.showStandard(
                  context,
                  title: "Title",
                  content: const Text("description"),
                  buttonTitle: "Save",
                  onAccept: () => print("do sometime"),
                );
              },
              child: const Text("Standard Dialog"),
            ),
            const SizedBox(height: 24),
            ElevatedButton(
              onPressed: () {
                ModernDialog.showInfo(
                  context,
                  content: const Text("You need to know this!"),
                );
              },
              child: const Text("Info Dialog"),
            ),
            const SizedBox(height: 24),
            ElevatedButton(
              onPressed: () {
                ModernDialog.showTrailingAction(
                  context,
                  content: const Text("This a dialog showing a trailing action button"),
                  buttonTitle: 'Save',
                  onAccept: () => print("do sometime"),
                  trailingButtonTitle: "Open Settings",
                  onTrailingPressed: () => print("do sometime"),
                );
              },
              child: const Text("Trailing Action Dialog"),
            ),
            const SizedBox(height: 24),
            ElevatedButton(
              onPressed: () {
                ModernDialog.showVerticalDialog(
                  context,
                  content: const Text("Here you can add buttons horizontally"),
                  buttons: [
                    DialogButton(
                      title: "Discard",
                      onPressed: () => print("do sometime"),
                      color: Colors.red,
                    ),
                    DialogButton(
                      title: "Allow all changes",
                      onPressed: () => print("do sometime"),
                    ),
                  ],
                );
              },
              child: const Text("Vertical Dialog"),
            ),
            const SizedBox(height: 24),
            ElevatedButton(
              onPressed: () {
                ModernDialog.showCustom(
                  context,
                  view: const Text("Add any view you would like"),
                );
              },
              child: const Text("Custom Dialog"),
            ),
          ],
        ),
      ),
    );
  }
}

通过以上代码和说明,你应该能够轻松地在Flutter项目中集成并使用modern_dialog插件来创建各种类型的现代化对话框。


更多关于Flutter现代化对话框插件modern_dialog的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter现代化对话框插件modern_dialog的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何在Flutter项目中使用modern_dialog插件的示例代码。modern_dialog是一个现代化的对话框插件,提供了多种美观且易用的对话框样式。

首先,确保你已经在pubspec.yaml文件中添加了modern_dialog依赖:

dependencies:
  flutter:
    sdk: flutter
  modern_dialog: ^x.y.z  # 请替换为最新版本号

然后运行flutter pub get来安装依赖。

接下来是一个简单的示例,展示如何使用modern_dialog来创建一个基本的对话框:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Modern Dialog Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Modern Dialog Example'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            showModernDialog(
              context: context,
              title: 'This is a Title',
              description: 'This is a description text.',
              btnOkText: 'OK',
              onPressed: () {
                // 当点击OK按钮时执行的回调
                print('OK button pressed');
              },
              // 你可以根据需要自定义更多参数,比如btnCancelText, btnCancelColor等
            );
          },
          child: Text('Show Dialog'),
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个简单的Flutter应用,其中包含一个按钮。当点击按钮时,会显示一个使用modern_dialog插件创建的对话框。对话框包含标题、描述文字和一个OK按钮。

showModernDialog函数接受多个参数,允许你自定义对话框的各个方面。在上面的例子中,我们设置了标题(title)、描述(description)、OK按钮的文本(btnOkText)以及点击OK按钮时的回调(onPressed)。

你可以查阅modern_dialog的官方文档以了解更多高级用法和自定义选项。例如,你可能想要添加取消按钮、自定义对话框的背景颜色或字体样式等。

回到顶部