generate method

void generate(
  1. DeepLinkConfig config
)

Generates the Flutter deep linking files under lib/deep_link/ directory. Merges existing user custom code segments if applicable.

Implementation

void generate(DeepLinkConfig config) {
  try {
    FileUtils.createDirectory(outputDir);

    final placeholders = {
      'CHANNEL': Constants.channelName,
      'SCHEMES': config.schemes.map((s) => "'${s.toLowerCase()}'").join(',\n    '),
    };

    // 1. Generate deep_link_service.dart
    _generateFile(
      'deep_link_service.dart',
      TemplatesBundle.deepLinkService,
      placeholders,
    );

    // 2. Generate deep_link_route.dart
    _generateFile(
      'deep_link_route.dart',
      TemplatesBundle.deepLinkRoute,
      placeholders,
    );

    // 3. Generate deep_link_parser.dart
    _generateFile(
      'deep_link_parser.dart',
      TemplatesBundle.deepLinkParser,
      placeholders,
    );

    // 4. Generate deep_link_routes.dart (merge custom code)
    _generateFile(
      'deep_link_routes.dart',
      TemplatesBundle.deepLinkRoutes,
      placeholders,
      mergeCustom: true,
    );

    // 5. Generate deep_link_constants.dart
    _generateFile(
      'deep_link_constants.dart',
      TemplatesBundle.deepLinkConstants,
      placeholders,
    );

    // 6. Generate deep_link_utils.dart
    _generateFile(
      'deep_link_utils.dart',
      TemplatesBundle.deepLinkUtils,
      placeholders,
    );

    // 7. Generate deep_link_manager.dart if enabled
    final managerPath = PathUtils.join(outputDir, 'deep_link_manager.dart');
    if (config.generateDeepLinkManager) {
      _generateFile(
        'deep_link_manager.dart',
        TemplatesBundle.deepLinkManager,
        placeholders,
      );
    } else {
      if (FileUtils.exists(managerPath)) {
        FileUtils.delete(managerPath);
      }
    }
  } catch (e) {
    throw TemplateException('Failed to generate Flutter files', e);
  }
}