Flutter数据访问插件cognite_cdf_sdk的使用

Flutter数据访问插件cognite_cdf_sdk的使用

cognite_cdf_sdk

维护者: Greger Wedel, https://github.com/gregertw

这是一个用于Cognite CDF API的Dart包,https://docs.cognite.com/dev/

此SDK专为时间序列探索的Flutter应用需求而设计。因此,它内置了对数据点分层的支持,这简化了缩放和平移以及时间序列的可视化探索。它还包含了一个请求历史记录,可以查看已执行的REST API请求和响应。

目前,该SDK仅限于时间序列API且只读,但扩展功能应该相对简单。

免责声明

尽管此SDK由Cognite的员工开发,但它是在个人项目中作为业余爱好开发的,因此不能保证该SDK会持续更新或扩展。为了任何可能需要Dart SDK的人或希望贡献的人的利益,它以Apache-2许可共享。

贡献

与本SDK相关的所有活动都在Github上进行。请使用问题跟踪器提交错误或功能建议,或者更好的是提交PR!

开始使用

实例化一个http客户端并开始使用!

注意!您需要提供一个HttpClientAdapter()实现,如在dio/adapter.dart(DefaultHttpClientAdapter())或dio/adapter_browser.dart(BrowserHttpClientAdapter())中找到的。以下是支持Web和App的方法:

import 'package:cognite_cdf_sdk/cognite_cdf_sdk.dart';
import 'package:dio/adapter.dart';

main() async {
  var apiClient = CDFApiClient(
      project: 'project_name', // 替换为您的项目名称
      apikey: 'myapi_key', // 替换为您的API密钥
      baseUrl: 'https://api.cognitedata.com/', // 基础URL
      httpAdapter: DefaultHttpClientAdapter()); // 使用默认HTTP适配器

  var res = await TimeSeriesAPI(apiClient).getAllTimeSeries(); // 获取所有时间序列
  if (res != null && res.length >= 1) {
    print(res[0].externalId); // 打印第一个时间序列的外部ID
  }
}

在同一代码中同时使用Web和App的httpAdapter

创建两个文件,httpadapter.dartwebhttpadapter.dart,它们都定义了一个 GenericHttpAdapter() 类:

httpadapter.dart:

import 'package:dio/adapter.dart';

class GenericHttpClientAdapter extends DefaultHttpClientAdapter {}

webhttpadapter.dart:

import 'package:dio/adapter_browser.dart';

class GenericHttpClientAdapter extends BrowserHttpClientAdapter {}

然后您可以这样使用通用适配器类:

import 'httpadapter.dart' if (dart.library.html) 'webhttpadapter.dart'; // 条件导入
var client = CDFApiClient(httpAdapter: GenericHttpClientAdapter()); // 实例化CDFApiClient

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

1 回复

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


cognite_cdf_sdk 是 CDF(Cognite Data Fusion)的 Flutter 插件,用于在 Flutter 应用程序中访问和操作 CDF 数据。CDF 是一个工业数据平台,允许用户存储、管理和分析大规模的工业数据。

以下是使用 cognite_cdf_sdk 插件的基本步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 cognite_cdf_sdk 插件的依赖。

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

然后运行 flutter pub get 来获取依赖。

2. 初始化 SDK

在使用 SDK 之前,你需要初始化它。通常,你需要在应用程序启动时进行初始化。

import 'package:cognite_cdf_sdk/cognite_cdf_sdk.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化 CDF SDK
  await CogniteCdfSdk.initialize(
    clientId: 'YOUR_CLIENT_ID',
    clientSecret: 'YOUR_CLIENT_SECRET',
    tenantId: 'YOUR_TENANT_ID',
    project: 'YOUR_PROJECT',
  );

  runApp(MyApp());
}

3. 认证

CDF 使用 OAuth2 进行认证。你可以使用 CogniteCdfSdk 提供的 authenticate 方法进行认证。

void authenticate() async {
  try {
    await CogniteCdfSdk.authenticate();
    print('Authenticated successfully');
  } catch (e) {
    print('Authentication failed: $e');
  }
}

4. 获取数据

一旦你成功认证,就可以开始从 CDF 获取数据了。以下是一个获取时间序列数据的示例:

void getTimeSeries() async {
  try {
    final timeSeries = await CogniteCdfSdk.getTimeSeries(
      filter: TimeSeriesFilter(
        name: 'your_time_series_name',
      ),
    );
    print('Time Series: $timeSeries');
  } catch (e) {
    print('Failed to get time series: $e');
  }
}

5. 处理数据

你可以使用返回的数据进行进一步的处理或显示在 UI 中。

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('CDF Flutter SDK Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: getTimeSeries,
            child: Text('Get Time Series'),
          ),
        ),
      ),
    );
  }
}

6. 其他功能

cognite_cdf_sdk 插件还提供了许多其他功能,如获取资产、事件、文件等。你可以参考官方文档或源码来了解更多详细信息。

7. 错误处理

在使用 SDK 时,务必处理可能出现的错误,例如网络错误、认证失败等。

try {
  // 调用 SDK 方法
} catch (e) {
  print('Error: $e');
}

8. 关闭连接

在应用程序退出时,你可以关闭与 CDF 的连接。

void dispose() async {
  await CogniteCdfSdk.dispose();
}
回到顶部