tarsier_datamocker 1.0.2 copy "tarsier_datamocker: ^1.0.2" to clipboard
tarsier_datamocker: ^1.0.2 copied to clipboard

A Flutter & Dart library for generating realistic mock data—names, emails, addresses, phone numbers, and company details—ideal for testing, API mocking, and placeholder content.

Tarsier Data Mocker

DocumentationIssuesExampleLicensePub.dev

A Flutter library for generating realistic random data including names, addresses, emails, phone numbers, and company details—perfect for testing, API mocking, and placeholder content.

Features #

  • Multiple Data Types: Generate names, emails, addresses, dates, colors, URLs, and more
  • Locale Support: Generate locale-specific names, addresses, and companies
    • 🌍 en (English)
    • 🌍 ja (Japanese)
    • 🌍 zh (Chinese)
  • Unique Value Enforcement: Ensure generated values are unique when needed
  • Customizable Options: Fine-tune generation behavior with MockerOptions
  • Pure Dart: No Flutter dependencies - works anywhere Dart runs
  • Type Safety: Strongly typed API with enum-based data types
  • Batch Generation: Generate multiple values or objects at once
  • JSON Generation: Generate mock JSON data with schemas

Installation #

Add to your pubspec.yaml:

dependencies:
  tarsier_datamocker: ^1.0.2

Then run:

dart pub get

Quick Start #

import 'package:tarsier_datamocker/tarsier_datamocker.dart';

void main() {
  // Initialize with custom options (optional)
  TarsierDataMocker.init(
    options: MockerOptions(
      defaultLocale: 'en', //[en, ja, zh]
      ensureUnique: {MockerType.email, MockerType.username},
    ),
  );

  // Generate single values
  final name = TarsierDataMocker.name(gender: 'male');
  final email = TarsierDataMocker.email();
  final phone = TarsierDataMocker.phone('+1');
  final date = TarsierDataMocker.date(minYear: 2000, maxYear: 2023);

  print('Name: $name');
  print('Email: $email');
  print('Phone: $phone');
  print('Date: $date');

  // Generate multiple values
  final emails = TarsierDataMocker.generateMultiple(
    type: MockerType.email,
    count: 5,
  );
  
  // Generate a mock user object
  final user = TarsierDataMocker.generateMockObject({
    'id': MockerType.integer,
    'name': MockerType.name,
    'email': MockerType.email,
    'age': MockerType.integer,
    'isActive': MockerType.boolean,
  }, fieldParameters: {
    'age': {'min': 18, 'max': 65},
    'id': {'min': 1000, 'max': 9999},
  });
}

Available Data Types #

Personal Information #

  • Names: MockerType.name - Generate names with locale and gender support
  • Emails: MockerType.email - Generate unique email addresses
  • Phone Numbers: MockerType.phone - Generate phone numbers with country codes
  • Addresses: MockerType.address - Generate street addresses
  • Avatars: MockerType.avatar - Generate avatar image URLs
  • Biographies: MockerType.bio - Generate short bios

Professional Data #

  • Company Names: MockerType.companyName - Generate company names
  • Job Titles: MockerType.jobTitle - Generate job titles
  • Departments: MockerType.department - Generate department names

Technical Data #

  • IP Addresses: MockerType.ipAddress - Generate IPv4 addresses
  • MAC Addresses: MockerType.macAddress - Generate MAC addresses
  • UUIDs: MockerType.uuid - Generate UUIDs
  • JWT Tokens: MockerType.jwt - Generate mock JWT tokens
  • Credit Card Numbers: MockerType.creditCardNumber - Generate test credit card numbers

Geographic Data #

  • Coordinates: MockerType.latitude, MockerType.longitude, MockerType.location
  • Image URLs: MockerType.imageUrl - Generate image URLs with customizable parameters
  • Text & Content
  • Paragraphs: MockerType.paragraph - Generate text paragraphs
  • Strings: MockerType.string - Generate random strings
  • Emojis: MockerType.emoji - Generate random emojis
  • File Names: MockerType.fileName - Generate file names with extensions

Numeric Data #

  • Integers: MockerType.integer - Generate integers within ranges
  • Doubles: MockerType.doubleValue - Generate doubles with decimal precision
  • Booleans: MockerType.boolean - Generate true/false values

Collections #

  • Lists: MockerType.list - Generate lists of any data type
  • Maps: MockerType.map - Generate maps with specified field types
  • Hobbies: MockerType.hobbies - Generate lists of hobbies

Miscellaneous #

  • Colors: MockerType.color - Generate colors with multiple formats
  • Dates: MockerType.date - Generate dates within ranges
  • Times: MockerType.time24Hour - Generate 24-hour format times
  • Currency: MockerType.currency - Generate currency strings
  • Grades: MockerType.grade - Generate academic grades
  • URLs: MockerType.url - Generate website URLs

Advanced Usage #

Custom Configuration #

TarsierDataMocker.init(
  options: MockerOptions(
    // Ensure emails and usernames are unique
    ensureUnique: {MockerType.email, MockerType.name},
    
    // Set default locale for locale-sensitive data
    defaultLocale: 'fr',
    
    // Default gender for names
    defaultGender: 'female',
    
    // Date range defaults
    defaultDateRange: (min: 1990, max: 2024),
    
    // Numeric ranges
    defaultIntegerRange: (min: 1, max: 1000),
    defaultDoubleRange: (min: 0.0, max: 100.0),
    
    // String and list lengths
    defaultStringLength: (min: 8, max: 32),
    defaultListLength: (min: 3, max: 10),
    
    // Other defaults
    includeMiddleName: false,
    defaultCountryCode: '+63',
    defaultSentenceCount: 3,
    defaultImageSize: (width: 800, height: 600),
    defaultDecimalPlaces: 3,
  ),
);

