Flutter音视频UI组件插件wend_agora_uikits的使用

发布于 1周前 作者 nodeper 来自 Flutter

Flutter音视频UI组件插件wend_agora_uikits的使用


Agora VideoUIKit for Flutter


Platform GitHub Workflow Status License: MIT

简介:
立即在您的Flutter应用中集成Agora视频通话或视频流功能。


开始使用

Agora Flutter VideoUIKit布局示例

Agora Flutter VideoUIKit Layout Sample


路线图

  • ❌ 添加用户名
  • ✅ 更多事件回调
  • ✅ 添加RTM SDK
  • ❌ 屏幕共享
  • ❌ 语音通话布局
  • ❌ 可重新排序的列表视图(浮动布局)
  • ❌ 云录制
  • ❌ 将观众提升为广播员角色。
  • ✅ 远程成员静音/取消静音
  • ✅ Flutter Web支持作为预发布版本
  • ❌ Flutter桌面支持作为预发布版本

使用要求


安装

在您的Flutter项目中,将agora_uikit作为依赖项添加到pubspec.yaml文件中。

在Android项目的build.gradle文件中,添加以下内容到repositories部分末尾:

allprojects {
	repositories {
		...
		maven { url 'https://jitpack.io' }
	}
}

设备权限

Android

打开AndroidManifest.xml文件并添加所需的设备权限:

<manifest>
...
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- Agora SDK需要蓝牙权限以支持蓝牙设备 -->
<uses-permission android:name="android.permission.BLUETOOTH" />
...
</manifest>

iOS

打开Info.plist文件并添加以下内容:

  • 隐私 - 麦克风使用描述
  • 隐私 - 摄像头使用描述

如果需要在后台运行语音通话,请启用后台模式。在Xcode中选择应用程序目标,点击“Capabilities”选项卡,启用“Background Modes”,并勾选“Audio, AirPlay, and Picture in Picture”。


使用方法

以下是完整的代码示例,展示如何使用wend_agora_uikits插件进行视频通话:

import 'package:wend_agora_uikits/agora_uikit.dart';
import 'package:flutter/material.dart';

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

class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  // 初始化Agora客户端
  final AgoraClient client = AgoraClient(
    agoraConnectionData: AgoraConnectionData(
      appId: "<--Add your App Id here-->", // 替换为您的Agora App ID
      channelName: "test",
      username: "user", // 用户名(可选)
    ),
  );

  [@override](/user/override)
  void initState() {
    super.initState();
    initAgora(); // 初始化Agora引擎
  }

  void initAgora() async {
    await client.initialize(); // 初始化Agora客户端
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Agora VideoUIKit'), // 设置应用标题
          centerTitle: true,
        ),
        body: SafeArea(
          child: Stack(
            children: [
              // 视频查看器
              AgoraVideoViewer(
                client: client, // 绑定Agora客户端
                layoutType: Layout.floating, // 设置布局类型为浮动
                enableHostControls: true, // 启用主持人控件
              ),
              // 视频按钮
              AgoraVideoButtons(
                client: client, // 绑定Agora客户端
              ),
            ],
          ),
        ),
      ),
    );
  }
}

更多关于Flutter音视频UI组件插件wend_agora_uikits的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter音视频UI组件插件wend_agora_uikits的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


wend_agora_uikits 是一个基于 Agora SDK 的 Flutter 插件,用于快速集成音视频通话的 UI 组件。它提供了一些预构建的 UI 组件,帮助开发者快速实现音视频通话功能,而无需从头开始设计和开发 UI。

安装

首先,你需要在 pubspec.yaml 文件中添加 wend_agora_uikits 依赖:

dependencies:
  flutter:
    sdk: flutter
  wend_agora_uikits: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来安装依赖。

基本使用

  1. 初始化 Agora SDK

    在使用 wend_agora_uikits 之前,你需要初始化 Agora SDK。通常,你需要在应用的入口处进行初始化:

    import 'package:agora_rtc_engine/agora_rtc_engine.dart';
    import 'package:wend_agora_uikits/wend_agora_uikits.dart';
    
    void main() async {
      WidgetsFlutterBinding.ensureInitialized();
      
      // 初始化 Agora SDK
      await AgoraRtcEngine.create('YOUR_APP_ID');
      
      runApp(MyApp());
    }
  2. 使用 AgoraUIKit 组件

    wend_agora_uikits 提供了一个 AgoraUIKit 组件,你可以直接使用它来显示音视频通话的 UI。

    import 'package:flutter/material.dart';
    import 'package:wend_agora_uikits/wend_agora_uikits.dart';
    
    class VideoCallScreen extends StatelessWidget {
      final String channelName;
      final String token;
    
      VideoCallScreen({required this.channelName, required this.token});
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          body: AgoraUIKit(
            appId: 'YOUR_APP_ID',
            channelName: channelName,
            token: token,
            onCallEnd: () {
              // 通话结束后的回调
              Navigator.pop(context);
            },
          ),
        );
      }
    }
  3. 启动音视频通话

    你可以在应用的某个页面中启动音视频通话,例如:

    Navigator.push(
      context,
      MaterialPageRoute(
        builder: (context) => VideoCallScreen(
          channelName: 'test_channel',
          token: 'YOUR_TOKEN',
        ),
      ),
    );

自定义 UI

wend_agora_uikits 提供了一些可自定义的选项,允许你根据需求调整 UI 的外观和行为。

  • layoutType: 设置布局类型,例如网格布局、浮动布局等。
  • showMicrophoneButton: 是否显示麦克风按钮。
  • showCameraButton: 是否显示摄像头按钮。
  • showEndCallButton: 是否显示结束通话按钮。
AgoraUIKit(
  appId: 'YOUR_APP_ID',
  channelName: 'test_channel',
  token: 'YOUR_TOKEN',
  layoutType: LayoutType.grid,
  showMicrophoneButton: true,
  showCameraButton: true,
  showEndCallButton: true,
  onCallEnd: () {
    Navigator.pop(context);
  },
);

处理事件

wend_agora_uikits 提供了一些回调函数,允许你处理通话中的各种事件,例如:

  • onCallEnd: 通话结束时触发。
  • onUserJoined: 有用户加入时触发。
  • onUserOffline: 用户离开时触发。
AgoraUIKit(
  appId: 'YOUR_APP_ID',
  channelName: 'test_channel',
  token: 'YOUR_TOKEN',
  onCallEnd: () {
    // 通话结束后的处理
  },
  onUserJoined: (int uid) {
    // 用户加入时的处理
  },
  onUserOffline: (int uid) {
    // 用户离开时的处理
  },
);
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!