import 'package:agora_rtc_engine/agora_rtc_engine.dart'; import 'package:permission_handler/permission_handler.dart'; import '../config/constants/app_constant.dart'; class AgoraService { static RtcEngine? _engine; static bool _isInitialized = false; static Future initialize() async { if (_isInitialized) return; await _requestPermissions(); _engine = createAgoraRtcEngine(); await _engine!.initialize(const RtcEngineContext( appId: agoraAppId, channelProfile: ChannelProfileType.channelProfileCommunication, )); await _engine!.enableVideo(); await _engine!.enableAudio(); _isInitialized = true; } static Future _requestPermissions() async { await [ Permission.camera, Permission.microphone, ].request(); } static RtcEngine? get engine => _engine; static Future dispose() async { await _engine?.leaveChannel(); await _engine?.release(); _engine = null; _isInitialized = false; } }