lib_wiseapi_flutter 0.0.3 copy "lib_wiseapi_flutter: ^0.0.3" to clipboard
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.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:lib_wiseapi_flutter/lib_wiseapi_flutter.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'WiseConf Example',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {
  const HomePage({super.key});

  @override
  State<HomePage> createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  final _domainController = TextEditingController();
  final _sessionController = TextEditingController();
  final _tokenController = TextEditingController();

  bool _showConference = false;

  @override
  void dispose() {
    _domainController.dispose();
    _sessionController.dispose();
    _tokenController.dispose();
    super.dispose();
  }

  void _openConference() {
    final domain = _domainController.text.trim();
    final session = _sessionController.text.trim();
    final token = _tokenController.text.trim();

    if (domain.isEmpty || session.isEmpty || token.isEmpty) {
      ScaffoldMessenger.of(context).showSnackBar(
        const SnackBar(content: Text('Preencha todos os campos')),
      );
      return;
    }

    setState(() {
      _showConference = true;
    });
  }

  void _closeConference() {
    setState(() {
      _showConference = false;
    });
  }

  @override
  Widget build(BuildContext context) {
    if (_showConference) {
      return Scaffold(
        body: Column(
          children: [
            Container(
              color: const Color(0xFFF0F0F0),
              width: double.infinity,
              padding: const EdgeInsets.fromLTRB(10, 50, 10, 10),
              child: Column(
                crossAxisAlignment: CrossAxisAlignment.start,
                children: [
                  const Text(
                    'Valores enviados:',
                    style: TextStyle(fontSize: 14, fontWeight: FontWeight.bold),
                  ),
                  const SizedBox(height: 5),
                  Text('Domain: ${_domainController.text}',
                      style: const TextStyle(fontSize: 12, color: Color(0xFF333333))),
                  Text('Session: ${_sessionController.text}',
                      style: const TextStyle(fontSize: 12, color: Color(0xFF333333))),
                  Text('SessionToken: ${_tokenController.text}',
                      style: const TextStyle(fontSize: 12, color: Color(0xFF333333))),
                ],
              ),
            ),
            Expanded(
              child: WiseConf(
                domain: _domainController.text.trim(),
                session: _sessionController.text.trim(),
                sessionToken: _tokenController.text.trim(),
                enablePreJoin: false,
                startWithTileView: true,
                buttons: const [
                  ToolbarButton.camera,
                  ToolbarButton.microphone,
                  ToolbarButton.hangup,
                ],
                logo: 'https://wisecare.com.br/images/logo-rodape.svg',
                listeners: WiseConfListeners(
                  onReadyToClose: _closeConference,
                  onPermissionDenied: (denied) {
                    ScaffoldMessenger.of(context).showSnackBar(
                      SnackBar(
                        content: Text(
                          'Permissões negadas: ${denied.join(', ')}',
                        ),
                      ),
                    );
                  },
                  onMediaDevicesUnavailable: (data) {
                    ScaffoldMessenger.of(context).showSnackBar(
                      SnackBar(
                        content: Text(
                          'Dispositivos de mídia indisponíveis: ${data['reason'] ?? 'unknown'}',
                        ),
                      ),
                    );
                  },
                ),
              ),
            ),
          ],
        ),
      );
    }

    return Scaffold(
      body: Center(
        child: SingleChildScrollView(
          padding: const EdgeInsets.all(20),
          child: Column(
            children: [
              const Text(
                'WiseAPI - Flutter',
                style: TextStyle(fontSize: 24, fontWeight: FontWeight.bold),
              ),
              const SizedBox(height: 30),
              TextField(
                controller: _domainController,
                decoration: const InputDecoration(
                  labelText: 'Domain',
                  hintText: 'Digite o domain',
                  border: OutlineInputBorder(),
                ),
                autocorrect: false,
                textCapitalization: TextCapitalization.none,
              ),
              const SizedBox(height: 15),
              TextField(
                controller: _sessionController,
                decoration: const InputDecoration(
                  labelText: 'Session',
                  hintText: 'Digite a session',
                  border: OutlineInputBorder(),
                ),
                autocorrect: false,
                textCapitalization: TextCapitalization.none,
              ),
              const SizedBox(height: 15),
              TextField(
                controller: _tokenController,
                decoration: const InputDecoration(
                  labelText: 'Session Token',
                  hintText: 'Digite o session token',
                  border: OutlineInputBorder(),
                ),
                autocorrect: false,
                textCapitalization: TextCapitalization.none,
                maxLines: 3,
              ),
              const SizedBox(height: 20),
              SizedBox(
                width: double.infinity,
                height: 50,
                child: FilledButton(
                  onPressed: _openConference,
                  child: const Text(
                    'Abrir Conferencia',
                    style: TextStyle(fontSize: 18),
                  ),
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
0
likes
110
points
216
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Flutter SDK for WiseAPI, a cloud-based video conferencing API for integrating real-time video, audio, and collaboration features into your Flutter apps.

Homepage

License

unknown (license)

Dependencies

flutter, permission_handler, webview_flutter, webview_flutter_android, webview_flutter_wkwebview

More

Packages that depend on lib_wiseapi_flutter