Command Palette

Search for a command to run...

Dart

Dart SDK optimized for Flutter mobile applications

Installation & Setup
Required dependencies and setup for Dart and Flutter development

Dart & Flutter Setup

brew install dart

sudo apt-get update
sudo apt-get install dart

choco install dart-sdk

dart create leakzero_client
cd leakzero_client

flutter create leakzero_app
cd leakzero_app

export LEAKZERO_API_KEY=your_api_key_here

dart run
flutter run

pubspec.yaml

name: leakzero_client
description: LeakZero API client for Dart and Flutter applications
version: 1.0.0

environment:
  sdk: '>=2.17.0 <4.0.0'
  flutter: ">=3.0.0"

dependencies:
  flutter:
    sdk: flutter
  http: ^1.1.0
  crypto: ^3.0.3

dev_dependencies:
  flutter_test:
    sdk: flutter
  flutter_lints: ^3.0.0
  test: ^1.24.0

flutter:
  uses-material-design: true

Flutter Widget

import 'package:flutter/material.dart';
import 'leakzero_client.dart';

class BreachSearchPage extends StatefulWidget {
  
  _BreachSearchPageState createState() => _BreachSearchPageState();
}

class _BreachSearchPageState extends State<BreachSearchPage> {
  final _controller = TextEditingController();
  final _client = LeakZeroClient('your_api_key_here');
  bool _isLoading = false;
  SearchResult? _result;
  String? _error;

  Future<void> _performSearch() async {
    setState(() {
      _isLoading = true;
      _error = null;
      _result = null;
    });

    try {
      final options = SearchOptions(
        field: 'email',
        value: _controller.text.trim(),
        rowLimit: 100,
      );

      final result = await _client.regularSearch(options);

      setState(() {
        _result = result;
        _isLoading = false;
      });
    } catch (e) {
      setState(() {
        _error = e.toString();
        _isLoading = false;
      });
    }
  }

  
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('LeakZero Search')),
      body: Padding(
        padding: EdgeInsets.all(16.0),
        child: Column(
          children: [
            TextField(
              controller: _controller,
              decoration: InputDecoration(
                labelText: 'Email Address',
                hintText: '[email protected]',
                border: OutlineInputBorder(),
              ),
            ),
            SizedBox(height: 16),
            ElevatedButton(
              onPressed: _isLoading ? null : _performSearch,
              child: _isLoading ? CircularProgressIndicator() : Text('Search'),
            ),
            if (_result != null) ...[
              SizedBox(height: 16),
              Card(
                child: Padding(
                  padding: EdgeInsets.all(12),
                  child: Column(
                    children: [
                      Text('Results: ${_result!.totalResults}'),
                      Text('Cost: $${_result!.cost.toStringAsFixed(6)}'),
                    ],
                  ),
                ),
              ),
            ],
          ],
        ),
      ),
    );
  }

  
  void dispose() {
    _client.close();
    _controller.dispose();
    super.dispose();
  }
}
Dart Version: This example requires Dart 2.17+ for null safety and modern async features. Perfect for Flutter mobile applications and server-side Dart development.
Quick Start Example
Simple example to get you started with Dart

main.dart

import 'dart:io';
import 'leakzero_client.dart';

Future<void> main() async {
  try {
    final client = LeakZeroClient(Platform.environment['LEAKZERO_API_KEY']!);

    final options = SearchOptions(
      field: 'email',
      value: '[email protected]',
      rowLimit: 100,
    );

    final result = await client.regularSearch(options);

    print('Found ${result.totalResults} records');
    print('Cost: $${result.cost.toStringAsFixed(6)}');

    for (final record in result.data.take(5)) {
      final breach = record['breach_name'] ?? 'Unknown';
      final date = record['breach_date'] ?? 'Unknown';
      print('Breach: $breach, Date: $date');
    }

    final analysis = client.analyzeBreaches(result);
    print('\nUnique breaches: ${analysis['unique_breaches']}');

    client.close();
  } catch (e) {
    print('Search failed: $e');
  }
}
Key Features

Core Features

  • Strong typing with null safety
  • Async/await with Future and Stream support
  • Automatic retry with exponential backoff
  • Rate limit handling with intelligent delays
  • Flutter-optimized for mobile applications

Performance Features

  • Built-in HTTP client with connection pooling
  • Isolate support for CPU-intensive tasks
  • Stream-based processing for large datasets
  • JSON serialization with code generation
  • Resource management with dispose pattern
Best Practices:
  • Always use environment variables for API keys
  • Implement proper exception handling with try-catch
  • Use isolates for heavy computational tasks
  • Monitor your API usage and balance regularly
  • Dispose of resources properly to prevent memory leaks
Documentation - LeakZero | LeakZero