mcpField
C
coding-dart

coding-dart

github.com/alphaonedevDevelopment48 installs
Repository

About coding-dart

coding-dart is a skill for developers working with Dart 3, including Flutter apps and tools. It covers null safety, asynchronous code, concurrency, and package management.

Key features

  1. 01Dart 3 null safety
  2. 02Future and async/await patterns
  3. 03Streams for asynchronous data
  4. 04Isolates for concurrent tasks
  5. 05Flutter widget integration
  6. 06Pub dependency management

Use cases

  1. 01Reviewing nullable Dart types
  2. 02Writing asynchronous I/O code
  3. 03Processing data with streams
  4. 04Moving CPU-bound work to isolates

Install

Copy the command and run it in a terminal.

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

After installing, type/coding-dartin Claude Code to confirm it loaded.

Details

From the project README

coding-dart

Purpose

This skill provides expertise in Dart 3 programming, focusing on features like null safety, async/await, streams, isolates, Flutter integration, and pub package management, to assist in writing efficient, safe code for apps and tools.

When to Use

Use this skill for Dart 3 projects involving mobile apps (e.g., Flutter), concurrent processing, asynchronous operations, or package dependencies. Apply it when null safety is critical to avoid runtime errors, or for handling real-time data with streams.

Key Capabilities

  • Null Safety: Enforce non-nullable types using late for lazy initialization and required for parameters, e.g., late String name; to declare a variable that must be initialized before use.
  • Async/Await: Handle asynchronous code with Future and async functions, such as Future<void> fetchData() async { var data = await http.get('/api/data'); }.
  • Streams: Manage asynchronous data streams using Stream from dart:async, e.g., Stream<int> countStream() async* { for (int i = 0; i < 5; i++) yield i; }.
  • Isolates: Run concurrent tasks with Isolate for CPU-bound operations, e.g., Isolate.spawn(workerFunction, args); to offload work.
  • Flutter Integration: Build UI with widgets and state management, e.g., using StatelessWidget for simple components.
  • Pub Package Manager: Manage dependencies via pub, including adding packages with pub add package_name.

Usage Patterns

To accomplish tasks, structure code with null safety by always specifying types (e.g., String? optionalString; for nullable values). For async operations, wrap I/O in async functions and use await for readability. Use isolates for background tasks to avoid UI blocking. Integrate Flutter by starting with MaterialApp in main.dart. For package management, run pub get after editing pubspec.yaml. Always test with dart test before deployment.

Common Commands/API

  • Dart CLI Commands: Use dart analyze with flags like --fatal-infos to enforce strict checks; run scripts with dart run bin/main.dart. For async, import dart:async and use Future.delayed(Duration(seconds: 1), () => print('Delayed'));.
  • Pub Commands: Add dependencies with pub add http --major-version 1 for specific versions; update with pub upgrade; build packages with pub build --release.
  • Key APIs: Access streams via StreamController for custom streams, e.g., var controller = StreamController<int>(); controller.add(1);. For isolates, use Isolate.run for simple tasks: Isolate.run(() => computeHeavyTask());.
  • Config Formats: Edit pubspec.yaml for dependencies, e.g.:
    dependencies:
      http: ^1.0.0
    
    Use environment variables for secrets, e.g., set $API_KEY and access via String.fromEnvironment('API_KEY').

Integration Notes

Integrate Dart with Flutter by adding Flutter dependencies in pubspec.yaml and running flutter pub get. For external APIs, set environment variables like $FLUTTER_API_KEY and access in code via Platform.environment['FLUTTER_API_KEY']. Combine with other tools by using Dart's FFI for C libraries or integrating with VS Code via the Dart extension (install with code --install-extension Dart-Code.dart-code). Ensure Dart SDK is in PATH; verify with dart --version.

Error Handling

Handle errors in async code with try-catch in async functions, e.g.:

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

For streams, use onError callbacks: stream.listen((data) => print(data), onError: (error) => print(error)). Check null safety errors with dart analyze, and use rethrow to propagate exceptions. For isolates, handle communication errors with ReceivePort and SendPort.

Concrete Usage Examples

  1. Async HTTP Request: To fetch data safely with null safety, use: 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; } } Then call it with var data = await getData(); if (data != null) print(data);.
  2. Flutter Widget with Stream: Create a simple counter stream in 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'), ); } }.

Graph Relationships

  • Related to cluster: coding (e.g., shares tags with coding-flutter for Flutter-specific tasks).
  • Connected via tags: dart (links to general programming skills), flutter (integrates with UI-focused skills), coding (groups with other language skills like coding-python).

Comments

Markdown supported