Flutter UI组件库插件enx_uikit_flutter的使用

Flutter UI组件库插件enx_uikit_flutter的使用

EnableX 引入了视频UI套件,以帮助快速将EnableX视频集成到您的应用程序中。EnableX视频UI套件是一个为移动平台(手机、平板等)设计的优秀框架,适用于视频应用开发,并提供了许多定制选项以满足您的需求。

您只需编写少量代码,仅需三行代码即可完成视频通信的所有工作。因此,使用UI套件可以帮助您在几乎减少95%的努力和时间的情况下获得无缝的视频界面,并支持所有设备。

使用

要使用此插件,您需要在 pubspec.yaml 文件中添加 enx_uikit_flutter 作为依赖项。

dependencies:
  enx_uikit_flutter: ^1.0.0

开始使用

以下是一个简单的示例,展示如何初始化和配置视频通话。

import 'package:flutter/material.dart';
import 'package:enx_uikit_flutter/enx_uikit_flutter.dart';

class VideoCall extends StatelessWidget {
  final String token;

  VideoCall(this.token, {Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    // 初始化设置
    var setting = EnxSetting.instance;
    setting.createBottomOption(BottomOption.audio); // 添加音频控制
    setting.createBottomOption(BottomOption.video); // 添加视频控制
    setting.createBottomOption(BottomOption.groupChat); // 添加群聊控制
    setting.createBottomOption(BottomOption.disconnect); // 添加断开连接控制
    setting.createBottomOption(BottomOption.cameraSwitch); // 添加摄像头切换控制
    setting.createTopOption(TopOption.userList); // 添加用户列表控制
    setting.createTopOption(TopOption.requestFloor); // 添加请求发言控制
    setting.createTopOption(TopOption.menu); // 添加菜单控制

    return Scaffold(
      body: SafeArea(
        child: Stack(
          children: [
            EnxVideoView(
              token: token,
              connectError: (Map<dynamic, dynamic> map) {
                print('connectError' + jsonEncode(map));
              },
              disconnect: (Map<dynamic, dynamic> map) {
                print('disconnect' + jsonEncode(map));
              },
            ),
          ],
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个名为 VideoCall 的状态less小部件,它接受一个用于视频通话的令牌。然后,我们通过 EnxSetting 配置了各种控制选项,并使用 EnxVideoView 显示视频视图。

设备权限

您需要一个物理设备来运行应用程序,因为模拟器/仿真器不支持播放视频或发布本地流。

EnableX视频SDK需要相机和麦克风权限才能开始视频通话。请按照以下步骤在Android和iOS平台上添加设备权限:

Android

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

<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" />
iOS

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

  • Privacy - Microphone Usage Description 并在值列中添加说明。
  • Privacy - Camera Usage Description 并在值列中添加说明。

如果需要使应用程序在后台运行语音通话,您可以在Xcode中选择应用程序目标,点击“功能”标签,启用“后台模式”,并勾选“音频、AirPlay和画中画”。

iOS黑屏问题

EnableX视频SDK使用 PlatformView,因此您需要在 Info.plist 中将 io.flutter.embedded_views_preview 设置为 YES 以避免黑屏问题。

<key>io.flutter.embedded_views_preview</key>
<true/>

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

1 回复

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


当然,下面是一个关于如何使用Flutter UI组件库插件enx_uikit_flutter的代码案例。假设你已经将enx_uikit_flutter添加到你的Flutter项目中(在pubspec.yaml文件中添加依赖并运行flutter pub get)。

1. 添加依赖

首先,在你的pubspec.yaml文件中添加enx_uikit_flutter依赖:

dependencies:
  flutter:
    sdk: flutter
  enx_uikit_flutter: ^最新版本号  # 请替换为实际版本号

2. 导入库

在你的Dart文件中导入enx_uikit_flutter库:

import 'package:enx_uikit_flutter/enx_uikit_flutter.dart';

3. 使用组件

下面是一个简单的例子,展示了如何使用enx_uikit_flutter中的一些UI组件。

import 'package:flutter/material.dart';
import 'package:enx_uikit_flutter/enx_uikit_flutter.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'enx_uikit_flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('enx_uikit_flutter Demo'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            // 使用ENXButton
            ENXButton(
              title: 'Primary Button',
              type: ENXButtonType.primary,
              onPressed: () {
                print('Primary Button Pressed');
              },
            ),
            SizedBox(height: 16),

            // 使用ENXTextField
            ENXTextField(
              label: 'Email',
              prefixIcon: Icons.email,
              suffixIcon: Icons.visibility,
              onSuffixTap: () {
                print('Suffix Icon Tapped');
              },
            ),
            SizedBox(height: 16),

            // 使用ENXCheckbox
            Row(
              children: [
                ENXCheckbox(
                  value: true,
                  onChanged: (newValue) {
                    print('Checkbox Value: $newValue');
                  },
                ),
                Text('Accept Terms and Conditions'),
              ],
            ),
            SizedBox(height: 16),

            // 使用ENXRadioGroup
            ENXRadioGroup(
              value: 1,
              onChanged: (newValue) {
                print('Radio Group Value: $newValue');
              },
              options: [
                {
                  'value': 0,
                  'label': 'Option 1',
                },
                {
                  'value': 1,
                  'label': 'Option 2',
                },
                {
                  'value': 2,
                  'label': 'Option 3',
                },
              ],
            ),
            SizedBox(height: 16),

            // 使用ENXSwitch
            ENXSwitch(
              value: true,
              onChanged: (newValue) {
                print('Switch Value: $newValue');
              },
            ),
          ],
        ),
      ),
    );
  }
}

4. 运行项目

确保你的开发环境配置正确,然后运行你的Flutter项目:

flutter run

解释

  • ENXButton:一个按钮组件,有多种类型(如primary)。
  • ENXTextField:一个文本输入组件,支持前缀和后缀图标。
  • ENXCheckbox:一个复选框组件。
  • ENXRadioGroup:一个单选按钮组组件。
  • ENXSwitch:一个开关组件。

这个示例展示了如何使用enx_uikit_flutter中的一些常用组件。你可以根据项目的需求进一步自定义和扩展这些组件。

回到顶部