darturbation 2.0.2 copy "darturbation: ^2.0.2" to clipboard
darturbation: ^2.0.2 copied to clipboard

An advanced, context-aware, and behavioral mock data generator for Dart & Flutter.

Darturbation #

Advanced mock data generator for Dart and Flutter applications with context-aware generation, behavioral patterns, and Indonesian localization.

Dart CI Version Platforms

Features #

  • Context-aware data generation with logical field relationships
  • Indonesian-first approach with authentic local data
  • Behavioral pattern simulation for realistic user archetypes
  • Advanced data structures (time series, hierarchical, graph)
  • Flutter-specific utilities for UI testing
  • API response mocking (REST, GraphQL, WebSocket)
  • Multiple export formats (JSON, CSV, SQL)
  • Memory-efficient streaming for large datasets

Installation #

dependencies:
  darturbation: ^2.0.2
dart pub get

Quick Start #

import 'package:darturbation/darturbation.dart';

void main() {
  // Generate single entities
  final user = Darturbation.user();
  final product = Darturbation.product();
  
  // Generate bulk data
  final users = Darturbation.users(count: 100);
  final products = Darturbation.products(count: 50);
  
  // Generate related data
  final order = Darturbation.order(
    user: user,
    withProducts: [product]
  );
  
  // Custom schema generation
  final customData = Darturbation.fromSchema(
    schema: {
      'firstName': String,
      'age': int,
      'salary': double,
      'isActive': bool,
      'joinDate': DateTime,
    },
    count: 100,
  );
}

Core Capabilities #

Data Generation #

Generate realistic mock data with maintained relationships:

// E-commerce scenario
final scenario = Darturbation.scenario('ecommerce')
  .users(100)
  .products(200)
  .orders()
  .reviews()
  .generate();

// Access generated data
final users = scenario['users'] as List<User>;
final products = scenario['products'] as List<Product>;
final orders = scenario['orders'] as List<Order>;

Advanced Data Structures #

// Time series with trends and seasonality
final salesData = Darturbation.timeSeries(
  startDate: DateTime(2023, 1, 1),
  endDate: DateTime(2023, 12, 31),
  interval: Duration(days: 1),
  baseValue: 1000.0,
  trend: 0.1,
  seasonality: 0.3,
  noise: 0.1,
);

// Hierarchical structures
final orgChart = Darturbation.hierarchical(
  schema: {'name': String, 'title': String},
  maxDepth: 4,
  totalNodes: 100,
);

// Graph data
final socialNetwork = Darturbation.graph(
  nodeCount: 100,
  nodeSchema: {'name': String, 'age': int},
  connectionProbability: 0.15,
);

// Correlated datasets
final metrics = Darturbation.correlatedSeries(
  seriesNames: ['marketing', 'traffic', 'sales'],
  correlationMatrix: [
    [1.0, 0.8, 0.6],
    [0.8, 1.0, 0.7],
    [0.6, 0.7, 1.0],
  ],
  count: 365,
);

Flutter Integration #

// ListView data
final listData = Darturbation.listView(
  itemCount: 50,
  itemType: 'user_profile',
);

// Card widgets
final cards = Darturbation.cards(
  cardCount: 20,
  cardType: 'product',
);

// Form generation
final form = Darturbation.form(
  formType: 'registration',
  includeValidation: true,
);

// Navigation mock
final navigation = Darturbation.navigation(
  routeCount: 15,
  includeHistory: true,
);

// Theme data
final theme = Darturbation.theme(
  themeName: 'dark',
  isDark: true,
);

API Testing #

// REST API response
final response = Darturbation.apiResponse(
  endpoint: '/api/users',
  method: 'GET',
  itemCount: 20,
  statusCode: 200,
);

// GraphQL response
final gqlResponse = Darturbation.graphqlResponse(
  query: 'query GetUsers { users { id name } }',
  dataSchema: {'users': List},
  itemCount: 10,
);

// WebSocket message
final wsMessage = Darturbation.websocketMessage(
  type: 'chat_message',
  dataSchema: {'userId': String, 'message': String},
);

// Error response
final error = Darturbation.errorResponse(
  statusCode: 404,
  message: 'Resource not found',
);

Data Export #

final users = Darturbation.users(count: 100);

// Export to JSON
final jsonData = Darturbation.export(users, to: 'json');

// Export to CSV
final csvData = Darturbation.export(users, to: 'csv');

