clonify 0.4.1 copy "clonify: ^0.4.1" to clipboard
clonify: ^0.4.1 copied to clipboard

A powerful CLI tool for managing multiple Flutter project clones with different configurations, branding, and Firebase projects. Perfect for white-label apps.

example/example.dart

/// Example demonstrating programmatic usage of Clonify models.
///
/// This example shows how to work with Clonify's data models
/// programmatically, which can be useful for testing or building
/// custom tooling on top of Clonify.
library;

import 'package:clonify/models/color_model.dart';
import 'package:clonify/models/gradient_color_model.dart';
import 'package:clonify/models/config_model.dart';
import 'package:clonify/models/custom_field_model.dart';

void main() {
  print('=== Clonify Models Example ===\n');

  // Example 1: Working with ColorModel
  print('1. Creating a ColorModel:');
  final primaryColor = ColorModel(color: '#2196F3', name: 'Primary');
  print('   Color: ${primaryColor.color}');
  print('   Name: ${primaryColor.name}\n');

  // Example 2: Creating ColorModel from JSON
  print('2. ColorModel from JSON:');
  final colorJson = {'color': '#FF5733', 'name': 'Accent'};
  final accentColor = ColorModel.fromJson(colorJson);
  print('   Color: ${accentColor.color}');
  print('   Name: ${accentColor.name}\n');

  // Example 3: Working with GradientColorModel
  print('3. Creating a GradientColorModel:');
  final gradientJson = {
    'name': 'Sunset Gradient',
    'colors': ['#FF5733', '#FFC300', '#FF5733'],
    'begin': 'topLeft',
    'end': 'bottomRight',
  };
  final gradient = GradientColorModel.fromJson(gradientJson);
  print('   Name: ${gradient.name}');
  print('   Colors: ${gradient.colors}');
  print('   Begin: ${gradient.begin}');
  print('   End: ${gradient.end}\n');

  // Example 4: Working with CustomField
  print('4. Creating CustomField:');
  final customField = CustomField(name: 'apiTimeout', type: 'int');
  print('   Name: ${customField.name}');
  print('   Type: ${customField.type}');
  print('   Valid: ${customField.isValidType()}\n');

  // Example 5: CustomField from JSON
  print('5. CustomField from JSON:');
  final fieldJson = {'name': 'enableDarkMode', 'type': 'bool'};
  final darkModeField = CustomField.fromJson(fieldJson);
  print('   Name: ${darkModeField.name}');
  print('   Type: ${darkModeField.type}');
  print('   JSON: ${darkModeField.toJson()}\n');

  // Example 6: Working with CloneConfigModel
  print('6. Creating complete CloneConfigModel:');
  final configJson = {
    'clientId': 'client-abc',
    'appName': 'Client ABC App',
    'packageName': 'com.example.clientabc',
    'primaryColor': '#2196F3',
    'baseUrl': 'https://api.clientabc.com',
    'version': '1.0.0+1',
    'colors': [
      {'color': '#2196F3', 'name': 'Primary'},
      {'color': '#FF5733', 'name': 'Secondary'},
    ],
    'linearGradients': [
      {
        'name': 'Primary Gradient',
        'colors': ['#2196F3', '#1976D2'],
        'begin': 'topCenter',
        'end': 'bottomCenter',
      },
    ],
  };

  final config = CloneConfigModel.fromJson(configJson);
  print('   Client ID: ${config.clientId}');
  print('   App Name: ${config.appName}');
  print('   Package: ${config.packageName}');
  print('   Primary Color: ${config.primaryColor}');
  print('   Base URL: ${config.baseUrl}');
  print('   Version: ${config.version}');
  print('   Valid: ${config.isValid}');
  print('   Colors count: ${config.colors?.length ?? 0}');
  print('   Gradients count: ${config.gradientsColors?.length ?? 0}\n');

  // Example 7: Validating config
  print('7. Validating configurations:');
  final validConfig = CloneConfigModel.fromJson({
    'appName': 'Valid App',
    'packageName': 'com.example.valid',
  });
  print('   Valid config: ${validConfig.isValid}');

  final invalidConfig = CloneConfigModel.fromJson({
    'appName': '',
    'packageName': '',
  });
  print('   Invalid config: ${invalidConfig.isValid}\n');

  // Example 8: Working with multiple colors
  print('8. Managing multiple colors:');
  final colorList = [
    ColorModel(color: '#2196F3', name: 'Primary'),
    ColorModel(color: '#FF5733', name: 'Secondary'),
    ColorModel(color: '#4CAF50', name: 'Success'),
    ColorModel(color: '#F44336', name: 'Error'),
  ];

  print('   Colors in palette:');
  for (final color in colorList) {
    print('     - ${color.name}: ${color.color}');
  }
  print('');

  // Example 9: Multiple gradients
  print('9. Managing multiple gradients:');
  final gradientList = [
    GradientColorModel.fromJson({
      'name': 'Ocean',
      'colors': ['#667eea', '#764ba2'],
      'begin': 'topLeft',
      'end': 'bottomRight',
    }),
    GradientColorModel.fromJson({
      'name': 'Sunset',
      'colors': ['#FF5733', '#FFC300'],
      'begin': 'topCenter',
      'end': 'bottomCenter',
    }),
  ];

  print('   Gradients in collection:');
  for (final grad in gradientList) {
    print('     - ${grad.name}: ${grad.colors?.length} colors');
    print('       Direction: ${grad.begin} → ${grad.end}');
  }
  print('');

  // Example 10: Custom fields validation
  print('10. Custom fields type validation:');
  final validTypes = ['string', 'int', 'bool', 'double'];
  final invalidType = 'array';

  for (final type in validTypes) {
    final field = CustomField(name: 'test', type: type);
    print('     $type: ${field.isValidType()}');
  }

  final invalidField = CustomField(name: 'test', type: invalidType);
  print('     $invalidType: ${invalidField.isValidType()}\n');

  print('=== Example Complete ===');
}
0
likes
0
points
95
downloads

Publisher

unverified uploader

Weekly Downloads

A powerful CLI tool for managing multiple Flutter project clones with different configurations, branding, and Firebase projects. Perfect for white-label apps.

Repository (GitHub)
View/report issues

Topics

#cli #flutter #white-label #multi-tenant #clone

License

unknown (license)

Dependencies

args, chalkdart, logger, mason_logger, path, process, yaml, yaml_edit

More

Packages that depend on clonify