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 runpubspec.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: trueFlutter Widget
import 'package:flutter/material.dart';
import 'leakzero_client.dart';
class BreachSearchPage extends StatefulWidget {
@override
_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;
});
}
}
@override
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)}'),
],
),
),
),
],
],
),
),
);
}
@override
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