Toastification pub 包

Toastification 是一个 Flutter 包,允许开发人员轻松地在其应用程序中显示 Toast 通知。Toast 通知是一种弹出消息,通常出现在屏幕上并在短时间内消失。它们通常用于向用户显示信息、警报或确认。

Toastification 包的一个优点是它能够处理多个 Toast 消息。使用 Toastification,开发人员可以一次显示多个 Toast 通知并将它们显示在队列中。这意味着,如果多个通知同时触发,它们将一个接一个地显示,而不是在屏幕上重叠。

总而言之,Toastification 是一个有用的包,适用于想要在应用程序中添加 Toast 通知而无需从头开始编写代码的 Flutter 开发人员。

带有自定义动画的示例视频

20230410_234129.mp4

Web 示例 移动端示例

安装

要使用 Toastification,您需要将其添加到 pubspec.yaml 文件中

dependencies:
  toastification: ^0.0.2

然后,运行 flutter pub get 来安装该包。

用法

要在您的 Flutter 应用中使用 Toastification,请先导入该包

import 'package:toastification/toastification.dart';

调用 show 方法来显示一个 Toast 通知

toastification.show(
  context: context,
  title: 'Hello, world!',
  autoCloseDuration: const Duration(seconds: 5),
);

或者,您可以使用 Toastification 类的构造函数并调用 show 方法

Toastification().show(
  context: context,
  title: 'Hello, world!',
  autoCloseDuration: const Duration(seconds: 5),
);

这两种方法具有相同的行为

这将显示一个文本为“Hello, world!”的 Toast 消息。

您可以将其他参数传递给 show() 方法来自定义 Toast 消息的外观

toastification.show(
  context: context,
  autoCloseDuration: const Duration(seconds: 5),
  title: 'Hello, World!',
  description: 'This is a sample toast message.',
  animationDuration: const Duration(milliseconds: 300), 
  animationBuilder: (context, animation, child) {
    return RotationTransition(
      turns: animation,
      child: child,
    );
  },
  icon: Icon(Icons.check),
  backgroundColor: const Color(0xff1976d2),
  foregroundColor: Colors.white,
  brightness: Brightness.light,
  padding: const EdgeInsets.all(16),
  margin: const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
  borderRadius: BorderRadius.circular(8),
  elevation: 4,
  onCloseTap: () {
    // Do something when the toast is closed
  },
  showProgressBar: true,
  showCloseButton: true,
  closeOnClick: false,
  pauseOnHover: true,
);
  • autoCloseDuration (可选):一个 Duration 对象,指定 Toast 消息显示多长时间后自动关闭。如果未提供此参数,则将使用默认的 2 秒时长。
  • overlayState (可选):一个 OverlayState 对象,表示将显示 Toast 消息的 overlay 的状态。如果未提供此参数,则将创建一个新的 OverlayState 对象。title (必需):一个字符串,表示 Toast 通知的主要消息。
  • description (可选):一个字符串,表示 Toast 通知中的辅助消息,显示在主要消息下方。
  • icon (可选):一个 Widget,表示要在 Toast 通知中显示的图标。
  • animationDuration(可选):用于自定义动画的 Duration。默认为 null(无自定义动画)。
  • animationBuilder (可选):一个自定义动画构建器函数,它接收 BuildContextAnimation 对象和 child widget 作为参数。默认为 null(无自定义动画)。您可以通过提供此字段来创建自定义过渡。
  • backgroundColor (可选):一个 Color 对象,表示 Toast 通知的背景颜色。默认情况下,背景颜色设置为 Colors.grey[700]。
  • foregroundColor (可选):一个 Color 对象,表示 Toast 通知的前景(文本)颜色。默认情况下,前景颜色设置为白色。
  • brightness (可选):一个 Brightness 对象,表示 Toast 通知 的亮度。默认情况下,亮度设置为 Brightness.dark。
  • padding (可选):一个 EdgeInsetsGeometry 对象,指定 Toast 通知 的内边距。
  • margin (可选):一个 EdgeInsetsGeometry 对象,指定 Toast 通知 的外边距。
  • borderRadius (可选):一个 BorderRadiusGeometry 对象,指定 Toast 通知 的圆角。
  • elevation (可选):一个 double 值,指定 Toast 通知 的阴影。
  • onCloseTap (可选):当用户点击 Toast 通知 的关闭按钮时将调用的 VoidCallback 函数。
  • showProgressBar (可选):一个布尔值,指示是否在 Toast 通知 上显示进度条。默认情况下,进度条隐藏。
  • showCloseButton (可选):一个布尔值,指示是否在 Toast 通知 上显示关闭按钮。默认情况下,会显示关闭按钮。
  • closeOnClick (可选):一个布尔值,指示 Toast 通知 在点击时是否关闭。默认情况下,Toast 通知 在点击时不会关闭。
  • pauseOnHover (可选):一个布尔值,指示当鼠标指针悬停在 Toast 通知 上时是否暂停 Toast 通知。默认情况下,Toast 通知 在悬停时不会暂停。