// Export to SQL
final sqlData = Darturbation.export(
  users,
  to: 'sql',
  tableName: 'app_users',
);

Streaming for Large Datasets #

// Memory-efficient generation
final userStream = Darturbation.streamUsers(count: 10000);

await for (final user in userStream) {
  await processUser(user);
}

Indonesian Localization #

Darturbation provides authentic Indonesian data:

  • Realistic Indonesian names (Budi Santoso, Siti Rahayu)
  • Complete addresses with RT/RW, cities, and provinces
  • Properly formatted phone numbers (0812-xxxx-xxxx)
  • Local brands and product categories
  • Indonesian payment methods (GoPay, OVO, DANA)
  • Cultural patterns and behavioral data

Context-Aware Generation #

Data maintains logical relationships:

  • Email addresses match user names
  • Cities match provinces
  • Order dates align with user registration
  • Product brands match categories
  • Review timing follows purchase patterns

API Reference #

Core Methods #

// Single entity
User user()
Product product()
Order order({required User user, required List<Product> withProducts})

// Bulk generation
List<User> users({int count = 10})
List<Product> products({int count = 10})
List<Order> orders({int count, required List<User> fromUsers, required List<Product> withProducts})

// Streaming
Stream<User> streamUsers({int count = 10})
Stream<Product> streamProducts({int count = 10})
Stream<Order> streamOrders({required List<User> users, required List<Product> products, int count = 10})

// Schema-based
List<Map<String, dynamic>> fromSchema({required Map<String, Type> schema, int count = 10})

// Advanced
List<Map<String, dynamic>> timeSeries({required DateTime startDate, required DateTime endDate, ...})
List<Map<String, dynamic>> hierarchical({required Map<String, Type> schema, int maxDepth = 3, ...})
Map<String, dynamic> graph({int nodeCount = 50, ...})
Map<String, List<double>> correlatedSeries({required List<String> seriesNames, ...})
List<Map<String, dynamic>> withAnomalies({required Map<String, Type> schema, double anomalyRate = 0.1, ...})

Flutter Methods #

List<Map<String, dynamic>> listView({int itemCount = 20, String itemType = 'generic'})
List<Map<String, dynamic>> cards({int cardCount = 10, String cardType = 'generic'})
Map<String, dynamic> form({String formType = 'generic', bool includeValidation = true})
Map<String, dynamic> navigation({int routeCount = 10, bool includeHistory = true})
Map<String, dynamic> theme({String themeName = 'default', bool isDark = false})

API Testing Methods #

Map<String, dynamic> apiResponse({required String endpoint, String method = 'GET', ...})
Map<String, dynamic> graphqlResponse({required String query, ...})
Map<String, dynamic> websocketMessage({required String type, ...})
Map<String, dynamic> errorResponse({int statusCode = 500, String? message})

Utility Methods #

int randomInt(int min, int max)
double randomDouble(double min, double max)
T randomChoice<T>(List<T> items)
bool randomBool([double probability = 0.5])
String generateId()
String export<T>(List<T> data, {required String to, String tableName = 'data'})
EcommerceScenario scenario(String type)

Testing Example #

import 'package:flutter_test/flutter_test.dart';
import 'package:darturbation/darturbation.dart';

void main() {
  test('User service processes data correctly', () {
    final testUsers = Darturbation.users(count: 10);
    final userService = UserService();
    final result = userService.processUsers(testUsers);
    
    expect(result.length, equals(10));
    expect(result.every((user) => user.isValid), isTrue);
  });
}

Use Cases #

  • UI testing with realistic mock data
  • API endpoint testing and mocking
  • Database seeding and testing
  • Performance testing with large datasets
  • Algorithm testing with correlated data
  • Anomaly detection testing
  • Form validation testing
  • Navigation flow testing

Documentation #

Contributing #

Contributions are welcome! Please see our Contributing Guide for details on bug reports, feature requests, code contributions, and documentation improvements.

License #

This project is licensed under the MIT License - see the LICENSE file for details.


Star on GitHub | View on pub.dev | Report Issues

9
likes
160
points
24
downloads

Publisher

unverified uploader

Weekly Downloads

An advanced, context-aware, and behavioral mock data generator for Dart & Flutter.

Repository (GitHub)
View/report issues
Contributing

Documentation

API reference

License

MIT (license)

Dependencies

collection, crypto, faker, intl, uuid

More

Packages that depend on darturbation