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));
}
示例代码解释
-
导入必要的库
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)); }
-
初始化缓存
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));
更多关于Flutter ProPresenter API集成插件propresenter_api的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于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');
}