generate method
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);
}
}