Flutter消息管理插件suprsend_flutter_inbox的使用

Flutter消息管理插件suprsend_flutter_inbox的使用

安装

第一步:打开你的Flutter项目的pubspec.yaml文件

pubspec.yaml文件的dependencies部分添加以下代码:

dependencies:
  flutter:
  	sdk: flutter
  suprsend_flutter_inbox: "^0.0.2"

第二步:在终端运行以下命令以获取依赖项

$ flutter pub get

初始化

MaterialApp包裹在SuprSendProvider中,并传递工作区密钥(workspaceKey)、工作区密钥(workspaceSecret)、distinct_id和subscriber_id。

import 'package:suprsend_flutter_inbox/main.dart';

SuprSendProvider(
    workspaceKey: <your workspace key>,
    workspaceSecret: <your workspace secret>,
    distinctId: distinct_id,
    subscriberId: subscriber_id,
    child: YourAppComponent()
)

注意: 只有在SuprSendProvider内部才能调用suprsend钩子。

使用

useBell

此钩子用于获取未读计数(unSeenCount)和标记所有已读(markAllSeen)。当用户点击铃铛图标时,应调用markAllSeen,以便将通知计数重置为0。

import 'package:suprsend_flutter_inbox/main.dart';

final bellData = useBell();

bellData结构如下:

{
  "unSeenCount": int,
  "markAllSeen": () => void
}

useNotifications

此钩子用于获取通知列表、未读计数(unSeenCount)、标记所有已读(markAllSeen)以及标记单个通知为已读(markClicked)。当用户点击任何通知项时,应调用markClicked

import 'package:suprsend_flutter_inbox/main.dart';

final notifData = useNotifications();

notifData结构如下:

{
  "notifications": List<Notification>,
  "unSeenCount": int,
  "markAllSeen": () => void,
  "markClicked": (notification_id) => void
}

Notification 结构:

{
  "created_on": int,
  "seen_on": int,
  "message": {
    "header": string,
    "text": string,
    "url": string,
    "actions": [
      {
        "name": string,
        "url": string
      }
    ]
  },
  "n_id": string
}

完整示例代码

以下是一个完整的示例代码,展示了如何使用suprsend_flutter_inbox插件来管理和展示通知。

import 'package:flutter/material.dart';
import 'package:suprsend_flutter_inbox/main.dart';

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return SuprSendProvider(
      workspaceKey: '<your workspace key>',
      workspaceSecret: '<your workspace secret>',
      distinctId: 'distinct_user_id',
      subscriberId: 'subscriber_id',
      child: MaterialApp(
        home: NotificationScreen(),
      ),
    );
  }
}

class NotificationScreen extends StatefulWidget {
  [@override](/user/override)
  _NotificationScreenState createState() => _NotificationScreenState();
}

class _NotificationScreenState extends State<NotificationScreen> {
  final bellData = useBell();
  final notifData = useNotifications();

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('通知中心'),
      ),
      body: Column(
        children: [
          // 显示未读通知数量
          Row(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            children: [
              Text('未读通知: ${bellData.unSeenCount}'),
              ElevatedButton(
                onPressed: () {
                  bellData.markAllSeen();
                },
                child: Text('标记全部已读'),
              ),
            ],
          ),
          // 展示通知列表
          Expanded(
            child: ListView.builder(
              itemCount: notifData.notifications.length,
              itemBuilder: (context, index) {
                final notification = notifData.notifications[index];
                return ListTile(
                  title: Text(notification.message.header),
                  subtitle: Text(notification.message.text),
                  onTap: () {
                    notifData.markClicked(notification.n_id);
                  },
                );
              },
            ),
          ),
        ],
      ),
    );
  }
}

更多关于Flutter消息管理插件suprsend_flutter_inbox的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter消息管理插件suprsend_flutter_inbox的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


suprsend_flutter_inbox 是一个用于在 Flutter 应用中管理消息和通知的插件。它可以帮助开发者轻松地在应用中集成消息收件箱功能,使用户能够查看和管理收到的消息。

以下是如何在 Flutter 项目中使用 suprsend_flutter_inbox 插件的基本步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 suprsend_flutter_inbox 插件的依赖。

dependencies:
  flutter:
    sdk: flutter
  suprsend_flutter_inbox: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 初始化插件

在应用的 main.dart 文件中初始化 suprsend_flutter_inbox 插件。

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化 SuprSend Inbox
  await SuprsendFlutterInbox.initialize(
    apiKey: 'YOUR_API_KEY',
    apiSecret: 'YOUR_API_SECRET',
  );
  
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'SuprSend Inbox Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: InboxScreen(),
    );
  }
}

3. 创建消息收件箱界面

接下来,你可以创建一个消息收件箱界面,使用 SuprsendFlutterInbox 提供的组件来显示消息列表。

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

class InboxScreen extends StatefulWidget {
  [@override](/user/override)
  _InboxScreenState createState() => _InboxScreenState();
}

class _InboxScreenState extends State<InboxScreen> {
  List<SuprsendMessage> _messages = [];

  [@override](/user/override)
  void initState() {
    super.initState();
    _loadMessages();
  }

  Future<void> _loadMessages() async {
    final messages = await SuprsendFlutterInbox.getMessages();
    setState(() {
      _messages = messages;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('消息收件箱'),
      ),
      body: ListView.builder(
        itemCount: _messages.length,
        itemBuilder: (context, index) {
          final message = _messages[index];
          return ListTile(
            title: Text(message.title ?? '无标题'),
            subtitle: Text(message.body ?? '无内容'),
            onTap: () {
              // 处理消息点击事件
              _handleMessageTap(message);
            },
          );
        },
      ),
    );
  }

  void _handleMessageTap(SuprsendMessage message) async {
    // 标记消息为已读
    await SuprsendFlutterInbox.markMessageAsRead(message.id);

    // 打开消息详情页面或执行其他操作
    Navigator.push(
      context,
      MaterialPageRoute(
        builder: (context) => MessageDetailScreen(message: message),
      ),
    );
  }
}

class MessageDetailScreen extends StatelessWidget {
  final SuprsendMessage message;

  MessageDetailScreen({required this.message});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(message.title ?? '消息详情'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            Text(
              message.title ?? '无标题',
              style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold),
            ),
            SizedBox(height: 10),
            Text(message.body ?? '无内容'),
          ],
        ),
      ),
    );
  }
}

4. 处理消息状态

你可以使用 SuprsendFlutterInbox 提供的方法来处理消息的状态,例如标记消息为已读、删除消息等。

// 标记消息为已读
await SuprsendFlutterInbox.markMessageAsRead(messageId);

// 删除消息
await SuprsendFlutterInbox.deleteMessage(messageId);

5. 监听消息更新

你还可以监听消息的更新,以便在消息状态发生变化时自动刷新界面。

SuprsendFlutterInbox.addListener(() {
  _loadMessages();
});

6. 清理资源

在应用退出时,记得移除监听器并清理资源。

[@override](/user/override)
void dispose() {
  SuprsendFlutterInbox.removeListener(_loadMessages);
  super.dispose();
}
回到顶部