跳到主要内容

通知

client.notifications API 管理通知的获取、关闭和策略配置。

获取通知

列表

final page = await client.notifications.fetch(limit: 20);

for (final n in page.items) {
print('${n.type}: ${n.account?.displayName}');
}

按类型过滤

// 仅提及和收藏
final page = await client.notifications.fetch(
types: ['mention', 'favourite'],
);

// 除关注外的所有通知
final page = await client.notifications.fetch(
excludeTypes: ['follow'],
);

单条通知

final notification = await client.notifications.fetchById('12345');

未读数量(Mastodon 4.3+)

final count = await client.notifications.fetchUnreadCount();
print(count.count);

关闭通知

关闭单条

await client.notifications.dismiss('12345');

清空所有

await client.notifications.clear();

通知策略(Mastodon 4.3+)

获取当前策略

final policy = await client.notifications.fetchPolicy();
print(policy.forNotFollowing); // accept, filter, drop

更新策略

await client.notifications.updatePolicy(policy);

通知请求(Mastodon 4.3+)

符合策略的已过滤通知会以请求形式收集。

列出请求

final page = await client.notifications.fetchRequests(limit: 20);

接受 / 关闭

// 单条
await client.notifications.acceptRequest('12345');
await client.notifications.dismissRequest('12345');

// 批量
await client.notifications.acceptRequests(['1', '2', '3']);
await client.notifications.dismissRequests(['4', '5']);

检查合并状态

final merged = await client.notifications.checkRequestsMerged();
if (merged) {
// 已接受的请求已合并到通知列表中
}

分组通知(v2)

如需使用分组通知 API,请使用 client.groupedNotifications

final result = await client.groupedNotifications.fetch(limit: 20);
for (final group in result.notificationGroups) {
print('${group.type}: ${group.notificationsCount} notifications');
}