【问题标题】:Agora local view showing blank screen on Flutter在 Flutter 上显示空白屏幕的 Agora 本地视图
【发布时间】: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, ); } } }

【问题讨论】:

    标签: android ios flutter dart


    【解决方案1】:

    在解决这个问题一段时间后,我意识到问题出在哪里。在尝试显示本地预览之前,我需要包含一个布尔变量来检查本地用户是否已加入频道。显然,Agora SDK 的设计目的是仅在用户加入频道时才显示本地预览。

    Widget _renderLocalPreview() {
        if (_localUserJoined) {
          return RtcLocalView.SurfaceView();
        } else {
          return Text(
            'Joining Channel, Please wait.....',
            textAlign: TextAlign.center,
          );
        }
      }
    

    【讨论】:

      猜你喜欢
      • 2020-07-17
      • 1970-01-01
      • 2022-11-03
      • 2020-01-01
      • 2013-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多