Flutter集成第三方服务插件wisesdk的使用
Flutter集成第三方服务插件wisesdk的使用
开始使用
请参考文档了解集成步骤。
Flutter
在Flutter项目中集成wisesdk
插件后,您可以使用以下命令发布您的包:
dart pub publish --dry-run
dart pub publish
完整示例Demo
以下是一个完整的示例代码,展示了如何在Flutter应用中集成并使用wisesdk
插件。
example/lib/main.dart
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:wisesdk/wisesdk.dart';
import 'dart:io' show Platform;
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
[@override](/user/override)
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
final _wiseSdk = Wisesdk();
// channel name must be `wisesdk`
final wiseChannelName = 'wisesdk';
[@override](/user/override)
void initState() {
super.initState();
initPlatformState();
final methodChannel = MethodChannel(wiseChannelName);
methodChannel.setMethodCallHandler(_wiseSDKMeetingListener);
}
Future<void> initPlatformState() async {
// Platform messages may fail, so we use a try/catch PlatformException.
// We also handle the message potentially returning null.
try {
await _wiseSdk.initSdk("650d61477aaa3e6b9988934f", "yellowmonkey");
if (Platform.isIOS) {
// set screen share group id and bundle id
_wiseSdk.enableScreenShare("group.live.wise.wisesdkExample", "live.wise.wisesdkExample.screen");
}
// enable / disable screen capture (only Android)
_wiseSdk.disableScreenCapture(false);
// join meeting by classroom public ID
// This doesn't need Authentication or SSO Login
final joinParams = {
"classroomPublicId": "65953bb0aa3f4e26b047982b51053399",
"userName": "John",
"userId": "userId_101001"
};
if (await _wiseSdk.isMeetingInProgress()) {
_wiseSdk.gotoMeeting();
} else {
_wiseSdk.joinMeeting(joinParams);
}
// SSO Login
// await _wiseSdk.loginUsingSSOToken("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwaG9uZU51bWJlciI6Iis5MTgyOTc2NTg4OTMiLCJpYXQiOjE3MDQyODc1OTAsImV4cCI6MTcwNDI4NzcxMH0.kiKK66SD0XNjsjRLUBOfJ4nqEvrvekERu383umCv3Jo");
// Logout SSO
// _wiseSdk.logoutSSO();
// Set Auth token
// _wiseSdk.setAuthToken("ey03bGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiI2NTk1NTJjZWFhM2Y0ZWY0NWI0OTI4ZGEiLCJuYW1lIjoiSnlvdGhzbmEiLCJ0eXBlIjoiU0VTU0lPTl9UT0tFTiIsImlhdCI6MTcyOTY4OTYzOCwiZXhwIjoxNzM3NDY1NjM4fQ.5Q-_R2g3olOEjAAuzpEyiyVT-Gdv7WsVK1OpOwW_GWs");
// join meeting by classroom number
// SSO Login or Auth token is needed to do this
final joinParams1 = {
"classroomId": "65953bb0aa3f4e26b047982",
"disableScreenCapture": true
};
if (await _wiseSdk.isMeetingInProgress()) {
// return to in progress meeting
_wiseSdk.gotoMeeting();
} else {
//_wiseSdk.joinMeeting(joinParams1);
}
} on PlatformException catch (err) {
debugPrint('Error. ${err.message}, ${err.details}');
}
if (!mounted) return;
setState(() {});
}
Future<void> _wiseSDKMeetingListener(MethodCall call) async {
switch (call.method) {
case "onInitialised":
{}
case "onMeetingConnecting":
{
debugPrint("Connecting to meeting!");
}
case "onMeetingEnded":
{
final userId = call.arguments;
debugPrint("Meeting ended. UserId: $userId");
}
case "onMeetingEndedByHost":
{
debugPrint("Meeting ended by host");
}
case "onMeetingEndedWithError":
{
final data = call.arguments;
int errorCode = data["errorCode"];
int internalErrorCode = data["internalErrorCode"];
String message = data["message"];
debugPrint(
"onMeetingEndedWithError $errorCode, $internalErrorCode, $message");
}
case "onMeetingNeedPasswordOrDisplayName":
{}
case "onMeetingNotStartedByHostError":
{
debugPrint("Meeting not started by host!");
}
case "onMeetingStarted":
{
final isMeetingStarted = call.arguments;
debugPrint("Meeting started: $isMeetingStarted");
}
case "onSDKError":
{
final data = call.arguments;
int wiseErrorCode = data["wiseErrorCode"];
int errorCode = data["errorCode"];
int internalErrorCode = data["internalErrorCode"];
debugPrint(
"onSDKError $wiseErrorCode, $errorCode, $internalErrorCode");
}
case "onVendorIdError":
{
debugPrint("Vendor Id is missing or invalid!");
}
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Wise SDK'),
),
body: const Center(
child: Text('Wise SDK Sample'),
),
),
);
}
}
更多关于Flutter集成第三方服务插件wisesdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter集成第三方服务插件wisesdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中集成第三方服务插件(如wiseSDK)通常涉及几个关键步骤:添加依赖、配置权限、初始化SDK以及调用SDK提供的功能。以下是一个简化的代码示例,展示如何在Flutter项目中集成wiseSDK插件。
1. 添加依赖
首先,在你的pubspec.yaml
文件中添加wiseSDK的依赖。假设wiseSDK在pub.dev上有可用的Flutter插件,代码示例如下:
dependencies:
flutter:
sdk: flutter
wise_sdk: ^x.y.z # 替换为wiseSDK的实际版本号
然后运行flutter pub get
来获取依赖。
2. 配置Android权限(如果需要)
wiseSDK可能需要在AndroidManifest.xml
中添加一些权限。根据wiseSDK的文档,你可能需要添加类似以下的权限:
<!-- 在android/app/src/main/AndroidManifest.xml中添加 -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.yourapp">
<uses-permission android:name="android.permission.INTERNET" />
<!-- 其他wiseSDK需要的权限 -->
<application
... >
<!-- wiseSDK的配置信息,如API Key等 -->
<meta-data
android:name="com.wise.sdk.API_KEY"
android:value="YOUR_API_KEY_HERE" />
</application>
</manifest>
3. 初始化wiseSDK
在你的Flutter应用的主入口文件(通常是main.dart
)中初始化wiseSDK。假设wiseSDK提供了一个初始化方法WiseSdk.initialize()
,代码示例如下:
import 'package:flutter/material.dart';
import 'package:wise_sdk/wise_sdk.dart'; // 导入wiseSDK包
void main() {
WidgetsFlutterBinding.ensureInitialized();
// 初始化wiseSDK
WiseSdk.initialize(apiKey: 'YOUR_API_KEY_HERE');
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter wiseSDK Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('wiseSDK Integration'),
),
body: Center(
child: ElevatedButton(
onPressed: () {
// 调用wiseSDK的功能,例如登录
WiseSdk.login(username: 'testuser', password: 'testpass').then((result) {
print('Login result: $result');
}).catchError((error) {
print('Login error: $error');
});
},
child: Text('Login with wiseSDK'),
),
),
);
}
}
注意事项
- 实际API和方法:上述代码中的
WiseSdk.initialize()
和WiseSdk.login()
是假设的方法。你需要查阅wiseSDK的官方文档,了解实际的API调用和方法名。 - 错误处理:在实际应用中,应该添加更详细的错误处理逻辑。
- 异步操作:许多SDK的初始化或功能调用是异步的,确保处理这些异步操作。
- 平台特定配置:某些SDK可能需要iOS特定的配置,如Info.plist的修改,这些也需要在文档中查找。
请确保阅读wiseSDK的官方文档,以获取最准确和最新的集成指南。