Generating Complex Objects #

// Generate a user profile
final profile = TarsierDataMocker.generateMockObject({
  'userId': MockerType.uuid,
  'fullName': MockerType.name,
  'email': MockerType.email,
  'phone': MockerType.phone,
  'address': MockerType.address,
  'dateOfBirth': MockerType.date,
  'avatar': MockerType.avatar,
  'bio': MockerType.bio,
  'hobbies': MockerType.hobbies,
  'isVerified': MockerType.boolean,
  'createdAt': MockerType.date,
  'updatedAt': MockerType.date,
}, fieldParameters: {
  'dateOfBirth': {'minYear': 1970, 'maxYear': 2000},
  'createdAt': {'minYear': 2020, 'maxYear': 2023},
  'updatedAt': {'minYear': 2023, 'maxYear': 2024},
});

// Generate multiple products
final products = TarsierDataMocker.generateMockObjects(
  fieldTypes: {
    'id': MockerType.integer,
    'name': MockerType.string,
    'description': MockerType.paragraph,
    'price': MockerType.doubleValue,
    'currency': MockerType.currency,
    'inStock': MockerType.boolean,
    'categories': MockerType.list,
    'image': MockerType.imageUrl,
    'rating': MockerType.doubleValue,
  },
  fieldParameters: {
    'id': {'min': 1000, 'max': 9999},
    'name': {'minLength': 10, 'maxLength': 50},
    'price': {'min': 10.0, 'max': 1000.0, 'decimalPlaces': 2},
    'categories': {
      'itemType': MockerType.string,
      'minLength': 1,
      'maxLength': 3,
    },
    'image': {'width': 400, 'height': 400},
    'rating': {'min': 1.0, 'max': 5.0, 'decimalPlaces': 1},
  },
  count: 10,
);

Using the Generic Generator #

// Generate any data type using the generic method
final data = TarsierDataMocker.generate(
  type: MockerType.email,
);

// Generate with parameters
final customDate = TarsierDataMocker.generate(
  type: MockerType.date,
  parameters: {
    'minYear': 2020,
    'maxYear': 2023,
  },
);

// Generate a list of integers
final numberList = TarsierDataMocker.generate(
  type: MockerType.list,
  parameters: {
    'itemType': MockerType.integer,
    'minLength': 5,
    'maxLength': 10,
    'itemParameters': {'min': 1, 'max': 100},
  },
);

Color Generation #

final color = TarsierDataMocker.color();

// Convert to different formats
print(color.toHex());      // "#FF3A7C9B"
print(color.toRgb());      // "rgb(58, 124, 155)"
print(color.toRgba());     // "rgba(58, 124, 155, 1.0)"
print(color.toArgb());     // 4281234651
print(color.toString());   // "#FF3A7C9B"

JSON Generation #

// Generate JSON from a schema
final jsonString = TarsierDataMocker.json(
  schema: {
    'users': MockerType.list,
    'total': MockerType.integer,
    'page': MockerType.integer,
    'hasMore': MockerType.boolean,
  },
  pretty: true,
);

// Generate complex nested JSON
final nestedJson = TarsierDataMocker.json(
  schema: {
    'data': MockerType.map,
  },
  pretty: true,
);

Locale Support #

Tarsier Data Mocker supports multiple locales for locale-sensitive data:

// English (default)
final englishName = TarsierDataMocker.name(locale: 'en');

// Japanese
final japaneseName = TarsierDataMocker.name(locale: 'ja');

// Chinese
final chineseName = TarsierDataMocker.name(locale: 'zh');

Available locales may vary depending on the included locale data.

Unique Value Generation #

Ensure unique values for specific data types:

TarsierDataMocker.init(
  options: MockerOptions(
    ensureUnique: {
      MockerType.email,
      MockerType.username,
      MockerType.uuid,
      MockerType.creditCardNumber,
    },
  ),
);

// These will always be unique
final email1 = TarsierDataMocker.email();
final email2 = TarsierDataMocker.email();
final email3 = TarsierDataMocker.email();

print(email1 != email2); // true
print(email2 != email3); // true
print(email1 != email3); // true

To reset unique value tracking:

TarsierDataMocker.reset();

🎖️ License #

This package is licensed under the MIT License.

🐞Suggestions for Improvement? #

Feel free to open an issue or submit a pull request on GitHub.

Why "Tarsier Data Mocker"?

The tarsier, one of the smallest primates, symbolizes simplicity and adaptability—just like this package! 🐒

0
likes
160
points
0
downloads
screenshot

Publisher

unverified uploader

Weekly Downloads

A Flutter & Dart library for generating realistic mock data—names, emails, addresses, phone numbers, and company details—ideal for testing, API mocking, and placeholder content.

Repository (GitHub)
View/report issues

Topics

#tarsier #generator #mocker #faker

Documentation

API reference

License

MIT (license)

More

Packages that depend on tarsier_datamocker