跳到内容

为 Flutter 设置消息收件箱

Flutter 的 Message Inbox(“铃铛图标”应用收件箱)作为一个独立的 pushwoosh_inbox 包提供,请将其与基础的 pushwoosh_flutter 包一起安装。

前提条件

Anchor link to

将 pushwoosh_inbox 添加到您的 pubspec.yaml 文件中。请在 pub.dev 上查看当前版本:

pubspec.yaml
dependencies:
pushwoosh_inbox: '^2.3.24'

显示收件箱

Anchor link to
import 'package:pushwoosh_inbox/pushwoosh_inbox.dart';
PushwooshInbox.presentInboxUI();

这将打开一个原生屏幕(在 iOS 上是视图控制器,在 Android 上是 Activity),并采用 SDK 的默认外观。

自定义样式

Anchor link to

向 presentInboxUI() 传递一个 PWInboxStyle 对象。每个字段都是可选的,如果未设置,则保留其默认值。图像字段是 Flutter 资产路径,必须在您的 pubspec.yaml 文件中声明:

字段自定义内容
dateFormat日期格式,例如 "dd.MMMM.yyyy"
defaultImage没有图片的消息旁的默认图标
unreadImage未读消息标记(仅限 iOS)
listErrorImage列表加载失败时显示
listEmptyImage列表没有消息时显示
listErrorMessage错误文本(未本地化)
listEmptyMessage空列表文本(未本地化)
barTitle收件箱屏幕的标题
defaultTextColor默认文本颜色(仅限 iOS)
accentColor强调色
backgroundColor背景颜色
highlightColor选择颜色
titleColor消息标题颜色
readTitleColor已读消息的标题颜色(仅限 Android)
descriptionColor消息描述颜色
readDescriptionColor已读消息的描述颜色(仅限 Android)
dateColor消息日期颜色
readDateColor已读消息的日期颜色(仅限 Android)
dividerColor分隔线颜色
barBackgroundColor标题栏的背景颜色
barAccentColor标题栏的返回按钮颜色
barTextColor标题栏的文本颜色
imageTypeColor未读操作图标颜色,例如深层链接或 URL(仅限 Android)
readImageTypeColor已读操作图标颜色(仅限 Android)
PWInboxStyle style = PWInboxStyle();
style.barTitle = "Messages";
style.barBackgroundColor = "#3AD29F";
style.accentColor = "#6750A4";
style.listEmptyMessage = "No messages yet";
style.defaultImage = "assets/images/logo.png";
PushwooshInbox.presentInboxUI(style: style);

以编程方式管理消息

Anchor link to

加载消息列表、读取计数,并对单个消息执行操作,而无需打开内置屏幕。这对于自定义收件箱 UI 或未读标记非常有用:

try {
List<InboxMessage> messages = await PushwooshInbox.loadMessages();
for (final message in messages) {
print("${message.title}: ${message.message}");
}
int? unread = await PushwooshInbox.unreadMessagesCount();
int? total = await PushwooshInbox.messagesCount();
int? notActedOn = await PushwooshInbox.messagesWithNoActionPerformedCount();
} catch (error) {
print("Failed to load inbox data: $error");
}
PushwooshInbox.readMessage(messageCode);
PushwooshInbox.deleteMessage(messageCode);
PushwooshInbox.performAction(messageCode); // runs the message's default action, e.g. opening a URL

loadCachedMessages() 在 Android 上返回上一次本地缓存的列表,而无需进行网络调用。在 iOS 上,它目前的行为与 loadMessages() 相同,仍然会调用网络。