register method
Register services with the container.
This method is called when the provider is registered with the container. Use this method to register bindings, instances, and aliases.
Implementation
@override
void register(Container container) {
_ensureDefaultDriversRegistered();
if (container.has<StorageManager>()) {
_managedManager = null;
final existing = container.get<StorageManager>();
_registerStorageDefaults(container, existing);
return;
}
final defaultFs = container.has<EngineConfig>()
? container.get<EngineConfig>().fileSystem
: null;
final manager = StorageManager(defaultFileSystem: defaultFs);
_managedManager = manager;
if (container.has<Config>()) {
_applyConfig(container, manager, container.get<Config>());
} else {
final registered = _registerDefaultDisk(
container,
manager,
storageRoot: defaultStorageRootPath(),
);
final defaultName = manager.defaultDisk;
final facadeDisks = <String, Map<String, dynamic>>{};
final localFileSystems = <String, file.FileSystem>{};
if (registered != null) {
facadeDisks[registered.key] = registered.value;
final disk = manager.disk(registered.key);
if (disk is LocalStorageDisk) {
localFileSystems[registered.key] = disk.fileSystem;
}
} else if (manager.hasDisk(defaultName)) {
facadeDisks[defaultName] = _configFromDisk(manager.disk(defaultName));
final disk = manager.disk(defaultName);
if (disk is LocalStorageDisk) {
localFileSystems[defaultName] = disk.fileSystem;
}
}
_initializeStorageFacade(
defaultDisk: defaultName,
cloudDisk: null,
disks: facadeDisks,
localFileSystems: localFileSystems,
);
}
container.instance<StorageManager>(manager);
_registerStorageDefaults(container, manager);
}