Flutter实时数据插件sabowsla_realtime的使用

Flutter实时数据插件sabowsla_realtime的使用

realtime-dart 监听 PostgreSQL 数据库的变化并通过 WebSocket 进行通信。

这是一个用于 Sabowsla 实时服务器的 Dart 客户端。

pub package

pub test

文档

文档可以在官方 Sabowsla 网站上找到。

信用

许可证

该项目采用 MIT 许可证。

示例代码

以下是一个使用 sabowsla_realtime 插件的示例:

import 'package:sabowsla_realtime/sabowsla_realtime.dart';

/// 示例代码,用于与 Sabowsla Realtime https://sabowsla.io/ 交互
Future<void> main() async {
  // 创建一个 WebSocket 连接实例
  final socket = SabowslaRealtime(
    'ws://SUPABASE_API_ENDPOINT/realtime/v1', // 替换为实际的 API 地址
    params: {'apikey': 'SUPABSE_API_KEY'}, // 替换为实际的 API 密钥
    // 日志打印函数
    logger: (kind, msg, data) => {print('$kind $msg $data')},
  );

  // 连接到名为 'realtime:public' 的频道
  final channel = socket.channel('realtime:public');

  // 监听所有类型的变化
  channel.onPostgresChanges(
    event: PostgresChangeEvent.all,
    filter: PostgresChangeFilter(
      type: PostgresChangeFilterType.eq,
      column: 'column', // 替换为实际的列名
      value: 'value', // 替换为实际的值
    ),
    callback: (payload) {}, // 回调函数
  );

  // 监听删除事件
  channel.onPostgresChanges(
      event: PostgresChangeEvent.delete,
      schema: 'public', // 替换为实际的模式名
      callback: (payload) {
        print('channel delete payload: ${payload.toString()}'); // 打印删除事件的负载
      });

  // 监听插入事件
  channel.onPostgresChanges(
      event: PostgresChangeEvent.insert,
      schema: 'public', // 替换为实际的模式名
      callback: (payload) {
        print('channel insert payload: ${payload.toString()}'); // 打印插入事件的负载
      });

  // 监听消息
  socket.onMessage((message) => print('MESSAGE $message')); // 打印接收到的消息

  // 连接并订阅频道
  socket.connect();
  channel.subscribe((a, [_]) => print('SUBSCRIBED')); // 打印订阅成功的消息

  // 延迟 20 秒以接收来自服务器的事件
  await Future.delayed(const Duration(seconds: 20));

  // 取消订阅并断开连接
  channel.unsubscribe();
  socket.disconnect();
}

说明

  1. 创建 WebSocket 连接实例

    final socket = SabowslaRealtime(
      'ws://SUPABASE_API_ENDPOINT/realtime/v1',
      params: {'apikey': 'SUPABSE_API_KEY'},
      logger: (kind, msg, data) => {print('$kind $msg $data')},
    );
    

    这里需要替换 SUPABASE_API_ENDPOINTSUPABSE_API_KEY 为实际的值。

  2. 连接到频道

    final channel = socket.channel('realtime:public');
    
  3. 监听数据库变化

    channel.onPostgresChanges(
      event: PostgresChangeEvent.all,
      filter: PostgresChangeFilter(
        type: PostgresChangeFilterType.eq,
        column: 'column',
        value: 'value',
      ),
      callback: (payload) {},
    );
    
  4. 处理插入和删除事件

    channel.onPostgresChanges(
        event: PostgresChangeEvent.delete,
        schema: 'public',
        callback: (payload) {
          print('channel delete payload: ${payload.toString()}');
        });
    
    channel.onPostgresChanges(
        event: PostgresChangeEvent.insert,
        schema: 'public',
        callback: (payload) {
          print('channel insert payload: ${payload.toString()}');
        });
    
  5. 连接并订阅频道

    socket.connect();
    channel.subscribe((a, [_]) => print('SUBSCRIBED'));
    
  6. 延迟一段时间以接收事件

    await Future.delayed(const Duration(seconds: 20));
    
  7. 取消订阅并断开连接

    channel.unsubscribe();
    socket.disconnect();
    

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

1 回复

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


sabowsla_realtime 是一个 Flutter 插件,用于在应用程序中实现实时数据的获取和处理。这个插件可能封装了与后端服务或实时数据库(如 Firebase Realtime Database, WebSockets 等)的交互,使得开发者可以轻松地在 Flutter 应用中集成实时数据功能。

以下是一个基本的使用示例,假设 sabowsla_realtime 插件已经正确安装并配置在你的 Flutter 项目中。

1. 安装插件

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

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

然后运行 flutter pub get 来安装插件。

2. 导入插件

在你的 Dart 文件中导入插件:

import 'package:sabowsla_realtime/sabowsla_realtime.dart';

3. 初始化插件

根据插件的文档,初始化插件可能需要配置一些参数,例如连接到的服务端地址、认证信息等。

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化插件
  await SabowslaRealtime.initialize(
    apiKey: 'your_api_key',
    serverUrl: 'https://your.realtime.server.url',
  );
  
  runApp(MyApp());
}

4. 监听实时数据

使用 SabowslaRealtime 插件来监听实时数据的变化。通常,你可以通过回调函数来处理数据更新。

class MyApp extends StatefulWidget {
  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String realtimeData = 'Waiting for data...';

  [@override](/user/override)
  void initState() {
    super.initState();
    
    // 订阅实时数据
    SabowslaRealtime.subscribeToDataUpdates(
      path: '/your/data/path',  // 你的数据路径
      onDataReceived: (data) {
        setState(() {
          realtimeData = data.toString();
        });
      },
    );
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Sabowsla Realtime Example'),
        ),
        body: Center(
          child: Text(realtimeData),
        ),
      ),
    );
  }
}

5. 发送数据

如果需要向服务器发送数据,可以使用插件提供的方法:

void sendData() async {
  await SabowslaRealtime.sendData(
    path: '/your/data/path',
    data: {'key': 'value'},
  );
}

6. 处理错误

在实时数据交互过程中,可能会遇到错误,例如网络问题或服务器错误。你可以通过监听错误来处理这些情况:

SabowslaRealtime.subscribeToErrors(
  onError: (error) {
    print('Error: $error');
  },
);

7. 取消订阅

在页面销毁或不再需要实时数据时,记得取消订阅,以避免内存泄漏:

[@override](/user/override)
void dispose() {
  SabowslaRealtime.unsubscribeFromDataUpdates(path: '/your/data/path');
  super.dispose();
}
回到顶部