Flutter美观对话框插件pretty_dialog的使用

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

Flutter美观对话框插件pretty_dialog的使用

简介

pretty_dialog 是一个用于在 Flutter 应用程序中创建美观对话框和提示框的包。它提供了多种类型的对话框和提示框,包括警报对话框、操作对话框、选项对话框以及各种类型的提示框。

以下是如何使用 pretty_dialog 的详细说明和完整示例。


使用方法

警报对话框 (Alert Dialog)

用于显示成功、警告或错误的消息。

PrettyDialog.showAlertDialog(
    context,
    alertType: AlertType.success, // 可选值:success, warning, error
    okText: "OK",
    title: "您的账户已成功创建",
);

操作对话框 (Action Dialog)

用于显示带有确认和取消按钮的对话框。

var result = await PrettyDialog.showActionDialog(context,
    icon: CupertinoIcons.person_crop_circle_badge_xmark,
    iconColor: Colors.deepOrangeAccent,
    yesText: "是的,删除",
    yesColor: Colors.deepOrangeAccent,
    cancelText: "否",
    title: "您确定要删除您的账户吗?",
    subTitle: "所有数据将被永久删除,无法撤销此操作。",
);
// 返回值:
// - `true` 表示用户点击了“是的,删除”
// - `false` 表示用户点击了“否”
// - `null` 表示用户点击了“取消”

选项对话框 (Options Dialog)

用于显示带有多个选项的对话框。

var result = await PrettyDialog.showOptionsDialog(context,
    icon: FontAwesomeIcons.dumbbell,
    title: "为什么锻炼身体?",
    options: [
      "为了增肌",
      "为了减脂",
      "为了保持健康",
    ],
);
// 返回值是一个整数,表示用户选择的选项的索引

错误提示框 (Toast)

用于显示错误信息。

PrettyToast.showErrorToast(context, "出错了!");

进度提示框 (Progress Toast)

用于显示进度条。

PrettyToast.showProgressToast(context, text: "正在处理...");
Future.delayed(const Duration(seconds: 3), () => PrettyToast.hideProgressToast());

完整示例

以下是一个完整的 Flutter 示例,展示了如何使用 pretty_dialog 包的各种功能。

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:pretty_dialog/pretty_dialog.dart';

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

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            ElevatedButton(
              child: const Text('警报对话框'),
              onPressed: () => PrettyDialog.showAlertDialog(
                context,
                alertType: AlertType.success,
                okText: "确定",
                title: "您的账户已成功创建",
              ),
            ),
            ElevatedButton(
              child: const Text('确认对话框'),
              onPressed: () => PrettyDialog.showActionDialog(context,
                  icon: CupertinoIcons.person_crop_circle_badge_xmark,
                  iconColor: Colors.deepOrangeAccent,
                  yesText: "是的,删除",
                  yesColor: Colors.deepOrangeAccent,
                  cancelText: "否",
                  title: "您确定要删除您的账户吗?",
                  subTitle: "所有数据将被永久删除,无法撤销此操作。"),
            ),
            ElevatedButton(
              child: const Text('选项对话框'),
              onPressed: () => PrettyDialog.showOptionsDialog(context,
                  icon: FontAwesomeIcons.dumbbell,
                  title: "为什么锻炼身体?",
                  options: [
                    "为了增肌",
                    "为了减脂",
                    "为了保持健康",
                  ]),
            ),
            ElevatedButton(
              child: const Text('错误提示框'),
              onPressed: () => PrettyToast.showErrorToast(context, "出错了!"),
            ),
            ElevatedButton(
              child: const Text('进度提示框'),
              onPressed: () {
                PrettyToast.showProgressToast(context, text: "正在处理...");
                Future.delayed(const Duration(seconds: 3), () => PrettyToast.hideProgressToast());
              },
            )
          ],
        ),
      ),
    );
  }
}

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

1 回复

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


pretty_dialog 是一个用于 Flutter 的插件,可以帮助你快速创建美观且自定义的对话框。这个插件提供了多种预定义的对话框样式,同时也支持高度自定义,使得你可以轻松地创建符合应用风格的对话框。

安装 pretty_dialog

首先,你需要在 pubspec.yaml 文件中添加 pretty_dialog 依赖:

dependencies:
  flutter:
    sdk: flutter
  pretty_dialog: ^1.0.0  # 请检查最新的版本号

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

使用 pretty_dialog

pretty_dialog 提供了多种对话框类型,包括成功、错误、警告、信息等。以下是一些基本的使用示例。

1. 显示一个简单的对话框

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

void showPrettyDialog(BuildContext context) {
  PrettyDialog(
    title: Text('标题'),
    description: Text('这是一个简单的对话框示例。'),
    primaryButton: PrettyDialogButton(
      text: '确定',
      onPressed: () {
        Navigator.pop(context);
      },
    ),
  ).show(context);
}

2. 显示不同类型的对话框

pretty_dialog 提供了几种预定义的对话框类型,如 PrettyDialog.success, PrettyDialog.error, PrettyDialog.warning, PrettyDialog.info

void showSuccessDialog(BuildContext context) {
  PrettyDialog.success(
    title: Text('成功'),
    description: Text('操作成功完成!'),
    primaryButton: PrettyDialogButton(
      text: '确定',
      onPressed: () {
        Navigator.pop(context);
      },
    ),
  ).show(context);
}

void showErrorDialog(BuildContext context) {
  PrettyDialog.error(
    title: Text('错误'),
    description: Text('发生了一个错误,请重试。'),
    primaryButton: PrettyDialogButton(
      text: '确定',
      onPressed: () {
        Navigator.pop(context);
      },
    ),
  ).show(context);
}

3. 自定义对话框

你可以通过 PrettyDialog 构造函数来自定义对话框的外观和行为。

void showCustomDialog(BuildContext context) {
  PrettyDialog(
    title: Text('自定义对话框'),
    description: Text('这是一个自定义的对话框示例。'),
    icon: Icon(Icons.star, color: Colors.yellow, size: 48),
    primaryButton: PrettyDialogButton(
      text: '确定',
      onPressed: () {
        Navigator.pop(context);
      },
    ),
    secondaryButton: PrettyDialogButton(
      text: '取消',
      onPressed: () {
        Navigator.pop(context);
      },
    ),
    cornerRadius: 15,
    backgroundColor: Colors.blue[100],
  ).show(context);
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!