【发布时间】:2021-10-31 05:46:21
【问题描述】:
我正在尝试集成 Agora SDK,我已经能够将其设置为正常运行,但唯一的问题是本地视图是空白的,直到我进行热重启,热重启后一切正常,远程视图工作正常,我一直在尝试调试此问题无济于事,以下是我的代码。
导入“飞镖:异步”; 导入“包:颤振/material.dart”; 导入“包:permission_handler/permission_handler.dart”; 导入“包:agora_rtc_engine/rtc_engine.dart”; 将'package:agora_rtc_engine/rtc_local_view.dart' 导入为 RtcLocalView; 导入'package:agora_rtc_engine/rtc_remote_view.dart'作为RtcRemoteView; 常量 appId = "e660ebb529e34d838fedc01ed1a1b5e4"; 常量令牌 = “006e660ebb529e34d838fedc01ed1a1b5e4IABB69OL6buUPHAgM4dq+hpsHKMLCooStMhXyvSdauF2eNzDPrsAAAAAEADHF4BY49MwYQEAAQDi0zBh”; void main() => runApp(MaterialApp(home: MyApp())); 类 MyApp 扩展 StatefulWidget { @覆盖 _MyAppState createState() => _MyAppState(); } 类 _MyAppState 扩展状态 { int _remoteUid; RtcEngine _engine; @覆盖 无效初始化状态(){ super.initState(); 初始化Agora(); } 未来 initAgora() 异步 { // 获取权限 等待 [Permission.microphone, Permission.camera].request(); //创建引擎 _engine = 等待 RtcEngine.create(appId); 等待_engine.enableVideo(); _engine.setEventHandler( RtcEngineEventHandler( joinChannelSuccess: (String channel, int uid, int elapsed) { print("本地用户 $uid 加入"); }, userJoined: (int uid, int elapsed) { print("远程用户 $uid 加入"); 设置状态((){ _remoteUid = uid; }); }, userOffline: (int uid, UserOfflineReason 原因) { print("远程用户$uid左声道"); 设置状态((){ _remoteUid = null; }); }, ), ); await _engine.joinChannel(token, "firstchannel", null, 0); } // 创建具有本地视图和远程视图的 UI @覆盖 小部件构建(BuildContext 上下文){ 返回脚手架( 应用栏:应用栏( title: const Text('Agora 视频通话'), ), 正文:堆栈( 孩子们: [ 中心( 孩子:_remoteVideo(), ), 对齐( 对齐方式:Alignment.topLeft, 孩子:容器( 宽度:100, 身高:100, 孩子:中心( 孩子:RtcLocalView.SurfaceView(), ), ), ), ], ), ); } 小部件 _renderLocalPreview() { 返回 RtcLocalView.SurfaceView(); } // 显示远程用户的视频 小部件 _remoteVideo() { 如果(_remoteUid != null){ 返回 RtcRemoteView.SurfaceView(uid: _remoteUid); } 别的 { 返回文本( '请等待远程用户加入', textAlign: TextAlign.center, ); } } }【问题讨论】: