lib_wiseapi_flutter

Pacote Flutter para integrar videoconferencias da WiseAPI.

Funcionalidades

  • Widget WiseConf pronto 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