Flutter集成插件ym_flutter_integration的使用
Flutter集成插件ym_flutter_integration的使用
简介
ym_flutter_integration
是一个用于在Flutter应用中集成Yellow Messenger聊天机器人的插件。
概览
此插件提供了一个用于在移动应用中显示聊天机器人的小部件,并监听从聊天机器人发出的事件。
使用
要使用此插件,需要将 ym_flutter_integration
添加为 pubspec.yaml
文件中的依赖项。
dependencies:
ym_flutter_integration: ^版本号
入门指南
初始化 ym_flutter_integration
并设置初始配置。
import 'package:flutter/material.dart';
import 'package:ym_flutter_integration/models/botEvents.dart';
import 'package:ym_flutter_integration/ym_flutter_integration.dart';
class _BotPageState extends State<BotPage> {
YmFlutterIntegration ymFlutterIntegration;
String botId = "<Your botId goes here>";
[@override](/user/override)
void initState() {
super.initState();
ymFlutterIntegration = YmFlutterIntegration();
ymFlutterIntegration.setConfig(
context: context,
botId: botId,
enableHistory: false,
enableSpeech: false,
enableCloseButton: true);
}
}
调用 getBotWidget()
方法以获取聊天机器人的小部件。
ymFlutterIntegration.getBotWidget(
botEventListener: (BotEvent botEvent) {
switch (botEvent.code) {
case "event1":
ymFlutterIntegration.closeBot();
print("code is ${botEvent.code}, data");
print("is ${botEvent.data}");
break;
default:
print("No data");
}
},
),
需求
Android
在 build.gradle
中添加以下内容:
minSdkVersion : 21
permissions
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
iOS
在 info.plist
中添加以下内容:
<key>NSMicrophoneUsageDescription</key>
<string>Speech recognisation is used to understand user speech and send data to chat bot running on plugin</string>
<key>NSSpeechRecognitionUsageDescription</key>
<string>Speech recognisation is used to understand user speech and send data to chat bot running on plugin</string>
<key>io.flutter.embedded_views_preview</key>
<true/>
方法
setConfig(...)
: 设置聊天机器人的初始配置(应在调用getBotWidget(...)
之前添加配置)getBotWidget(...)
: 获取聊天机器人的小部件closeBot(...)
: 关闭聊天机器人addPayload(...)
: 向聊天机器人添加负载(负载将在调用updatePayload
时发送)updatePayload(...)
: 发送已添加的负载到聊天机器人clearPayload(...)
: 删除所有已存在的和添加的负载
setConfig(…)
参数
botId
(@required) [String]: 聊天机器人的唯一IDcontext
(@required) [BuildContext]: 显示聊天机器人的小部件的上下文enableHistory
[bool]: 是否启用聊天历史记录enableSpeech
[bool]: 是否启用语音识别enableCloseButton
[bool]: 是否启用关闭按钮
示例
String botId = "<Your bot id goes here>";
BuildContext context = <Widget context>;
bool enableHistory = false;
bool enableSpeech = false;
bool enableCloseButton = false;
ymFlutterIntegration.setConfig(botId, context, enableHistory, enableSpeech, enableCloseButton);
getBotWidget(…)
参数
botEventListener
[Function(BotEvent)]: 捕获聊天机器人发出的事件
示例
ymFlutterIntegration.getBotWidget(
botEventListener: (BotEvent botEvent) {
switch (botEvent.code) {
case "event1":
ymFlutterIntegration.closeBot();
print("code is ${botEvent.code}, data");
print("is ${botEvent.data}");
break;
default:
print("No data");
}
},
),
closeBot()
示例
ymFlutterIntegration.closeBot();
addPayload(…)
参数
示例
ymFlutterIntegration.addPayload(key:"Name",value:"Purush");
ymFlutterIntegration.addPayload(key:"company",value:"Yellowmessenger");
updatePayload()
示例
ymFlutterIntegration.updatePayload();
clearPayload()
示例
ymFlutterIntegration.clearPayload();
示例代码
import 'package:flutter/material.dart';
import 'package:ym_flutter_integration/models/botEvents.dart';
import 'package:ym_flutter_integration/ym_flutter_integration.dart';
void main() {
// 启动应用
runApp(MyApp());
}
class MyApp extends StatefulWidget {
[@override](/user/override)
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
[@override](/user/override)
Widget build(BuildContext context) {
// 使用MaterialApp以增加功能
return MaterialApp(
// 移除调试标志
debugShowCheckedModeBanner: false,
home: Scaffold(
// 渲染聊天机器人
body: BotPage(),
),
);
}
}
class BotPage extends StatefulWidget {
// 创建静态路由
static String routeName = "/BotPage";
[@override](/user/override)
_BotPageState createState() => _BotPageState();
}
class _BotPageState extends State<BotPage> {
// 初始化全局对象,在该对象上调用聊天机器人小部件
YmFlutterIntegration ymFlutterIntegration;
// 示例聊天机器人ID
String botId = "x1587041004122";
[@override](/user/override)
void initState() {
super.initState();
// 声明对象实例
ymFlutterIntegration = YmFlutterIntegration();
// 设置配置以获取聊天机器人小部件
ymFlutterIntegration.setConfig(
context: context, // 发送当前页面上下文以增加功能
botId: botId, // 发送需要在小部件中渲染的聊天机器人ID
enableHistory: false, // 禁用聊天历史记录
enableSpeech: false, // 禁用麦克风
enableCloseButton: true, // 启用关闭按钮
);
// 初始化时向聊天机器人添加负载
ymFlutterIntegration.addPayload(key: "name", value: "Yellowmessenger");
ymFlutterIntegration.addPayload(key: "desc", value: "A Conversational AI Platform");
}
[@override](/user/override)
Widget build(BuildContext context) {
// 使用SafeArea以防止屏幕缺口影响UI/UX
return SafeArea(
child: Scaffold(
body: Column(
children: [
// Expanded小部件以占据尽可能多的空间给聊天机器人视图
Expanded(
// 在配置已设置的对象上调用聊天机器人小部件
child: ymFlutterIntegration.getBotWidget(
// 发送回调函数作为聊天机器人事件侦听器
botEventListener: (BotEvent botEvent) {
// 监听BotEvent模型的代码和数据部分
switch (botEvent.code) {
// 通过其代码识别事件
case "choosen_other_option":
// ymFlutterIntegration.closeBot();
// ymFlutterIntegration.addPayload(key: "Name", value: "Purush");
// ymFlutterIntegration.updatePayload();
print("code is ${botEvent.code}, data is ${botEvent.data}");
break;
// 默认情况:未找到事件时的回退
default:
print("No data");
}
},
),
),
],
),
),
);
}
}
更多关于Flutter集成插件ym_flutter_integration的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter集成插件ym_flutter_integration的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter项目中集成ym_flutter_integration
插件,可以按照以下步骤进行。假设你已经有一个现成的Flutter项目,我们将逐步添加这个插件并进行基本的配置和使用。
1. 添加依赖
首先,在你的pubspec.yaml
文件中添加ym_flutter_integration
的依赖。确保你的pubspec.yaml
文件中的dependencies
部分包含以下内容:
dependencies:
flutter:
sdk: flutter
ym_flutter_integration: ^最新版本号 # 请替换为实际的最新版本号
然后,运行以下命令来获取依赖:
flutter pub get
2. 配置Android
如果ym_flutter_integration
插件需要在Android平台上进行特定的配置(例如,权限申请、初始化设置等),你通常需要在android/app/src/main/AndroidManifest.xml
中添加必要的权限或配置。不过,具体配置需要参考插件的官方文档,这里假设没有特别的配置需求。
3. 配置iOS
对于iOS平台,同样需要查看插件文档以确认是否有特定的配置需求,比如Info.plist的修改。这里同样假设没有特别的配置需求。
4. 使用插件
接下来,在你的Flutter代码中导入并使用ym_flutter_integration
插件。以下是一个简单的使用示例:
import 'package:flutter/material.dart';
import 'package:ym_flutter_integration/ym_flutter_integration.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String result = '';
@override
void initState() {
super.initState();
// 初始化插件,具体方法取决于插件提供的API
_initializePlugin();
}
Future<void> _initializePlugin() async {
// 假设插件有一个名为initialize的方法
try {
bool success = await YmFlutterIntegration.initialize();
setState(() {
if (success) {
result = 'Plugin initialized successfully.';
} else {
result = 'Failed to initialize plugin.';
}
});
} catch (e) {
setState(() {
result = 'Error initializing plugin: $e';
});
}
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('ym_flutter_integration Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('Plugin Status: $result'),
SizedBox(height: 20),
ElevatedButton(
onPressed: () async {
// 调用插件的某个功能,比如获取数据
try {
dynamic data = await YmFlutterIntegration.fetchData();
setState(() {
result = 'Fetched Data: $data';
});
} catch (e) {
setState(() {
result = 'Error fetching data: $e';
});
}
},
child: Text('Fetch Data'),
),
],
),
),
),
);
}
}
注意事项
- 插件版本:确保你使用的是最新版本的
ym_flutter_integration
插件,因为插件的API可能会随着版本更新而发生变化。 - 错误处理:在实际应用中,添加适当的错误处理逻辑,以处理插件初始化失败或功能调用失败的情况。
- 文档参考:详细的功能和API使用说明,请参考
ym_flutter_integration
插件的官方文档。
以上代码展示了如何在Flutter项目中集成并使用ym_flutter_integration
插件的基本步骤。根据你的具体需求,你可能需要调用插件提供的其他API或进行额外的配置。