Flutter即时通讯插件laraigo_chat的使用

Flutter即时通讯插件laraigo_chat的使用

laraigo_chat 是一个用于实现即时通讯功能的 Flutter 插件。它支持实时通信、在线聊天定制、多媒体文件选择、位置共享以及多种类型的交互(如文本、按钮和轮播)。

特性

  • 实时通信
  • 在线聊天定制
  • 多媒体文件选择
  • 位置共享
  • 多种类型的交互(文本、按钮和轮播)

开始使用

首先,你需要在你的 Flutter 项目中添加 laraigo_chat 作为依赖项。

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

dependencies:
  laraigo_chat: ^1.0.9+48

由于项目使用了 geolocator 来共享位置,因此需要添加相应的权限。请参考 Geolocator 指南 进行配置。

还需要在 Android 文件夹中启用 MultiDex:

multiDexEnabled true

设置最小 SDK 版本为 20:

minSdk 20

如果你想要使用 Google Maps 功能来显示共享的位置,则需要在应用清单文件 android/app/src/main/AndroidManifest.xml 中指定你的 API 密钥:

<manifest ...
  <application ...
    <meta-data android:name="com.google.android.geo.API_KEY"
               android:value="YOUR KEY HERE"/>

如果你遇到与 Google Maps 相关的集成问题,请查阅 Google Maps Flutter 文档 获取更多帮助。

最后,运行以下命令更新包:

flutter packages upgrade

或者在 IntelliJ 中更新包。

示例项目

example 文件夹中有一个示例项目。你可以查看该示例项目。如果没有查看示例项目,继续阅读以快速上手。

使用方法

需要在 Dart 文件中导入插件包。使用以下命令:

import 'package:laraigo_chat/socket_action_button.dart';

自定义容器

SocketContainer(
  child: widget,
  integrationId: "Your Integration Id",
  customMessage: "Hola",
)

浮动操作按钮

floatingActionButton: SocketActionButton(
  integrationId: 'Your Integration Id',
)

提升按钮

SocketElevatedButton(
  width: 80,
  height: 80,
  integrationId: "Your Integration Id",
  child: Container(
    width: 80,
    height: 80,
    padding: const EdgeInsets.all(10),
    child: Column(
      mainAxisAlignment: MainAxisAlignment.center,
      crossAxisAlignment: CrossAxisAlignment.center,
      children: const [
        Icon(Icons.chat),
        Text("Soporte")
      ],
    ),
  ),
)

文本按钮

SocketTextButton(
  customMessage: "Hola",
  integrationId: "Your Integration Id",
  child: const Text("Iniciar conversación"),
)

完整示例

import 'package:laraigo_chat/core/widget/socket_action_button.dart';
import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});
  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            const Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headline4,
            ),
          ],
        ),
      ),
      floatingActionButton: SocketActionButton(
        integrationId: 'Your Integration Id',
      ),
    );
  }
}

示例代码

// ignore_for_file: prefer_final_fields

import 'package:flutter/material.dart';
import 'package:laraigo_chat/core/widget/socket_container.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});
  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            const Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headlineMedium,
            ),
          ],
        ),
      ),
      floatingActionButton: SocketContainer(
        width: 100,
        height: 80,
        customMessage: "Hola",
        circularProgressIndicatorColor: Colors.amber,
        integrationId: '63d8224c5c8a9dde22652275',
        child: Container(
          decoration: BoxDecoration(
            color: Colors.red,
            borderRadius: BorderRadius.circular(10),
          ),
          child: Material(
            borderRadius: BorderRadius.circular(10),
            elevation: 10,
            child: Container(
              decoration: BoxDecoration(
                color: Colors.red,
                borderRadius: BorderRadius.circular(10),
              ),
              child: const Column(
                children: [
                  Text("PRUEBA"),
                  Icon(Icons.read_more),
                ],
              ),
            ),
          ),
        ),
      ),
    );
  }
}

更多关于Flutter即时通讯插件laraigo_chat的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter即时通讯插件laraigo_chat的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


laraigo_chat 是一个用于 Flutter 的即时通讯插件,它允许开发者在应用中快速集成聊天功能。以下是使用 laraigo_chat 插件的基本步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 laraigo_chat 插件的依赖:

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

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

2. 初始化插件

在你的 Flutter 应用启动时,初始化 laraigo_chat 插件。通常可以在 main.dart 文件中进行初始化:

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化 Laraigo Chat
  await LaraigoChat.initialize(
    appId: 'YOUR_APP_ID',
    userId: 'USER_ID',
    userToken: 'USER_TOKEN',
  );

  runApp(MyApp());
}

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

3. 使用聊天界面

laraigo_chat 插件提供了一个预制的聊天界面,你可以直接在应用中使用它:

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

class ChatScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Chat'),
      ),
      body: LaraigoChatView(),  // 使用预制的聊天界面
    );
  }
}

4. 处理用户登录和登出

在使用 laraigo_chat 之前,通常需要用户登录。你可以在用户登录成功后调用 LaraigoChat.login 方法:

void loginUser() async {
  // 假设你已经获取了用户的 userId 和 userToken
  String userId = 'USER_ID';
  String userToken = 'USER_TOKEN';

  await LaraigoChat.login(userId: userId, userToken: userToken);
}

在用户登出时,可以调用 LaraigoChat.logout 方法:

void logoutUser() async {
  await LaraigoChat.logout();
}

5. 发送消息

你可以使用 LaraigoChat.sendMessage 方法发送消息:

void sendMessage(String text) async {
  await LaraigoChat.sendMessage(text);
}

6. 接收消息

laraigo_chat 插件会自动处理消息的接收和显示。如果你需要监听新消息,可以使用 LaraigoChat.onMessageReceived 流:

void listenToMessages() {
  LaraigoChat.onMessageReceived.listen((message) {
    print('New message received: ${message.text}');
  });
}

7. 自定义聊天界面

如果你需要自定义聊天界面,可以使用 LaraigoChatController 来获取聊天数据,并构建自定义的 UI:

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

class CustomChatScreen extends StatefulWidget {
  @override
  _CustomChatScreenState createState() => _CustomChatScreenState();
}

class _CustomChatScreenState extends State<CustomChatScreen> {
  LaraigoChatController _controller;

  @override
  void initState() {
    super.initState();
    _controller = LaraigoChatController();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Custom Chat'),
      ),
      body: StreamBuilder<List<ChatMessage>>(
        stream: _controller.messages,
        builder: (context, snapshot) {
          if (!snapshot.hasData) {
            return Center(child: CircularProgressIndicator());
          }

          final messages = snapshot.data;

          return ListView.builder(
            itemCount: messages.length,
            itemBuilder: (context, index) {
              final message = messages[index];
              return ListTile(
                title: Text(message.text),
                subtitle: Text(message.senderId),
              );
            },
          );
        },
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          _controller.sendMessage('Hello!');
        },
        child: Icon(Icons.send),
      ),
    );
  }
}

8. 处理错误

在使用 laraigo_chat 时,可能会遇到一些错误。你可以使用 try-catch 来捕获并处理这些错误:

void sendMessage() async {
  try {
    await LaraigoChat.sendMessage('Hello!');
  } catch (e) {
    print('Failed to send message: $e');
  }
}

9. 其他功能

laraigo_chat 插件还提供了其他功能,如发送图片、文件、语音消息等。你可以参考插件的官方文档来了解更多细节。

10. 调试和测试

在开发过程中,你可以使用 LaraigoChat.setDebugMode(true) 来启用调试模式,以便查看更多的日志信息:

void enableDebugMode() {
  LaraigoChat.setDebugMode(true);
}
回到顶部