Flutter Discord状态展示插件discord_presence的使用

简介

discord_presence 是一个用 Rust 编写的用于 Dart 和 Flutter 的 Discord 富媒体状态(Rich Presence)插件。它是在 discord_rpc 插件的基础上开发的,增加了更多功能,例如支持 macOS 平台,并且允许最多添加两个自定义按钮。

开始使用

要将 Discord 富媒体状态集成到你的应用程序或游戏中,你需要在 Discord 开发者门户 创建一个应用程序。

设置 Discord 状态

以下是一个简单的示例代码,演示如何设置 Discord 状态:

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

void main() {
  // 设置 Discord 富媒体状态
  setDiscordRpc(
      // 添加两个自定义按钮
      buttons: [const DiscordButton(label: "测试", url: "https://example.com")],
      // 替换为你的 Discord 应用程序的 Client ID
      clientId: "DISCORD_CLIENT_ID",
      // 显示的详细信息
      details: "当前状态",
      // 大图标键
      largeImageKey: "large_image",
      // 大图提示文字
      largeTextKey: "大图提示",
      // 小图标键
      smallImageKey: "small_image",
      // 小图提示文字
      smallTextKey: "小图提示",
      // 当前状态
      state: "正在运行应用程序");
  
  // 启动应用
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('快速开始')),
        body: const Center(
          child: Text('完成'),
        ),
      ),
    );
  }
}

代码说明

  • setDiscordRpc: 用于设置 Discord 富媒体状态的核心方法。
  • buttons: 定义两个自定义按钮,每个按钮包含标签和跳转链接。
  • clientId: 替换为你的 Discord 应用程序的 Client ID。
  • details: 显示在 Discord 状态中的详细信息。
  • largeImageKeylargeTextKey: 分别表示大图的键值和提示文字。
  • smallImageKeysmallTextKey: 分别表示小图的键值和提示文字。
  • state: 显示在 Discord 状态中的当前状态。

示例代码完整结构

以下是完整的示例代码文件结构:

// example/lib/main.dart

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

void main() {
  // 设置 Discord 富媒体状态
  setDiscordRpc(
      buttons: [const DiscordButton(label: "测试", url: "https://example.com")],
      clientId: "DISCORD_CLIENT_ID",
      details: "当前状态",
      largeImageKey: "large_image",
      largeTextKey: "大图提示",
      smallImageKey: "small_image",
      smallTextKey: "小图提示",
      state: "正在运行应用程序");

  // 启动应用
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('快速开始')),
        body: const Center(
          child: Text('完成'),
        ),
      ),
    );
  }
}

更多关于Flutter Discord状态展示插件discord_presence的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter Discord状态展示插件discord_presence的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中使用discord_presence插件来展示Discord状态,你需要按照以下步骤进行设置和使用。discord_presence插件允许你在Discord中显示你的应用程序的状态,例如当前正在播放的音乐、游戏状态等。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  discord_presence: ^0.0.1  # 请检查最新版本

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

2. 初始化插件

在你的Flutter应用中,你需要初始化discord_presence插件。通常,你可以在main.dart文件中进行初始化。

import 'package:discord_presence/discord_presence.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化Discord Presence
  await DiscordPresence.initialize(
    clientId: 'YOUR_DISCORD_CLIENT_ID', // 替换为你的Discord应用客户端ID
  );

  runApp(MyApp());
}

3. 设置Discord状态

你可以使用DiscordPresence类来设置和更新Discord状态。以下是一个简单的示例,展示如何设置状态。

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Discord Presence Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () async {
              // 设置Discord状态
              await DiscordPresence.updatePresence(
                state: 'Playing Flutter App',
                details: 'In the main menu',
                startTimestamp: DateTime.now().millisecondsSinceEpoch,
                largeImageKey: 'flutter_logo',
                largeImageText: 'Flutter',
                smallImageKey: 'dart_logo',
                smallImageText: 'Dart',
              );
            },
            child: Text('Update Discord Presence'),
          ),
        ),
      ),
    );
  }
}

4. 清除Discord状态

当你不再需要显示状态时,可以清除Discord状态。

await DiscordPresence.clearPresence();

5. 处理生命周期

为了确保在应用关闭时正确清除Discord状态,你可以在dispose方法中调用clearPresence

[@override](/user/override)
void dispose() {
  DiscordPresence.clearPresence();
  super.dispose();
}

6. 获取Discord客户端ID

要使用discord_presence插件,你需要一个Discord应用的客户端ID。你可以通过以下步骤获取:

  1. 访问 Discord Developer Portal
  2. 创建一个新的应用程序。
  3. 在应用程序设置中,找到“Client ID”并复制它。

7. 注意事项

  • discord_presence插件目前可能还在开发中,功能可能有限。请查看插件的文档和GitHub页面以获取最新信息。
  • 确保你的Discord应用程序的“Rich Presence”功能已启用。

8. 示例代码

以下是一个完整的示例代码,展示了如何在Flutter应用中使用discord_presence插件。

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化Discord Presence
  await DiscordPresence.initialize(
    clientId: 'YOUR_DISCORD_CLIENT_ID', // 替换为你的Discord应用客户端ID
  );

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Discord Presence Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () async {
              // 设置Discord状态
              await DiscordPresence.updatePresence(
                state: 'Playing Flutter App',
                details: 'In the main menu',
                startTimestamp: DateTime.now().millisecondsSinceEpoch,
                largeImageKey: 'flutter_logo',
                largeImageText: 'Flutter',
                smallImageKey: 'dart_logo',
                smallImageText: 'Dart',
              );
            },
            child: Text('Update Discord Presence'),
          ),
        ),
      ),
    );
  }
}
回到顶部