在应用程序的一部分(小部件树)中初始化 Stream Chat Flutter

Gor*_*yes 1 getstream-io getstream-chat

我正在创建一个具有聊天功能的应用程序,并且正在使用 Stream Chat Flutter。我按照官方教程进行操作:https://getstream.io/chat/flutter/tutorial/

该教程说使用builderinMaterialApp并用 包裹子路由StreamChat

return MaterialApp(
  builder: (context, widget) {
    return StreamChat(
      client: client,
      child: widget,
    );
  },
  home: StreamChannel(
    channel: channel,
    child: const ChannelPage(),
  ),
);
Run Code Online (Sandbox Code Playgroud)

然后再打电话client.connectUser

我想知道如何有效地断开和重新连接用户,并确保 Web 套接字连接关闭,而不用StreamChat.

大多数 Stream 示例展示了如何初始化和连接整个应用程序的用户,然后让他们保持连接。但我只想在应用程序的聊天部分打开时初始化并连接到 Stream。

Gor*_*yes 8

解决这个问题需要两件事:

  • 了解 Flutter 中的路由
  • 并根据当前路由管理您的 Stream 用户的连接状态

重要的是要了解,仅当您调用时才会与 Stream 建立 WebSocket 连接connectUser。并且用 包装整个小部件树时只有很小的开销StreamChat。当您调用 时,WebSocket 连接将关闭disconnectUser

本官方指南演示了管理流聊天 Flutter 连接的三种方法,并且仅在应用程序的一部分(小部件树)中进行流聊天,并详细解释了所有内容。

  1. 生成器和连接/断开用户
  2. 嵌套导航器
  3. Flutter Navigator 2.0 - 使用 GoRouter