搜索插件、代码仓与 APP 分类

插件详情v3.0.2

multiple_stream_builder

用于替换多个嵌套的 StreamBuilder 小部件的 Flutter 小部件

AndroidiOSWebmacOSWindowsLinux
近 30 天下载
3570
喜欢数
38
Pub 分数
160

安装插件

flutter pub add multiple_stream_builder

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

一个 Flutter 包,通过将嵌套的 StreamBuilder 小部件替换为单一、简洁的小部件,简化了处理多个流的工作。它能够在单个构建上下文中高效且清晰地处理多个异步数据源,减少样板代码并提升性能。非常适合需要从多个流同时更新的 UI,例如实时仪表板或多数据表单输入。该包支持所有主要平台,并可无缝集成到现有的 Flutter 代码中。

适合场景

  • 实时仪表板,支持多种数据源
  • 需要从多个流进行实时验证的表单
  • 来自不同源的并发状态更新
  • 简化版多流数据用户界面逻辑
  • 减少复杂流式 UI 中的嵌套

主要特点

  • 单个 widget 来管理多个流
  • 消除嵌套 StreamBuilder 的复杂性
  • 高效的重建,开销极小
  • 支持所有 Flutter 平台
  • 流处理的简洁、可读语法

适合对象

  • 开发人员管理多个异步数据源
  • 寻求更简洁的 UI 代码的团队
  • 具有复杂实时数据需求的项目
  • 使用响应式模式的 Flutter 应用
  • 那些希望减少小部件树深度的人

使用建议

  • 需要了解 Stream 和 StreamBuilder 的基础知识
  • 可能会略微增加包大小
  • 适用于两个或更多并发流的情况
  • 不适合简单的单流场景
  • 仅限基于流的数据源

原始 README

以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。

multiple_stream_builder

Flutter widgets to replace multiple nested StreamBuilder widgets

Installing

To add use this package in your Flutter project add this to your pubspec.yml

dependencies:
  multiple_stream_builder: ^3.0.0

Usage example

var stream1 = Stream<int>.periodic(Duration(seconds: 1), (x) => x);
var stream2 = Stream<int>.periodic(Duration(seconds: 2), (x) => x);
var stream3 = Stream<int>.periodic(Duration(seconds: 3), (x) => x);

// Instead of writing out nested StreamBuilders
Widget build(BuildContext context) {
  return StreamBuilder<int>(
    stream: stream1,
    initialData: 0,
    builder: (context, snapshot1) {
      return StreamBuilder<int>(
        stream: stream2,
        initialData: 0,
        builder: (context, snapshot2) {
          return StreamBuilder<int>(
            stream: stream3,
            initialData: 0,
            builder: (context, snapshot3) {
              return Text(
                'stream1: ${snapshot1.data} - stream2: ${snapshot2.data} - stream3: ${snapshot3.data}',
              );
            },
          );
        },
      );
    },
  );
}

// Pass multiple streams into a single StreamBuilder
Widget build(BuildContext context) {
  return StreamBuilder3<int, int, int>(
    streams: StreamTuple3(stream1, stream2, stream3),
    initialData: InitialDataTuple3(0, 0, 0),
    builder: (context, snapshots) {
      return Text(
        'stream1: ${snapshots.snapshot1.data} - stream2: ${snapshots.snapshot2.data} - stream3: ${snapshots.snapshot3.data}',
      );
    },
  );
}

所属分类

源码仓库

使用此插件的项目

暂无相关数据。