Dart 中如何使用 StreamController?

推荐答案

-- -------------------- ---- -------
------ -------------

---- ------ -
  -- ---- ----------------
  ----- --------------------- ---------- - ------------------------

  -- -- ------
  ----- ----------------------- ------------ - -------------------------
    ------ -
      --------------- ----- --------
    --
    -------- ------- -
      ------------ --------- ---------
    --
    ------- -- -
      ------------- -- -------
    --
  --

  -- - ------ -----
  ------------------
  ------------------
  ------------------

  -- -- ----------------
  -------------------
-

本题详细解读

1. StreamController 的作用

StreamController 是 Dart 中用于管理 Stream 的工具类。它允许你手动控制数据的发送、错误处理以及流的关闭。StreamController 通常用于需要手动控制数据流的场景,比如事件处理、数据广播等。

2. 创建 StreamController

你可以通过 StreamController<T>() 来创建一个 StreamController,其中 T 是流中数据的类型。例如,StreamController<int> 表示这个流将处理整数类型的数据。

3. 监听 Stream

通过 controller.stream.listen() 方法可以监听 Stream 中的数据。listen 方法有三个可选参数:

  • onData: 当有数据到达时调用的回调函数。
  • onError: 当发生错误时调用的回调函数。
  • onDone: 当流关闭时调用的回调函数。

4. 向 Stream 中添加数据

使用 controller.add(data) 方法可以向流中添加数据。每次调用 add 方法,监听器都会收到这个数据。

5. 关闭 StreamController

当不再需要向流中添加数据时,应该调用 controller.close() 来关闭 StreamController。关闭后,流将不再接受新的数据,并且会触发 onDone 回调。

6. 注意事项

  • 确保在不再需要 StreamController 时关闭它,以避免内存泄漏。
  • 如果需要在多个地方监听同一个流,可以使用 StreamController.broadcast() 创建一个广播流。
纠错
反馈