hms_video_plugin 0.1.0 copy "hms_video_plugin: ^0.1.0" to clipboard
hms_video_plugin: ^0.1.0 copied to clipboard

Integrate virtual backgrounds, blur backgrounds effects in your Flutter app with the 100ms Video Plugin.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:hms_room_kit/hms_room_kit.dart';
import 'package:permission_handler/permission_handler.dart';

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

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      themeMode: ThemeMode.dark,
      darkTheme: ThemeData.dark(),
      home: const StartScreen(),
    );
  }
}

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

  @override
  State<StartScreen> createState() => _StartScreenState();
}

class _StartScreenState extends State<StartScreen> {
  bool _isLoading = false;

  Future<void> _requestPermissions() async {
    print('Start button pressed!');
    setState(() {
      _isLoading = true;
    });

    try {
      print('Requesting camera permission...');
      final cameraStatus = await Permission.camera.request();
      print('Camera permission status: $cameraStatus');

      print('Requesting microphone permission...');
      final microphoneStatus = await Permission.microphone.request();
      print('Microphone permission status: $microphoneStatus');

      setState(() {
        _isLoading = false;
      });

      if (cameraStatus.isGranted && microphoneStatus.isGranted) {
        // Navigate to HMSPrebuilt
        if (mounted) {
          Navigator.of(context).push(
            MaterialPageRoute(
              builder: (context) => HMSPrebuilt(
                roomCode: "cte-xyht-skd",
              ),
            ),
          );
        }
      } else {
        // Show error message with details
        if (mounted) {
          String message = 'Permissions needed:\n';
          if (!cameraStatus.isGranted) message += '- Camera\n';
          if (!microphoneStatus.isGranted) message += '- Microphone\n';

          ScaffoldMessenger.of(context).showSnackBar(
            SnackBar(
              content: Text(message),
              duration: const Duration(seconds: 3),
              action: SnackBarAction(
                label: 'Settings',
                onPressed: () => openAppSettings(),
              ),
            ),
          );
        }
      }
    } catch (e) {
      setState(() {
        _isLoading = false;
      });

      if (mounted) {
        ScaffoldMessenger.of(context).showSnackBar(
          SnackBar(
            content: Text('Error requesting permissions: $e'),
            duration: const Duration(seconds: 3),
          ),
        );
      }
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: _isLoading
            ? const CircularProgressIndicator()
            : ElevatedButton(
                onPressed: _requestPermissions,
                style: ElevatedButton.styleFrom(
                  padding: const EdgeInsets.symmetric(
                    horizontal: 48,
                    vertical: 16,
                  ),
                  textStyle: const TextStyle(fontSize: 18),
                ),
                child: const Text('Start'),
              ),
      ),
    );
  }
}
4
likes
150
points
105
downloads

Documentation

Documentation
API reference

Publisher

verified publisher100ms.live

Weekly Downloads

Integrate virtual backgrounds, blur backgrounds effects in your Flutter app with the 100ms Video Plugin.

Homepage
Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

flutter, hmssdk_flutter

More

Packages that depend on hms_video_plugin

Packages that implement hms_video_plugin