Flutter流媒体内容展示插件stream_feed_unofficial的使用

Flutter流媒体内容展示插件stream_feed_unofficial的使用

Stream Feed Unofficial

Untitled-2

Github Mail LinkedIn Buy Me A Coffee Website

Stream Feed Unofficial 是一个强大的 Flutter 包,能够无缝集成到 getstream.io API 中,为开发者提供了构建丰富现代基于流的应用程序所需的工具。它兼容 Flutter 3.24.2,并且以可扩展性和可维护性为目标,遵循了 Clean Code 架构原则。该包提供了全面支持管理活动、帖子和 Open Graph 数据的功能,同时允许开发者独立使用其核心模型和用例来创建自定义的 UI 和状态管理解决方案。

注意: 此包仍在不断发展,与官方的 stream_feed 包相比功能较少。不过,它兼容最新的 Flutter 版本 3.24.x。如果您需要 Stream API 的所有功能,可能需要考虑使用官方包,尽管它可能不支持最新版本的 Flutter。

关键特性

  • Clean Code 架构:结构化为数据、领域和表现层,确保代码的可维护性和可扩展性。
  • 用例暴露:访问核心用例允许开发者实现自己的逻辑和状态管理框架。
  • 流管理:轻松创建、管理和交互流。
  • 活动集成:在应用程序中无缝集成活动,提供动态用户体验。
  • Open Graph 数据处理:获取并显示 Open Graph 数据,增强流的丰富内容预览。
  • 暗色和亮色主题支持:内置对可定制主题的支持,以匹配应用程序的品牌。
  • 状态管理:设计使用了 BLoC 模式。
  • 详细文档:详细的指南和示例帮助快速高效地上手。

专为可扩展性设计,受 Clean Code 架构启发

stream_feed_unofficial/
│
├── lib/
│   ├── src/
│   │   ├── data/
│   │   │   ├── activity/
│   │   │   │   ├── datasources/
│   │   │   │   ├── models/
│   │   │   │   └── repositories/
│   │   ├── domain/
│   │   │   ├── activity/
│   │   │   │   ├── entities/
│   │   │   │   ├── repositories/
│   │   │   │   └── usecases/
│   │   ├── presentation/
│   │   │   ├── activity/
│   │   │   │   ├── bloc/
│   │   │   │   ├── components/
│   │   │   │   └── activity_list_screen.dart

预览

Image 1 Image 2 Image 3 Image 3

开始使用

安装

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

dependencies:
  stream_feed_unofficial: ^0.0.1

使用

以下是一个基本的指南,帮助您开始使用 Stream Feed Unofficial:

注册依赖项

根据您的需求注册依赖项:

_locator.registerLazySingleton<StreamFeed>(
    () => StreamFeed(),
  );

初始化基础配置

await streamFeed.initializeBaseConfigurations(
  apiKey: 'YOUR_API_KEY',
  feedName: 'YOUR_FEED_NAME',
  baseEndpoint: 'https://[appRegion]-api.stream-io-api.com/api/',
  userReadToken: 'YOUR_USER_READ_TOKEN',
  userWriteToken: 'YOUR_USER_WRITE_TOKEN',
  openGraphToken: 'YOUR_OPEN_GRAPH_TOKEN',
);

初始化流

await streamFeed.initializeFeed(
  feedReadToken: 'YOUR_FEED_READ_TOKEN',
  feedWriteToken: 'YOUR_FEED_WRITE_TOKEN',
  feedFollowWriteToken: 'YOUR_FEED_FOLLOW_WRITE_TOKEN',
);

直接访问用例以构建自己的状态管理解决方案

/// Stream Feed Unofficial 包暴露了所有用例
/// 您可以使用任何状态管理解决方案编写自己的逻辑。
final SignupUsecase signupUsecase;
...
...
final user = await signupUsecase.execute(
        username: username,
        fullName: fullName,
        profilePictureUrl: profilePictureUrl,
        occupation: occupation,
        gender: gender,
      );
emit(SignupSuccess(user));

完整示例

