import 'package:agora_rtc_engine/agora_rtc_engine.dart'; import 'package:flutter/material.dart'; import 'package:permission_handler/permission_handler.dart'; import '../Provider/public_keys_provider.dart'; class AgoraService { static RtcEngine? _engine; static bool _isInitialized = false; static Future initialize() async { if (_isInitialized) return; if (!publickeys.guardKey(publickeys.agoraAppId, 'agoraAppId')) { debugPrint('[AgoraService] Agora App ID not configured — skipping init'); return; } await _requestPermissions(); _engine = createAgoraRtcEngine(); await _engine!.initialize(RtcEngineContext( appId: publickeys.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 bool get isInitialized => _isInitialized; static Future dispose() async { await _engine?.leaveChannel(); await _engine?.release(); _engine = null; _isInitialized = false; } }