writeMainHeader method
void
writeMainHeader(
- IndentingWriter out, [
- OutputConfiguration config = const DefaultOutputConfiguration()
Writes the header and imports for the .pb.dart file.
Implementation
void writeMainHeader(IndentingWriter out,
[OutputConfiguration config = const DefaultOutputConfiguration()]) {
_writeHeading(out);
// We only add the dart:async import if there are generic client API
// generators for services in the FileDescriptorProto.
if (clientApiGenerators.isNotEmpty) {
out.println(_asyncImport);
}
out.println(_coreImport);
out.println();
if (_needsFixnumImport) {
out.println(
"import 'package:fixnum/fixnum.dart' as $_fixnumImportPrefix;");
}
if (_needsProtobufImport) {
out.println(_protobufImport);
out.println();
}
final mixinImports = findMixinImports();
for (var libraryUri in mixinImports) {
out.println("import '$libraryUri' as $mixinImportPrefix;");
}
if (mixinImports.isNotEmpty) out.println();
// Import the .pb.dart files we depend on.
var imports = Set<FileGenerator>.identity();
var enumImports = Set<FileGenerator>.identity();
_findProtosToImport(imports, enumImports);
for (var target in imports) {
_writeImport(out, config, target, '.pb.dart');
}
if (imports.isNotEmpty) out.println();
for (var target in enumImports) {
_writeImport(out, config, target, '.pbenum.dart');
}
if (enumImports.isNotEmpty) out.println();
for (var publicDependency in descriptor.publicDependency) {
_writeExport(out, config,
Uri.file(descriptor.dependency[publicDependency]), '.pb.dart');
}
// Export enums in main file for backward compatibility.
if (enumCount > 0) {
var resolvedImport =
config.resolveImport(protoFileUri, protoFileUri, '.pbenum.dart');
out.println("export '$resolvedImport';");
out.println();
}
}