Flutter聊天界面集成插件chatwoot_flutter_webview的使用

Flutter web view 用于展示 Chatwoot 的 JavaScript 小部件。

该小部件通过调用 Chatwoot 的 /widget 端点来显示聊天窗口。

使用步骤

要将 Chatwoot 的聊天功能集成到您的 Flutter 应用程序中,您可以使用 chatwoot_flutter_webview 插件。以下是完整的实现步骤和代码示例。

1. 添加依赖

pubspec.yaml 文件中添加以下依赖:

dependencies:
  chatwoot_flutter_webview: ^0.1.0

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

2. 导入必要的包

在您的 Dart 文件中导入 chatwoot_flutter_webview 和其他必要的包:

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

3. 创建聊天界面

创建一个页面来集成 Chatwoot 聊天小部件。以下是完整的示例代码:

// 引入必要的库
import 'package:chatwoot_flutter_webview/chatwoot_flutter_webview.dart';
import 'package:flutter/material.dart';

void main() {
  // 启动应用程序
  runApp(
    MaterialApp(
      title: 'Chatwoot 示例',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: ChatwootDemoPage(),
    ),
  );
}

// 定义聊天页面
class ChatwootDemoPage extends StatelessWidget {
  ChatwootDemoPage({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Chatwoot 示例'),
      ),
      body: ChatwootWebView(
        // 必填参数
        user: 'user-ident', // 用户标识符
        hash: 'identifier hash', // 用户哈希值
        websiteToken: 'website-token', // Chatwoot 网站令牌

        // 可选参数
        email: 'your-mail@gmail.com', // 用户邮箱(可选)
        name: 'Your Name', // 用户姓名(可选)
      ),
    );
  }
}
1 回复

更多关于Flutter聊天界面集成插件chatwoot_flutter_webview的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


chatwoot_flutter_webview 是一个用于在 Flutter 应用中集成 Chatwoot 聊天界面的插件。它使用 webview_flutter 来嵌入 Chatwoot 的 Web 界面,允许用户在应用中直接与 Chatwoot 进行交互。

以下是如何在 Flutter 项目中使用 chatwoot_flutter_webview 插件的步骤:

1. 添加依赖

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

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

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

2. 导入插件

在需要使用 Chatwoot 的 Dart 文件中导入插件:

import 'package:chatwoot_flutter_webview/chatwoot_flutter_webview.dart';

3. 使用 ChatwootWebView

在你的 Flutter 应用中使用 ChatwootWebView 组件来显示 Chatwoot 聊天界面。你需要提供 Chatwoot 的 URL 和其他可选参数。

class ChatwootScreen extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Chatwoot Chat'),
      ),
      body: ChatwootWebView(
        url: 'https://your-chatwoot-instance.com', // 替换为你的 Chatwoot 实例 URL
        user: ChatwootUser(
          identifier: 'user123', // 用户唯一标识符
          name: 'John Doe', // 用户名称
          email: 'john.doe@example.com', // 用户邮箱
        ),
        onMessageReceived: (message) {
          // 处理收到的消息
          print('Received message: $message');
        },
      ),
    );
  }
}

4. 运行应用

现在你可以运行你的 Flutter 应用,并导航到 ChatwootScreen 来查看集成的 Chatwoot 聊天界面。

5. 可选配置

ChatwootWebView 还支持其他可选配置,例如:

  • locale: 设置聊天界面的语言。
  • customAttributes: 添加自定义属性。
  • onLoad: 当 WebView 加载完成时的回调。
ChatwootWebView(
  url: 'https://your-chatwoot-instance.com',
  user: ChatwootUser(
    identifier: 'user123',
    name: 'John Doe',
    email: 'john.doe@example.com',
  ),
  locale: 'en', // 设置语言为英语
  customAttributes: {
    'plan': 'pro',
    'signup_date': '2023-01-01',
  },
  onLoad: () {
    print('Chatwoot WebView loaded');
  },
  onMessageReceived: (message) {
    print('Received message: $message');
  },
);

6. 处理权限

由于 webview_flutter 使用了 Android 和 iOS 的 WebView 组件,因此你可能需要在 AndroidManifest.xmlInfo.plist 中添加相应的权限配置。

Android

android/app/src/main/AndroidManifest.xml 中添加以下权限:

<uses-permission android:name="android.permission.INTERNET"/>

iOS

ios/Runner/Info.plist 中添加以下配置:

<key>NSAppTransportSecurity</key>
<dict>
  <key>NSAllowsArbitraryLoads</key>
  <true/>
</dict>

7. 调试

如果你在集成过程中遇到问题,可以启用 WebView 的调试模式来帮助排查问题:

ChatwootWebView(
  url: 'https://your-chatwoot-instance.com',
  user: ChatwootUser(
    identifier: 'user123',
    name: 'John Doe',
    email: 'john.doe@example.com',
  ),
  debuggingEnabled: true, // 启用调试模式
);

8. 处理 WebView 的生命周期

在 Android 上,WebView 的生命周期需要与 Flutter 的生命周期同步。你可以在 StatefulWidget 中处理 WebView 的生命周期:

class ChatwootScreen extends StatefulWidget {
  [@override](/user/override)
  _ChatwootScreenState createState() => _ChatwootScreenState();
}

class _ChatwootScreenState extends State<ChatwootScreen> with WidgetsBindingObserver {
  [@override](/user/override)
  void initState() {
    super.initState();
    WidgetsBinding.instance.addObserver(this);
  }

  [@override](/user/override)
  void dispose() {
    WidgetsBinding.instance.removeObserver(this);
    super.dispose();
  }

  [@override](/user/override)
  void didChangeAppLifecycleState(AppLifecycleState state) {
    if (state == AppLifecycleState.paused) {
      // WebView 进入后台
    } else if (state == AppLifecycleState.resumed) {
      // WebView 回到前台
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Chatwoot Chat'),
      ),
      body: ChatwootWebView(
        url: 'https://your-chatwoot-instance.com',
        user: ChatwootUser(
          identifier: 'user123',
          name: 'John Doe',
          email: 'john.doe@example.com',
        ),
      ),
    );
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!