Flutter Discord RPC集成插件flutter_discord_rpc的使用

Flutter Discord RPC集成插件flutter_discord_rpc的使用

flutter_discord_rpc简介

flutter_discord_rpc 是一个用于在 Flutter 桌面平台上通过 IPC(进程间通信)实现 Discord RPC(Rich Presence)支持的插件。


安装

在你的 Flutter 项目中添加 flutter_discord_rpc 插件:

flutter pub add flutter_discord_rpc

使用前的要求

确保已安装 rustup


支持此项目

如果你喜欢这个项目,可以支持作者:


使用方法

首先,你需要从 https://discord.com/developers/applications 创建一个 Discord 应用程序,并获取应用 ID。将该应用 ID 替换到以下代码中的 <app-id>

示例代码

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

import 'package:flutter_discord_rpc/flutter_discord_rpc.dart';

void main() async {
  // 初始化 Flutter 绑定
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化 Discord RPC 插件并传入应用 ID
  await FlutterDiscordRPC.initialize(
    "<app-id>", // 替换为你的 Discord 应用程序 ID
  );
  
  // 启动应用
  runApp(const MyApp());
}

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

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  late int sumResult;
  late Future<int> sumAsyncResult;

  [@override](/user/override)
  void initState() {
    super.initState();
    
    // 连接 Discord RPC
    FlutterDiscordRPC.instance.connect(autoRetry: true, retryDelay: const Duration(seconds: 10));
  }

  [@override](/user/override)
  void dispose() {
    // 断开连接并释放资源
    FlutterDiscordRPC.instance.disconnect();
    FlutterDiscordRPC.instance.dispose();
    super.dispose();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Native Packages'),
        ),
        body: SingleChildScrollView(
          child: Container(
            padding: const EdgeInsets.all(10),
            child: Column(
              children: [
                // 设置 Discord Rich Presence
                TextButton(
                  child: const Text("Set Activity"),
                  onPressed: () {
                    FlutterDiscordRPC.instance.setActivity(
                      activity: RPCActivity(
                        assets: const RPCAssets(
                          largeText: "Hello Testing!!!",
                          smallText: "Hello Testing!!!",
                        ),
                        buttons: [
                          const RPCButton(label: "Google", url: "https://google.com"),
                        ],
                        details: "Very important details",
                        state: "Very important state",
                        timestamps: RPCTimestamps(
                          start: DateTime.now().millisecondsSinceEpoch,
                          end: DateTime.now().millisecondsSinceEpoch + 1000,
                        ),
                        activityType: ActivityType.listening,
                      ),
                    );
                  },
                ),
                
                // 清除 Discord Rich Presence
                TextButton(
                  child: const Text("Clear Activity"),
                  onPressed: () {
                    FlutterDiscordRPC.instance.clearActivity();
                  },
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}
1 回复

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


flutter_discord_rpc 是一个用于在 Flutter 应用中集成 Discord 富状态(Rich Presence)的插件。通过该插件,你可以在用户使用你的应用时,在 Discord 上显示自定义的状态信息,如当前活动、状态、图标等。

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

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 flutter_discord_rpc 依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_discord_rpc: ^1.0.0  # 请检查最新版本

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

2. 初始化 Discord RPC

在你的 Dart 文件中,导入 flutter_discord_rpc 并初始化 Discord RPC:

import 'package:flutter_discord_rpc/flutter_discord_rpc.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // 初始化 Discord RPC
  final discordRPC = DiscordRPC(
    applicationId: 'YOUR_APPLICATION_ID',  // 替换为你的 Discord 应用 ID
  );

  await discordRPC.initialize();

  runApp(MyApp(discordRPC: discordRPC));
}

3. 设置 Rich Presence

在应用启动后,你可以使用 discordRPC 对象来设置 Rich Presence:

class MyApp extends StatelessWidget {
  final DiscordRPC discordRPC;

  MyApp({required this.discordRPC});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Discord RPC',
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Discord RPC Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () {
              // 设置 Rich Presence
              discordRPC.updatePresence(
                state: 'Playing with Flutter',
                details: 'In a Discord RPC Example',
                startTimestamp: DateTime.now().millisecondsSinceEpoch,
                largeImageKey: 'flutter_logo',
                largeImageText: 'Flutter',
                smallImageKey: 'dart_logo',
                smallImageText: 'Dart',
              );
            },
            child: Text('Set Rich Presence'),
          ),
        ),
      ),
    );
  }
}

4. 处理应用生命周期

为了确保 Discord RPC 在应用退出时能够正确关闭,你需要在 dispose 方法中调用 discordRPC.dispose()

class MyApp extends StatefulWidget {
  final DiscordRPC discordRPC;

  MyApp({required this.discordRPC});

  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  [@override](/user/override)
  void dispose() {
    widget.discordRPC.dispose();
    super.dispose();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Discord RPC',
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Discord RPC Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () {
              widget.discordRPC.updatePresence(
                state: 'Playing with Flutter',
                details: 'In a Discord RPC Example',
                startTimestamp: DateTime.now().millisecondsSinceEpoch,
                largeImageKey: 'flutter_logo',
                largeImageText: 'Flutter',
                smallImageKey: 'dart_logo',
                smallImageText: 'Dart',
              );
            },
            child: Text('Set Rich Presence'),
          ),
        ),
      ),
    );
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!