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
更多关于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
中的一些常用组件。你可以根据项目的需求进一步自定义和扩展这些组件。