lib_wiseapi_flutter 0.0.3
lib_wiseapi_flutter: ^0.0.3 copied to clipboard
Flutter SDK for WiseAPI, a cloud-based video conferencing API for integrating real-time video, audio, and collaboration features into your Flutter apps.
lib_wiseapi_flutter #
Pacote Flutter para integrar videoconferencias da WiseAPI.
Funcionalidades #
- Widget
WiseConfpronto para uso que renderiza a conferencia em um WebView - Autenticacao via JWT (sessionToken)
- Configuracao de audio/video mutado ao entrar
- Tile view automatico ao entrar na sala
- Customizacao dos botoes da toolbar
- Pre-join page configuravel
- Logo customizavel
- Informacoes do usuario (nome, email, avatar)
- Listeners para todos os eventos da conferencia (entrada/saida de participantes, mute, chat, etc.)
Instalacao #
Adicione ao pubspec.yaml:
dependencies:
lib_wiseapi_flutter:
git:
url: <url-do-repositorio>
Android #
Adicione as permissoes no AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
iOS #
Adicione no Info.plist:
<key>NSCameraUsageDescription</key>
<string>Necessario para videoconferencia</string>
<key>NSMicrophoneUsageDescription</key>
<string>Necessario para videoconferencia</string>
Uso #
import 'package:lib_wiseapi_flutter/lib_wiseapi_flutter.dart';
class ConferencePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: WiseConf(
domain: 'conf.homolog.v4h.cloud',
session: 'sala-123',
sessionToken: 'seu-jwt-token',
startWithAudioMuted: true,
startWithVideoMuted: false,
startWithTileView: true,
enablePreJoin: false,
logo: 'https://example.com/logo.png',
buttons: [
ToolbarButton.microphone,
ToolbarButton.camera,
ToolbarButton.hangup,
ToolbarButton.chat,
ToolbarButton.tileview,
ToolbarButton.raisehand,
],
userInfo: const UserInfo(
displayName: 'Joao Silva',
email: 'joao@example.com',
),
listeners: WiseConfListeners(
onConferenceJoined: (data) {
debugPrint('Entrou na conferencia: $data');
},
onConferenceLeft: (data) {
debugPrint('Saiu da conferencia: $data');
},
onParticipantJoined: (data) {
debugPrint('Participante entrou: $data');
},
onParticipantLeft: (data) {
debugPrint('Participante saiu: $data');
},
onAudioMuteStatusChanged: (muted) {
debugPrint('Audio mutado: $muted');
},
onVideoMuteStatusChanged: (muted) {
debugPrint('Video mutado: $muted');
},
onReadyToClose: () {
Navigator.of(context).pop();
},
onError: (error) {
debugPrint('Erro: $error');
},
),
onLoad: () {
debugPrint('WebView carregou');
},
),
);
}
}
API #
WiseConf #
| Parametro | Tipo | Obrigatorio | Default | Descricao |
|---|---|---|---|---|
domain |
String |
Sim | - | Dominio do servidor |
session |
String |
Sim | - | Nome da sala |
sessionToken |
String |
Sim | - | Token JWT para autenticacao |
startWithAudioMuted |
bool |
Nao | false |
Iniciar com audio mutado |
startWithVideoMuted |
bool |
Nao | false |
Iniciar com video mutado |
startWithTileView |
bool |
Nao | false |
Iniciar em visualização de blocos |
enablePreJoin |
bool |
Nao | false |
Habilitar tela de pre-join |
logo |
String? |
Nao | null |
URL do logo customizado |
shareLink |
String? |
Nao | null |
Link de compartilhamento |
buttons |
List<ToolbarButton>? |
Nao | null |
Botoes visiveis na toolbar |
userInfo |
UserInfo? |
Nao | null |
Informacoes do usuario |
listeners |
WiseConfListeners |
Nao | const WiseConfListeners() |
Callbacks de eventos |
onLoad |
VoidCallback? |
Nao | null |
Callback quando o WebView carrega |
WiseConfListeners #
| Callback | Tipo | Descricao |
|---|---|---|
onConferenceJoined |
Function(Map data) |
Usuario entrou na conferencia |
onConferenceLeft |
Function(Map data) |
Usuario saiu da conferencia |
onParticipantJoined |
Function(Map data) |
Participante entrou |
onParticipantLeft |
Function(Map data) |
Participante saiu |
onAudioMuteStatusChanged |
Function(bool muted) |
Estado do mute de audio mudou |
onVideoMuteStatusChanged |
Function(bool muted) |
Estado do mute de video mudou |
onReadyToClose |
Function() |
Conferencia pronta para fechar |
onChatMessageReceived |
Function(Map data) |
Mensagem de chat recebida |
onChatUpdated |
Function(Map data) |
Chat atualizado |
onError |
Function(dynamic error) |
Erro ocorreu |
onVideoConferenceJoined |
Function(Map data) |
Alias para onConferenceJoined |
onVideoConferenceLeft |
Function(Map data) |
Alias para onConferenceLeft |
ToolbarButton #
Enum com todos os botoes disponiveis:
avatar, camera, chat, desktop, download, embedmeeting, etherpad, feedback, filmstrip, fullscreen, hangup, help, highlight, info, invite, libras, linktosalesforce, livestreaming, microphone, muteEveryone, noisesuppression, participantsPane, profile, raisehand, recording, security, selectBackground, settings, shareaudio, sharedvideo, shortcuts, stats, tileview, toggleCamera, transcription, videoquality
UserInfo #
| Parametro | Tipo | Descricao |
|---|---|---|
displayName |
String? |
Nome exibido na conferencia |
email |
String? |
Email do usuario |
avatarURL |
String? |
URL do avatar |