其他预定义样式方法

Toastification 包还提供了四种预定义方法,可用于快速创建和显示具有不同样式的 Toast 消息,具体取决于正在显示的消息类型。

  • showSuccess:显示带有绿色背景和对勾图标的成功消息。
  • showError:显示带有红色背景和错误图标的错误消息。
  • showInfo:显示带有蓝色背景和信息图标的信息消息。
  • showWarning:显示带有黄色背景和警告图标的警告消息。

这四种方法都接受与 show() 方法相同的参数集,允许您根据需要自定义 Toast 消息的外观和行为。

以下是使用每种预定义方法的示例

showSuccess()

显示带有绿色背景和对勾图标的成功消息。

toastification.showSuccess(
  context: context,
  title: 'Success!',
  autoCloseDuration: const Duration(seconds: 5),
);

showError()

显示带有红色背景和错误图标的错误消息。

toastification.showError(
  context: context,
  title: 'Error!',
  autoCloseDuration: const Duration(seconds: 5),
);

showInfo()

显示带有蓝色背景和信息图标的信息消息。

toastification.showInfo(
  context: context,
  title: 'Info',
  autoCloseDuration: const Duration(seconds: 5),
);

showWarning()

显示带有黄色背景和警告图标的警告消息。

toastification.showWarning(
  context: context,
  title: 'Warning!',
  autoCloseDuration: const Duration(seconds: 5),
);

使用 showCustom() 创建您自己的 Toast 样式

如果您希望对 Toast 消息的外观和行为有更多控制,可以使用 showCustom() 方法创建完全自定义的 Toast 消息。此方法允许您传递一个返回您要显示的 Widget 的构建器函数,从而使您能够完全控制 Toast 的布局、样式和交互性。

使用 showCustom(),您的可能性是无限的。您可以创建与您应用的独特视觉风格相匹配的自定义 Toast 消息,或者您可以添加按钮和滑块等交互式元素,使您的 Toast 消息更具吸引力和动态性。

以下是如何使用 showCustom() 创建一个自定义 Toast 消息的示例,其中包含一个允许用户执行操作的按钮

toastification.showCustom(
  context: context,
  builder: (BuildContext context, ToastificationItem holder) {
    return Container(
      decoration: BoxDecoration(
        borderRadius: BorderRadius.circular(8),
        color: Colors.blue,
      ),
      padding: const EdgeInsets.all(16),
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          Text('Custom Toast', style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold)),
          SizedBox(height: 8),
          Text('This is a custom toast message!', style: TextStyle(color: Colors.white)),
          SizedBox(height: 16),
          ElevatedButton(
            onPressed: () {
              // Perform an action when the button is pressed
            },
            child: Text('Do Something'),
          ),
        ],
      ),
    );
  },
  autoCloseDuration: const Duration(seconds: 5),
);

使用 showCustom(),您的想象力是唯一的限制。创建一个脱颖而出的 Toast 消息,为您的应用增添一丝个性!

自定义动画

您可以通过提供动画持续时间的 Duration 并使用 animationBuilder 参数实现自己的动画构建器函数来定制 Toast 通知 的动画。以下是如何使用自定义动画的示例

toastification.show(
  context: context,
  title: 'Default',
  // .... Other parameters
  animationDuration: const Duration(milliseconds: 300),
  animationBuilder: (context, animation, child) {
    return RotationTransition(
      turns: animation,
      child: child,
    );
  },
);

管理您的通知

除了显示 Toast 消息之外,Toastification 包还提供了用于管理和关闭现有通知的方法。以下是可用方法:

查找通知项

查找具有给定 ID 的通知

final notification = Toastification().findToastificationItem('my_notification');

关闭通知

从屏幕上删除特定的通知。

final notification = Toastification().show(
  context: context,
  title: 'Hello',
  autoCloseDuration: const Duration(seconds: 5),
);

Toastification().dismiss(notification);

按 ID 关闭通知

从屏幕上删除具有给定 ID 的通知。

Toastification().dismissById('my_notification_id');

关闭第一个通知

从屏幕上删除显示的最先的通知。

Toastification().dismissFirst();

关闭最后一个通知

从屏幕上删除显示的最末的通知。

Toastification().dismissLast();

贡献

我们随时欢迎您的贡献!如果您有任何建议、错误报告或功能请求,请在 GitHub 存储库中打开一个 issue。

如果您想为该项目做出贡献,请阅读 CONTRIBUTING.md 文件以获取有关如何贡献的更多信息。

许可证

Toastification 在 BSD-3-Clause 许可证下发布。您可以在存储库根目录的 LICENSE 文件中找到许可证的全文。

* 在 ChatGPT 的帮助下撰写

GitHub

查看 Github