Flutter Discord Rich Presence集成插件discord_rich_presence的使用

Flutter Discord Rich Presence 集成插件 discord_rich_presence 的使用

Discord Rich Presence

这是通过 IPC 实现的 Discord 富媒体状态的最小实现。它缺少很多功能,但足以设置你的活动。此插件主要用于在桌面版 Flutter 应用程序中使用。它受到了 discordjs/RPC 的启发。

完整示例 DEMO

以下是一个完整的示例,展示了如何使用 discord_rich_presence 插件来设置富媒体状态。

import 'dart:io';

import 'package:discord_rich_presence/discord_rich_presence.dart';

void main() async {
  // 创建你的客户端
  final Client client = Client(clientId: 'YOUR_CLIENT_ID_HERE');

  // 连接到 Discord(通过 IPC)
  await client.connect();

  // 设置你的活动
  await client.setActivity(
    Activity(
      name: 'Minecraft',  // 游戏名称
      type: ActivityType.playing,  // 活动类型
      timestamps: ActivityTimestamps(  // 时间戳
        start: DateTime.now(),  // 开始时间
      ),
    ),
  );

  // 等待 5 秒
  sleep(Duration(seconds: 5));

  // 断开连接(断开后将无法再使用该客户端)
  await client.disconnect();
}

步骤说明

  1. 创建客户端:

    final Client client = Client(clientId: 'YOUR_CLIENT_ID_HERE');
    

    这里需要将 YOUR_CLIENT_ID_HERE 替换为你的 Discord 应用程序的客户端 ID。

  2. 连接到 Discord:

    await client.connect();
    

    使用 connect() 方法连接到 Discord。

  3. 设置活动:

    await client.setActivity(
      Activity(
        name: 'Minecraft',  // 游戏名称
        type: ActivityType.playing,  // 活动类型
        timestamps: ActivityTimestamps(  // 时间戳
          start: DateTime.now(),  // 开始时间
        ),
      ),
    );
    

    使用 setActivity 方法设置你的游戏活动。这里可以自定义游戏名称、活动类型和时间戳等信息。

  4. 等待一段时间:

    sleep(Duration(seconds: 5));
    

    这里示例代码中等待了 5 秒,你可以根据实际需求修改等待时间。

  5. 断开连接:

    await client.disconnect();
    

更多关于Flutter Discord Rich Presence集成插件discord_rich_presence的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter Discord Rich Presence集成插件discord_rich_presence的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter应用中使用discord_rich_presence插件来实现Discord Rich Presence集成的代码示例。这个插件允许你的Flutter应用向Discord显示丰富的在线状态信息。

首先,确保你已经在你的pubspec.yaml文件中添加了discord_rich_presence依赖:

dependencies:
  flutter:
    sdk: flutter
  discord_rich_presence: ^最新版本号  # 请替换为实际的最新版本号

然后,运行flutter pub get来安装依赖。

接下来,是一个简单的Flutter应用示例,展示了如何使用discord_rich_presence插件:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Discord Rich Presence Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  late DiscordRichPresence discordRpc;

  @override
  void initState() {
    super.initState();
    // 初始化 DiscordRichPresence
    discordRpc = DiscordRichPresence(
      clientId: '你的Discord应用客户端ID',  // 请替换为你的Discord应用客户端ID
    );

    // 设置初始的presence信息
    discordRpc.updatePresence(
      state: 'In Flutter App',
      details: 'Checking out Discord Rich Presence',
      startTimestamp: DateTime.now().millisecondsSinceEpoch,
      largeImageKey: 'large_image_key', // 可选的大图片key
      largeImageText: 'Large Image Text', // 可选的大图片文本
      smallImageKey: 'small_image_key', // 可选的小图片key
      smallImageText: 'Small Image Text', // 可选的小图片文本
      partySize: 1, // 可选的派对大小
      partyMax: 4, // 可选的派对最大人数
      matchSecret: 'match_secret', // 可选的匹配密钥
      spectateSecret: 'spectate_secret', // 可选的观战密钥
      instance: false, // 是否为实例
    );

    // 监听连接状态变化
    discordRpc.onConnect.listen((status) {
      print('Connected to Discord: $status');
    });

    // 监听错误
    discordRpc.onError.listen((error) {
      print('Error: $error');
    });

    // 尝试连接
    discordRpc.connect();
  }

  @override
  void dispose() {
    // 在组件销毁时断开连接
    discordRpc.disconnect();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Discord Rich Presence Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Check your Discord status!',
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () {
                // 更新presence信息
                discordRpc.updatePresence(
                  state: 'Playing a Game',
                  details: 'Level 5',
                  startTimestamp: DateTime.now().millisecondsSinceEpoch,
                  largeImageKey: 'game_logo',
                  largeImageText: 'Game Title',
                );
              },
              child: Text('Update Presence'),
            ),
          ],
        ),
      ),
    );
  }
}

在这个示例中,我们做了以下几件事:

  1. pubspec.yaml中添加了discord_rich_presence依赖。
  2. MyApphome属性中设置了我们的主页面MyHomePage
  3. MyHomePageinitState方法中初始化了DiscordRichPresence实例,并设置了初始的presence信息。
  4. 使用discordRpc.connect()方法尝试连接到Discord。
  5. 在组件销毁时(dispose方法),调用了discordRpc.disconnect()方法来断开连接。
  6. 提供了一个按钮,点击后可以更新presence信息。

请注意,你需要替换clientIdlargeImageKeysmallImageKey等字段为你的Discord应用的实际值。此外,确保你的Discord应用已经在Discord开发者门户中正确配置,并且你有权限使用Rich Presence功能。

回到顶部