对于完整的实现,请参考包中包含的示例目录。

贡献

欢迎贡献!有关更多详细信息,请参阅 CONTRIBUTING.md

路线图

  1. 添加导航,最有可能使用 auto_router。
  2. 带有适当消息的异常处理。
  3. 删除帖子用例。
  4. 添加评论和点赞。
  5. 处理内容长度和活动详情屏幕。
  6. 更好的缓存。
  7. 本地化。
  8. 将数据、领域和表现层分离为单独的包。

…待续

许可证

该项目在 MIT 许可证下发布 - 请查看 LICENSE 文件以了解详细信息。

支持

如需任何问题或功能请求,请访问问题跟踪器 - https://github.com/kartikeyaa-k/stream-feed-unofficial/issues

示例代码

以下是完整的示例代码:

// example/lib/main.dart

import 'package:example/presentation/app_root.dart';
import 'package:example/service_locator.dart';
import 'package:flutter/material.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  serviceLocator();
  runApp(const AppRoot());
}

更多关于Flutter流媒体内容展示插件stream_feed_unofficial的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter流媒体内容展示插件stream_feed_unofficial的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


stream_feed_unofficial 是一个非官方的 Flutter 插件,用于与 Stream(原名 GetStream)的 API 进行交互,以便在 Flutter 应用中展示流媒体内容。Stream 是一个用于构建新闻动态、活动流、通知系统等功能的 API 平台。

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

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  stream_feed_unofficial: ^0.1.0 # 请使用最新版本

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

2. 初始化 Stream 客户端

在使用 stream_feed_unofficial 之前,你需要初始化 Stream 客户端。通常你需要在应用的入口文件(如 main.dart)中进行初始化。

import 'package:stream_feed_unofficial/stream_feed_unofficial.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // 初始化 Stream 客户端
  final client = StreamClient(
    apiKey: 'YOUR_API_KEY',
    appId: 'YOUR_APP_ID',
    token: 'USER_TOKEN', // 用户令牌
  );

  runApp(MyApp(client: client));
}

3. 创建 Feed

在 Stream 中,每个用户或实体都有一个或多个 Feed。你可以使用 client 来创建或获取用户的 Feed。

final userFeed = client.feed('user', 'user_id_1');

4. 添加活动(Activity)

你可以向 Feed 中添加活动,这些活动可以是用户的操作,如发布内容、点赞等。

final activity = Activity(
  actor: 'user:user_id_1',
  verb: 'post',
  object: 'post:123',
  foreignId: 'post:123',
  time: DateTime.now(),
);

await userFeed.addActivity(activity);

5. 获取活动流

你可以从 Feed 中获取活动流,并在 Flutter 应用中展示这些内容。

final activities = await userFeed.getActivities();

for (var activity in activities) {
  print('Activity: ${activity.actor} ${activity.verb} ${activity.object}');
}

6. 在 UI 中展示活动流

你可以使用 Flutter 的 ListViewGridView 等组件来展示活动流。

class ActivityFeed extends StatelessWidget {
  final List<Activity> activities;

  ActivityFeed({required this.activities});

  @override
  Widget build(BuildContext context) {
    return ListView.builder(
      itemCount: activities.length,
      itemBuilder: (context, index) {
        final activity = activities[index];
        return ListTile(
          title: Text('${activity.actor} ${activity.verb} ${activity.object}'),
          subtitle: Text('${activity.time}'),
        );
      },
    );
  }
}

7. 处理实时更新

Stream 支持实时更新,你可以使用 client 来订阅 Feed 的实时更新。

final subscription = userFeed.subscribe((activity) {
  print('New activity: ${activity.actor} ${activity.verb} ${activity.object}');
});

8. 取消订阅

当不再需要实时更新时,记得取消订阅。

subscription.cancel();

9. 处理错误和异常

在使用 stream_feed_unofficial 时,可能会遇到各种错误和异常,建议你使用 try-catch 块来处理这些情况。

try {
  await userFeed.addActivity(activity);
} catch (e) {
  print('Error adding activity: $e');
}
回到顶部