关于 coding-dart
coding-dart 面向使用 Dart 3 开发应用和工具的开发者,涵盖 Flutter 集成、空安全、异步编程、并发处理与包管理。
主要功能
- 01Dart 3 空安全
- 02Future 与 async/await 模式
- 03使用 Stream 处理异步数据
- 04通过 Isolate 执行并发任务
- 05集成 Flutter widget
- 06使用 pub 管理依赖
适用场景
- 01检查 Dart 可空类型
- 02编写异步 I/O 代码
- 03使用 Stream 处理数据
- 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 处理通信错误。
具体使用示例
- 异步 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);。 - 使用 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 等其他语言技能归为一组)。