Add Zoom SDk
Showing
No preview for this file type
.dart_tool/package_config.json
0 → 100644
.dart_tool/package_config_subset
0 → 100644
.dart_tool/version
0 → 100644
example/.gitignore
deleted
100755 → 0
example/.metadata
deleted
100755 → 0
example/README.md
deleted
100755 → 0
example/analysis_options.yaml
deleted
100644 → 0
example/android/.gitignore
deleted
100755 → 0
example/android/app/build.gradle
deleted
100755 → 0
544 Bytes
442 Bytes
721 Bytes
1.01 KB
1.41 KB
example/android/build.gradle
deleted
100755 → 0
example/android/gradle.properties
deleted
100755 → 0
example/android/settings.gradle
deleted
100755 → 0
example/android/settings_aar.gradle
deleted
100755 → 0
example/ios/.gitignore
deleted
100755 → 0
example/ios/Flutter/Debug.xcconfig
deleted
100755 → 0
example/ios/Flutter/Release.xcconfig
deleted
100755 → 0
example/ios/Podfile
deleted
100755 → 0
example/ios/Podfile.lock
deleted
100644 → 0
example/ios/Runner/AppDelegate.swift
deleted
100755 → 0
{ | |||
"images" : [ | |||
{ | |||
"size" : "20x20", | |||
"idiom" : "iphone", | |||
"filename" : "[email protected]", | |||
"scale" : "2x" | |||
}, | |||
{ | |||
"size" : "20x20", | |||
"idiom" : "iphone", | |||
"filename" : "[email protected]", | |||
"scale" : "3x" | |||
}, | |||
{ | |||
"size" : "29x29", | |||
"idiom" : "iphone", | |||
"filename" : "[email protected]", | |||
"scale" : "1x" | |||
}, | |||
{ | |||
"size" : "29x29", | |||
"idiom" : "iphone", | |||
"filename" : "[email protected]", | |||
"scale" : "2x" | |||
}, | |||
{ | |||
"size" : "29x29", | |||
"idiom" : "iphone", | |||
"filename" : "[email protected]", | |||
"scale" : "3x" | |||
}, | |||
{ | |||
"size" : "40x40", | |||
"idiom" : "iphone", | |||
"filename" : "[email protected]", | |||
"scale" : "2x" | |||
}, | |||
{ | |||
"size" : "40x40", | |||
"idiom" : "iphone", | |||
"filename" : "[email protected]", | |||
"scale" : "3x" | |||
}, | |||
{ | |||
"size" : "60x60", | |||
"idiom" : "iphone", | |||
"filename" : "[email protected]", | |||
"scale" : "2x" | |||
}, | |||
{ | |||
"size" : "60x60", | |||
"idiom" : "iphone", | |||
"filename" : "[email protected]", | |||
"scale" : "3x" | |||
}, | |||
{ | |||
"size" : "20x20", | |||
"idiom" : "ipad", | |||
"filename" : "[email protected]", | |||
"scale" : "1x" | |||
}, | |||
{ | |||
"size" : "20x20", | |||
"idiom" : "ipad", | |||
"filename" : "[email protected]", | |||
"scale" : "2x" | |||
}, | |||
{ | |||
"size" : "29x29", | |||
"idiom" : "ipad", | |||
"filename" : "[email protected]", | |||
"scale" : "1x" | |||
}, | |||
{ | |||
"size" : "29x29", | |||
"idiom" : "ipad", | |||
"filename" : "[email protected]", | |||
"scale" : "2x" | |||
}, | |||
{ | |||
"size" : "40x40", | |||
"idiom" : "ipad", | |||
"filename" : "[email protected]", | |||
"scale" : "1x" | |||
}, | |||
{ | |||
"size" : "40x40", | |||
"idiom" : "ipad", | |||
"filename" : "[email protected]", | |||
"scale" : "2x" | |||
}, | |||
{ | |||
"size" : "76x76", | |||
"idiom" : "ipad", | |||
"filename" : "[email protected]", | |||
"scale" : "1x" | |||
}, | |||
{ | |||
"size" : "76x76", | |||
"idiom" : "ipad", | |||
"filename" : "[email protected]", | |||
"scale" : "2x" | |||
}, | |||
{ | |||
"size" : "83.5x83.5", | |||
"idiom" : "ipad", | |||
"filename" : "[email protected]", | |||
"scale" : "2x" | |||
}, | |||
{ | |||
"size" : "1024x1024", | |||
"idiom" : "ios-marketing", | |||
"filename" : "[email protected]", | |||
"scale" : "1x" | |||
} | |||
], | |||
"info" : { | |||
"version" : 1, | |||
"author" : "xcode" | |||
} | |||
} |
564 Bytes
{ | |||
"images" : [ | |||
{ | |||
"idiom" : "universal", | |||
"filename" : "LaunchImage.png", | |||
"scale" : "1x" | |||
}, | |||
{ | |||
"idiom" : "universal", | |||
"filename" : "[email protected]", | |||
"scale" : "2x" | |||
}, | |||
{ | |||
"idiom" : "universal", | |||
"filename" : "[email protected]", | |||
"scale" : "3x" | |||
} | |||
], | |||
"info" : { | |||
"version" : 1, | |||
"author" : "xcode" | |||
} | |||
} |
68 Bytes
68 Bytes
68 Bytes
example/ios/Runner/Info.plist
deleted
100755 → 0
example/lib/main.dart
deleted
100755 → 0
example/lib/meeting_screen.dart
deleted
100755 → 0
import 'dart:async'; | |||
import 'dart:io'; | |||
import 'package:flutter/foundation.dart'; | |||
import 'package:flutter/material.dart'; | |||
import 'package:flutter_zoom_sdk/zoom_options.dart'; | |||
import 'package:flutter_zoom_sdk/zoom_view.dart'; | |||
class MeetingWidget extends StatefulWidget { | |||
const MeetingWidget({Key? key}) : super(key: key); | |||
@override | |||
_MeetingWidgetState createState() => _MeetingWidgetState(); | |||
} | |||
class _MeetingWidgetState extends State<MeetingWidget> { | |||
TextEditingController meetingIdController = TextEditingController(); | |||
TextEditingController meetingPasswordController = TextEditingController(); | |||
late Timer timer; | |||
@override | |||
Widget build(BuildContext context) { | |||
// new page needs scaffolding! | |||
return Scaffold( | |||
appBar: AppBar( | |||
title: const Text('Join meeting'), | |||
), | |||
body: Padding( | |||
padding: const EdgeInsets.symmetric( | |||
vertical: 8.0, | |||
horizontal: 32.0, | |||
), | |||
child: Column( | |||
children: [ | |||
Padding( | |||
padding: const EdgeInsets.only(bottom: 8.0), | |||
child: TextField( | |||
controller: meetingIdController, | |||
decoration: const InputDecoration( | |||
border: OutlineInputBorder(), | |||
labelText: 'Meeting ID', | |||
), | |||
), | |||
), | |||
Padding( | |||
padding: const EdgeInsets.only(bottom: 8.0), | |||
child: TextField( | |||
controller: meetingPasswordController, | |||
decoration: const InputDecoration( | |||
border: OutlineInputBorder(), | |||
labelText: 'Password', | |||
), | |||
), | |||
), | |||
Padding( | |||
padding: const EdgeInsets.all(16.0), | |||
child: Builder( | |||
builder: (context) { | |||
// The basic Material Design action button. | |||
return ElevatedButton( | |||
style: ElevatedButton.styleFrom( | |||
primary: Colors.blue, // background | |||
onPrimary: Colors.white, // foreground | |||
), | |||
onPressed: () => { | |||
{joinMeeting(context)} | |||
}, | |||
child: const Text('Join'), | |||
); | |||
}, | |||
), | |||
), | |||
Padding( | |||
padding: const EdgeInsets.all(16.0), | |||
child: Builder( | |||
builder: (context) { | |||
// The basic Material Design action button. | |||
return ElevatedButton( | |||
style: ElevatedButton.styleFrom( | |||
primary: Colors.blue, // background | |||
onPrimary: Colors.white, // foreground | |||
), | |||
onPressed: () => { | |||
{startMeeting(context)} | |||
}, | |||
child: const Text('Start Meeting'), | |||
); | |||
}, | |||
), | |||
), | |||
Padding( | |||
padding: const EdgeInsets.all(16.0), | |||
child: Builder( | |||
builder: (context) { | |||
// The basic Material Design action button. | |||
return ElevatedButton( | |||
style: ElevatedButton.styleFrom( | |||
primary: Colors.blue, // background | |||
onPrimary: Colors.white, // foreground | |||
), | |||
onPressed: () => startMeetingNormal(context), | |||
child: const Text('Start Meeting With Meeting ID'), | |||
); | |||
}, | |||
), | |||
) | |||
], | |||
), | |||
), | |||
); | |||
} | |||
//API KEY & SECRET is required for below methods to work | |||
//Join Meeting With Meeting ID & Password | |||
joinMeeting(BuildContext context) { | |||
bool _isMeetingEnded(String status) { | |||
var result = false; | |||
if (Platform.isAndroid) { | |||
result = status == "MEETING_STATUS_DISCONNECTING" || | |||
status == "MEETING_STATUS_FAILED"; | |||
} else { | |||
result = status == "MEETING_STATUS_IDLE"; | |||
} | |||
return result; | |||
} | |||
if (meetingIdController.text.isNotEmpty && | |||
meetingPasswordController.text.isNotEmpty) { | |||
ZoomOptions zoomOptions = ZoomOptions( | |||
domain: "zoom.us", | |||
appKey: "XKE4uWfeLwWEmh78YMbC6mqKcF8oM4YHTr9I", //API KEY FROM ZOOM | |||
appSecret: | |||
"bT7N61pQzaLXU6VLj9TVl7eYuLbqAiB0KAdb", //API SECRET FROM ZOOM | |||
); | |||
var meetingOptions = ZoomMeetingOptions( | |||
userId: 'username', | |||
/// pass username for join meeting only --- Any name eg:- EVILRATT. | |||
meetingId: meetingIdController.text, | |||
/// pass meeting id for join meeting only | |||
meetingPassword: meetingPasswordController.text, | |||
/// pass meeting password for join meeting only | |||
disableDialIn: "true", | |||
disableDrive: "true", | |||
disableInvite: "true", | |||
disableShare: "true", | |||
disableTitlebar: "false", | |||
viewOptions: "true", | |||
noAudio: "false", | |||
noDisconnectAudio: "false"); | |||
var zoom = ZoomView(); | |||
zoom.initZoom(zoomOptions).then((results) { | |||
if (results[0] == 0) { | |||
zoom.onMeetingStatus().listen((status) { | |||
if (kDebugMode) { | |||
print( | |||
"[Meeting Status Stream] : " + status[0] + " - " + status[1]); | |||
} | |||
if (_isMeetingEnded(status[0])) { | |||
if (kDebugMode) { | |||
print("[Meeting Status] :- Ended"); | |||
} | |||
timer.cancel(); | |||
} | |||
}); | |||
if (kDebugMode) { | |||
print("listen on event channel"); | |||
} | |||
zoom.joinMeeting(meetingOptions).then((joinMeetingResult) { | |||
timer = Timer.periodic(const Duration(seconds: 2), (timer) { | |||
zoom.meetingStatus(meetingOptions.meetingId!).then((status) { | |||
if (kDebugMode) { | |||
print("[Meeting Status Polling] : " + | |||
status[0] + | |||
" - " + | |||
status[1]); | |||
} | |||
}); | |||
}); | |||
}); | |||
} | |||
}).catchError((error) { | |||
if (kDebugMode) { | |||
print("[Error Generated] : " + error); | |||
} | |||
}); | |||
} else { | |||
if (meetingIdController.text.isEmpty) { | |||
ScaffoldMessenger.of(context).showSnackBar(const SnackBar( | |||
content: Text("Enter a valid meeting id to continue."), | |||
)); | |||
} else if (meetingPasswordController.text.isEmpty) { | |||
ScaffoldMessenger.of(context).showSnackBar(const SnackBar( | |||
content: Text("Enter a meeting password to start."), | |||
)); | |||
} | |||
} | |||
} | |||
//Start Meeting With Random Meeting ID ----- Emila & Password For Zoom is required. | |||
startMeeting(BuildContext context) { | |||
bool _isMeetingEnded(String status) { | |||
var result = false; | |||
if (Platform.isAndroid) { | |||
result = status == "MEETING_STATUS_DISCONNECTING" || | |||
status == "MEETING_STATUS_FAILED"; | |||
} else { | |||
result = status == "MEETING_STATUS_IDLE"; | |||
} | |||
return result; | |||
} | |||
ZoomOptions zoomOptions = ZoomOptions( | |||
domain: "zoom.us", | |||
appKey: | |||
"XKE4uWfeLwWEmh78YMbC6mqKcF8oM4YHTr9I", //API KEY FROM ZOOM -- SDK KEY | |||
appSecret: | |||
"bT7N61pQzaLXU6VLj9TVl7eYuLbqAiB0KAdb", //API SECRET FROM ZOOM -- SDK SECRET | |||
); | |||
var meetingOptions = ZoomMeetingOptions( | |||
userId: '[email protected]', //pass host email for zoom | |||
userPassword: 'Dlinkmoderm0641', //pass host password for zoom | |||
disableDialIn: "false", | |||
disableDrive: "false", | |||
disableInvite: "false", | |||
disableShare: "false", | |||
disableTitlebar: "false", | |||
viewOptions: "true", | |||
noAudio: "false", | |||
noDisconnectAudio: "false"); | |||
var zoom = ZoomView(); | |||
zoom.initZoom(zoomOptions).then((results) { | |||
if (results[0] == 0) { | |||
zoom.onMeetingStatus().listen((status) { | |||
if (kDebugMode) { | |||
print("[Meeting Status Stream] : " + status[0] + " - " + status[1]); | |||
} | |||
if (_isMeetingEnded(status[0])) { | |||
if (kDebugMode) { | |||
print("[Meeting Status] :- Ended"); | |||
} | |||
timer.cancel(); | |||
} | |||
if (status[0] == "MEETING_STATUS_INMEETING") { | |||
zoom.meetinDetails().then((meetingDetailsResult) { | |||
if (kDebugMode) { | |||
print("[MeetingDetailsResult] :- " + | |||
meetingDetailsResult.toString()); | |||
} | |||
}); | |||
} | |||
}); | |||
zoom.startMeeting(meetingOptions).then((loginResult) { | |||
if (kDebugMode) { | |||
print( | |||
"[LoginResult] :- " + loginResult[0] + " - " + loginResult[1]); | |||
} | |||
if (loginResult[0] == "SDK ERROR") { | |||
//SDK INIT FAILED | |||
if (kDebugMode) { | |||
print((loginResult[1]).toString()); | |||
} | |||
return; | |||
} else if (loginResult[0] == "LOGIN ERROR") { | |||
//LOGIN FAILED - WITH ERROR CODES | |||
if (kDebugMode) { | |||
if (loginResult[1] == | |||
ZoomError.ZOOM_AUTH_ERROR_WRONG_ACCOUNTLOCKED) { | |||
print("Multiple Failed Login Attempts"); | |||
} | |||
print((loginResult[1]).toString()); | |||
} | |||
return; | |||
} else { | |||
//LOGIN SUCCESS & MEETING STARTED - WITH SUCCESS CODE 200 | |||
if (kDebugMode) { | |||
print((loginResult[0]).toString()); | |||
} | |||
} | |||
}).catchError((error) { | |||
if (kDebugMode) { | |||
print("[Error Generated] : " + error); | |||
} | |||
}); | |||
} | |||
}).catchError((error) { | |||
if (kDebugMode) { | |||
print("[Error Generated] : " + error); | |||
} | |||
}); | |||
} | |||
//Start Meeting With Custom Meeting ID ----- Emila & Password For Zoom is required. | |||
startMeetingNormal(BuildContext context) { | |||
bool _isMeetingEnded(String status) { | |||
var result = false; | |||
if (Platform.isAndroid) { | |||
result = status == "MEETING_STATUS_DISCONNECTING" || | |||
status == "MEETING_STATUS_FAILED"; | |||
} else { | |||
result = status == "MEETING_STATUS_IDLE"; | |||
} | |||
return result; | |||
} | |||
ZoomOptions zoomOptions = ZoomOptions( | |||
domain: "zoom.us", | |||
appKey: | |||
"XKE4uWfeLwWEmh78YMbC6mqKcF8oM4YHTr9I", //API KEY FROM ZOOM -- SDK KEY | |||
appSecret: | |||
"bT7N61pQzaLXU6VLj9TVl7eYuLbqAiB0KAdb", //API SECRET FROM ZOOM -- SDK SECRET | |||
); | |||
var meetingOptions = ZoomMeetingOptions( | |||
userId: '[email protected]', //pass host email for zoom | |||
userPassword: 'Dlinkmoderm0641', //pass host password for zoom | |||
meetingId: meetingIdController.text, // | |||
disableDialIn: "false", | |||
disableDrive: "false", | |||
disableInvite: "false", | |||
disableShare: "false", | |||
disableTitlebar: "false", | |||
viewOptions: "false", | |||
noAudio: "false", | |||
noDisconnectAudio: "false"); | |||
var zoom = ZoomView(); | |||
zoom.initZoom(zoomOptions).then((results) { | |||
if (results[0] == 0) { | |||
zoom.onMeetingStatus().listen((status) { | |||
if (kDebugMode) { | |||
print("[Meeting Status Stream] : " + status[0] + " - " + status[1]); | |||
} | |||
if (_isMeetingEnded(status[0])) { | |||
if (kDebugMode) { | |||
print("[Meeting Status] :- Ended"); | |||
} | |||
timer.cancel(); | |||
} | |||
if (status[0] == "MEETING_STATUS_INMEETING") { | |||
zoom.meetinDetails().then((meetingDetailsResult) { | |||
if (kDebugMode) { | |||
print("[MeetingDetailsResult] :- " + | |||
meetingDetailsResult.toString()); | |||
} | |||
}); | |||
} | |||
}); | |||
zoom.startMeetingNormal(meetingOptions).then((loginResult) { | |||
if (kDebugMode) { | |||
print("[LoginResult] :- " + loginResult.toString()); | |||
} | |||
if (loginResult[0] == "SDK ERROR") { | |||
//SDK INIT FAILED | |||
if (kDebugMode) { | |||
print((loginResult[1]).toString()); | |||
} | |||
} else if (loginResult[0] == "LOGIN ERROR") { | |||
//LOGIN FAILED - WITH ERROR CODES | |||
if (kDebugMode) { | |||
print((loginResult[1]).toString()); | |||
} | |||
} else { | |||
//LOGIN SUCCESS & MEETING STARTED - WITH SUCCESS CODE 200 | |||
if (kDebugMode) { | |||
print((loginResult[0]).toString()); | |||
} | |||
} | |||
}); | |||
} | |||
}).catchError((error) { | |||
if (kDebugMode) { | |||
print("[Error Generated] : " + error); | |||
} | |||
}); | |||
} | |||
} |
example/pubspec.lock
deleted
100644 → 0
example/pubspec.yaml
deleted
100755 → 0
example/web/favicon.png
deleted
100644 → 0
917 Bytes
example/web/icons/Icon-192.png
deleted
100644 → 0
5.17 KB
example/web/icons/Icon-512.png
deleted
100644 → 0
8.06 KB
5.46 KB
20.5 KB
example/web/index.html
deleted
100644 → 0
example/web/manifest.json
deleted
100644 → 0