通知
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');
通知类型特有的详细信息
部分 v1 通知包含附加详细信息:
final event = notification.relationshipSeveranceEvent; // severed_relationships
final report = notification.report; // admin.report
final wasFiltered = notification.filtered; // Mastodon 4.3+
服务器仅在值为 true 时返回该键,因此 filtered 默认为 false。分组的 v2 通知
通过 group.event 提供关系断开详情,通过 group.report 提供举报;它们没有
每条通知的 filtered 字段。
未读数量(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');
}