mcpField
C
coding-dart

coding-dart

github.com/alphaonedev开发48 次安装
代码仓库

关于 coding-dart

coding-dart 面向使用 Dart 3 开发应用和工具的开发者,涵盖 Flutter 集成、空安全、异步编程、并发处理与包管理。

主要功能

  1. 01Dart 3 空安全
  2. 02Future 与 async/await 模式
  3. 03使用 Stream 处理异步数据
  4. 04通过 Isolate 执行并发任务
  5. 05集成 Flutter widget
  6. 06使用 pub 管理依赖

适用场景

  1. 01检查 Dart 可空类型
  2. 02编写异步 I/O 代码
  3. 03使用 Stream 处理数据
  4. 04将 CPU 密集任务移至 Isolate

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/alphaonedev/openclaw-graph --skill coding-dart

安装后在 Claude Code 中输入/coding-dart确认已加载。

详细介绍

coding-dart

用途

此技能专注于 Dart 3 编程,涵盖空安全、async/await、流、隔离区、Flutter 集成和 pub 软件包管理等功能,帮助编写高效、安全的应用和工具代码。

使用场景

在涉及移动应用(例如 Flutter)、并发处理、异步操作或软件包依赖的 Dart 3 项目中使用此技能。当空安全对于避免运行时错误至关重要,或需要使用流处理实时数据时,也可应用此技能。

核心能力

  • 空安全:使用 late 延迟初始化,使用 required 声明必需参数,以强制采用非空类型。例如,使用 late String name; 声明一个必须在使用前初始化的变量。
  • Async/Await:使用 Future 和 async 函数处理异步代码,例如:Future<void> fetchData() async { var data = await http.get('/api/data'); }。
  • 流:使用 dart:async 中的 Stream 管理异步数据流,例如:Stream<int> countStream() async* { for (int i = 0; i < 5; i++) yield i; }。
  • 隔离区:使用 Isolate 运行 CPU 密集型并发任务,例如:使用 Isolate.spawn(workerFunction, args); 将任务转移到后台执行。
  • Flutter 集成:使用组件和状态管理构建 UI,例如使用 StatelessWidget 创建简单组件。
  • Pub 软件包管理器:通过 pub 管理依赖项,包括使用 pub add package_name 添加软件包。

使用模式

为完成任务,应始终指定类型来构建符合空安全要求的代码(例如,使用 String? optionalString; 表示可空值)。对于异步操作,将 I/O 封装在 async 函数中,并使用 await 提高可读性。使用隔离区执行后台任务,避免阻塞 UI。通过在 main.dart 中使用 MaterialApp 开始 Flutter 集成。编辑 pubspec.yaml 后,运行 pub get 管理软件包。部署前务必使用 dart test 进行测试。

常用命令/API

  • Dart CLI 命令:使用带有 --fatal-infos 等标志的 dart analyze 执行严格检查;使用 dart run bin/main.dart 运行脚本。对于异步操作,导入 dart:async 并使用 Future.delayed(Duration(seconds: 1), () => print('Delayed'));。
  • Pub 命令:使用 pub add http --major-version 1 添加指定版本的依赖项;使用 pub upgrade 更新;使用 pub build --release 构建软件包。
  • 核心 API:使用 StreamController 访问流并创建自定义流,例如:var controller = StreamController<int>(); controller.add(1);。对于隔离区,使用 Isolate.run 执行简单任务:Isolate.run(() => computeHeavyTask());。
  • 配置格式:编辑 pubspec.yaml 配置依赖项,例如:
    dependencies:
      http: ^1.0.0
    
    使用环境变量存储密钥,例如,设置 $API_KEY 并通过 String.fromEnvironment('API_KEY') 访问。

集成说明

通过在 pubspec.yaml 中添加 Flutter 依赖项并运行 flutter pub get,将 Dart 与 Flutter 集成。对于外部 API,设置 $FLUTTER_API_KEY 等环境变量,并在代码中通过 Platform.environment['FLUTTER_API_KEY'] 访问。使用 Dart 的 FFI 调用 C 库,或通过 Dart 扩展(使用 code --install-extension Dart-Code.dart-code 安装)与 VS Code 集成,从而与其他工具配合使用。确保 Dart SDK 已添加到 PATH 中;使用 dart --version 验证。

错误处理

在 async 函数中使用 try-catch 处理异步代码中的错误,例如:

try {
  var result = await fetchData();
} catch (e) {
  print('Error: $e');
}

对于流,使用 onError 回调:stream.listen((data) => print(data), onError: (error) => print(error))。使用 dart analyze 检查空安全错误,并使用 rethrow 传播异常。对于隔离区,使用 ReceivePort 和 SendPort 处理通信错误。

具体使用示例

  1. 异步 HTTP 请求:要安全地获取数据并处理空值,请使用:import 'package:http/http.dart' as http; Future<String?> getData() async { try { var response = await http.get(Uri.parse('https://api.example.com/data')); return response.body; } catch (e) { return null; } } 然后调用它:var data = await getData(); if (data != null) print(data);。
  2. 使用 Stream 的 Flutter Widget:在 Flutter 中创建一个简单的计数器流:import 'dart:async'; class MyWidget extends StatelessWidget { Stream<int> counter() async* { for (int i = 0; i < 5; i++) yield i; } @override Widget build(BuildContext context) { return StreamBuilder<int>( stream: counter(), builder: (context, snapshot) => Text(snapshot.data?.toString() ?? '0'), ); } }。

图关系

  • 与 coding 集群相关(例如,与 coding-flutter 共享标签,适用于 Flutter 专项任务)。
  • 通过标签关联:dart(链接到通用编程技能)、flutter(与侧重 UI 的技能集成)、coding(与 coding-python 等其他语言技能归为一组)。

评论

支持 Markdown