Flutter多渠道聊天插件qiscus_multichannel_widget的使用
Flutter多渠道聊天插件qiscus_multichannel_widget的使用
需求
- dart sdk: >=2.16.0 <3.0.0
- flutter sdk: >=2.10.0
安装
# Qiscus Multichannel 主包
flutter pub add qiscus_multichannel_widget
如何使用
初始化
为了使用QiscusMultichannelWidget
,你需要用你的AppID(例如:YOUR_APP_ID
)初始化它。获取更多关于AppID的信息可以在Qiscus多渠道聊天页面找到。
import 'package:qiscus_multichannel_widget/qiscus_multichannel_widget.dart';
QMultichannelProvider(
appId: appId,
builder: (context) {
return MaterialApp(
home: _buildNavigator(),
);
},
);
在初始化之后,你就可以访问所有该组件的功能了。
设置用户
在开始聊天之前,必须设置用户ID。
QMultichannelConsumer(
builder: (_, QMultichannel ref) {
ref.setUser(
userId: 'guest-1001',
displayName: 'guest-1001',
);
ref.initiateChat();
return Container();
},
);
获取登录状态
使用此功能检查用户是否已登录。
QMultichannelConsumer(
builder: (_, QMultichannel ref) {
if (ref.account.hasValue == true) {
// 用户已登录
}
return Container();
},
);
开始聊天
使用此功能开始聊天。
QMultichannelConsumer(
builder: (_, QMultichannel ref) {
ref.initiateChat();
return Container();
},
);
清除用户
使用此功能清除已登录的用户。
QMultichannelConsumer(
builder: (_, QMultichannel ref) {
ref.clearUser();
return Container();
},
);
示例代码
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:multichannel_flutter_sample/constants.dart';
import 'package:multichannel_flutter_sample/firebase_options.dart';
import 'package:qiscus_multichannel_widget/qiscus_multichannel_widget.dart';
import 'package:url_launcher/url_launcher.dart';
import 'pages/login.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
// ignore: missing_provider_scope
runApp(const App());
}
class App extends StatefulWidget {
const App({super.key});
[@override](/user/override)
State<App> createState() => _AppStateBuilder();
}
class _AppStateBuilder extends State<App> {
final container = ProviderContainer();
[@override](/user/override)
Widget build(BuildContext context) {
return buildWithoutProviderScope(context);
}
Widget buildWithoutProviderScope(BuildContext context) {
return _multichannelProvider();
}
Widget buildWithProviderScope(BuildContext context) {
return ProviderScope(
parent: container,
child: _multichannelProvider(container),
);
}
QMultichannelProvider _multichannelProvider([ProviderContainer? container]) {
return QMultichannelProvider(
parentProviderContainer: container,
appId: appId,
title: 'Some custom title',
avatar: QAvatarConfig.editable('https://via.placeholder.com/200'),
rightAvatar: QAvatarConfig.enabled(),
hideEventUI: true,
onURLTapped: (url) {
var uri = Uri.tryParse(url);
if (uri != null) {
launchUrl(uri, mode: LaunchMode.platformDefault);
}
},
builder: (context) {
return MaterialApp(
home: LoginScreen(),
);
},
);
}
}
更多关于Flutter多渠道聊天插件qiscus_multichannel_widget的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter多渠道聊天插件qiscus_multichannel_widget的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中集成和使用qiscus_multichannel_widget
插件的一个详细代码示例。这个插件允许你在Flutter应用中实现多渠道聊天功能。
1. 添加依赖
首先,你需要在pubspec.yaml
文件中添加qiscus_multichannel_widget
依赖:
dependencies:
flutter:
sdk: flutter
qiscus_multichannel_widget: ^最新版本号 # 请替换为最新的版本号
然后运行flutter pub get
来安装依赖。
2. 配置Android项目
在android/app/src/main/AndroidManifest.xml
中添加必要的权限和配置:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.yourapp">
<!-- 其他配置 -->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<application
android:name=".MyApplication" <!-- 如果你有自定义的Application类,请确保继承自QiscusApplication -->
... >
<!-- Qiscus配置 -->
<meta-data
android:name="com.qiscus.SDK_APP_ID"
android:value="你的Qiscus App ID"/>
<meta-data
android:name="com.qiscus.SDK_API_KEY"
android:value="你的Qiscus API Key"/>
<meta-data
android:name="com.qiscus.SDK_SERVER_URL"
android:value="你的Qiscus服务器URL"/>
<!-- 其他配置 -->
</application>
</manifest>
确保你的MyApplication
类继承自io.qiscus.sdk.QiscusApplication
:
package com.example.yourapp;
import io.qiscus.sdk.QiscusApplication;
public class MyApplication extends QiscusApplication {
@Override
public void onCreate() {
super.onCreate();
// 其他初始化代码
}
}
3. 配置iOS项目
在ios/Runner/Info.plist
中添加必要的权限:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
在ios/Runner/AppDelegate.swift
中配置Qiscus:
import UIKit
import Flutter
import qiscus_multichannel_widget // 确保这个导入语句是正确的,根据插件的实际配置
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
GeneratedPluginRegistrant.register(with: self)
// Qiscus配置
Qiscus.configure(withAppId: "你的Qiscus App ID", apiKey: "你的Qiscus API Key", serverUrl: "你的Qiscus服务器URL")
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}
4. 在Flutter中使用Qiscus多渠道聊天插件
在你的Flutter项目中,你可以这样使用qiscus_multichannel_widget
:
import 'package:flutter/material.dart';
import 'package:qiscus_multichannel_widget/qiscus_multichannel_widget.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Qiscus Multichannel Chat'),
),
body: QiscusMultichannelWidget(
// 你可以在这里传递其他初始化参数
),
),
);
}
}
5. 初始化Qiscus(可选)
在应用的某个初始化位置(如MyApp
的initState
),你可以进行Qiscus的初始化:
@override
void initState() {
super.initState();
Qiscus.instance().init(
appId: "你的Qiscus App ID",
apiKey: "你的Qiscus API Key",
serverUrl: "你的Qiscus服务器URL",
// 其他可选参数
);
}
注意:在Flutter中使用时,通常不需要在AppDelegate
和MyApplication
中重复配置Qiscus,选择其一即可。具体取决于你的项目结构和需求。
以上是一个基本的集成示例,具体实现可能需要根据你的项目需求进行调整。希望这个示例能帮助你顺利集成qiscus_multichannel_widget
插件。