tarsier_datamocker 1.0.2
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
Documentation • Issues • Example • License • Pub.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! 🐒
