Flutter ProPresenter API集成插件propresenter_api的使用

功能 #

此包提供了用于通过其未公开且过时的 WebSocket 协议以及他们新支持的 API(7.9+)与 ProPresenter 进行交互的 Dart 类。

开始使用 #

dart pub add propresenter_api

用法 #

详细的文档将很快发布。

其他信息 #

请通过拉取请求进行贡献!

example/propresenter_api_example.dart

import 'dart:convert';
import 'dart:io';

import ‘package:propresenter_api/propresenter_api.dart’; import ‘package:propresenter_api/src/api_v1_generated.dart’; import ‘package:propresenter_api/src/cache.dart’;

void debug(Object s) { var enc = JsonEncoder.withIndent(’ '); print(enc.convert(s)); }

void main() async { Cache.init(’.’);

// 初始化 ProPresenter 客户端 var api = ProApiClient(ProSettings(version: ProVersion.seven9, host: ‘localhost’, port: 60157));

// 设置事件监听器 api.on(‘all’, (e) => debug(e));

// 订阅多个事件 api.subscribeMulti([ ProApiSubbable.slideStatus, ProApiSubbable.currentSlideIndex, ]);

// 获取当前活动演示文稿的流 var s = await api.presentationGetActiveStream(); s?.listen((e) => debug(e)); }

```

示例代码解释

  1. 导入必要的库

    import 'dart:convert';
    import 'dart:io';
    
    import 'package:propresenter_api/propresenter_api.dart';
    import 'package:propresenter_api/src/api_v1_generated.dart';
    import 'package:propresenter_api/src/cache.dart';
    
  2. 定义一个调试函数

    void debug(Object s) {
      var enc = JsonEncoder.withIndent('  ');
      print(enc.convert(s));
    }
    
  3. 初始化缓存

    Cache.init('.');
    
  4. 创建 ProPresenter 客户端实例

    var api = ProApiClient(ProSettings(version: ProVersion.seven9, host: 'localhost', port: 60157));
    
  5. 设置全局事件监听器

    api.on('all', (e) => debug(e));
    
  6. 订阅多个事件

    api.subscribeMulti([
      ProApiSubbable.slideStatus,
      ProApiSubbable.currentSlideIndex,
    ]);
    
  7. 获取当前活动演示文稿的流并监听

    var s = await api.presentationGetActiveStream();
    s?.listen((e) => debug(e));
    

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

1 回复

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


ProPresenter 是一个流行的演示软件,广泛用于教堂、会议和其他活动中。ProPresenter 提供了 API 接口,允许开发人员通过外部应用程序与之进行交互。在 Flutter 中,你可以使用 propresenter_api 插件来与 ProPresenter 进行通信。

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

1. 添加依赖

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

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

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

2. 初始化 ProPresenter API

在你的 Flutter 应用中,首先需要初始化 ProPresenter API。

import 'package:propresenter_api/propresenter_api.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: ProPresenterExample(),
    );
  }
}

class ProPresenterExample extends StatefulWidget {
  @override
  _ProPresenterExampleState createState() => _ProPresenterExampleState();
}

class _ProPresenterExampleState extends State<ProPresenterExample> {
  ProPresenterApi _proPresenterApi;

  @override
  void initState() {
    super.initState();
    _proPresenterApi = ProPresenterApi();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('ProPresenter API Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            ElevatedButton(
              onPressed: () async {
                // 连接到 ProPresenter
                bool connected = await _proPresenterApi.connect('192.168.1.100', 32111);
                if (connected) {
                  print('Connected to ProPresenter');
                } else {
                  print('Failed to connect to ProPresenter');
                }
              },
              child: Text('Connect to ProPresenter'),
            ),
            ElevatedButton(
              onPressed: () async {
                // 发送命令到 ProPresenter
                await _proPresenterApi.sendCommand('PRESENTATION_PLAY');
              },
              child: Text('Play Presentation'),
            ),
          ],
        ),
      ),
    );
  }
}

3. 常用 API 命令

ProPresenter API 支持多种命令,以下是一些常用的命令示例:

  • PRESENTATION_PLAY:开始播放演示文稿。
  • PRESENTATION_PAUSE:暂停演示文稿。
  • PRESENTATION_NEXT:切换到下一张幻灯片。
  • PRESENTATION_PREVIOUS:切换到上一张幻灯片。
  • PRESENTATION_INDEX_SET:设置当前幻灯片的索引。

你可以根据需要使用这些命令来控制 ProPresenter。

4. 处理响应

ProPresenter API 通常会返回一个响应,表示命令是否成功执行。你可以根据这些响应来处理错误或更新 UI。

Future<void> sendCommand(String command) async {
  bool success = await _proPresenterApi.sendCommand(command);
  if (success) {
    print('Command $command executed successfully');
  } else {
    print('Failed to execute command $command');
  }
}

5. 断开连接

当应用不再需要与 ProPresenter 通信时,应该断开连接。

@override
void dispose() {
  _proPresenterApi.disconnect();
  super.dispose();
}

6. 错误处理

在实际应用中,你可能会遇到各种错误,例如网络问题、ProPresenter 未运行等。确保在代码中添加适当的错误处理逻辑。

try {
  bool connected = await _proPresenterApi.connect('192.168.1.100', 32111);
  if (connected) {
    print('Connected to ProPresenter');
  } else {
    print('Failed to connect to ProPresenter');
  }
} catch (e) {
  print('Error connecting to ProPresenter: $e');
}
回到顶部