---
sidebar_position: 3
---

# Скоуп (Scope)

**Scope** управляет деревом модулей и экземпляров зависимостей. Скоупы могут быть вложенными (иерархия родитель-дочерний), обеспечивая модульную компоновку приложения и возможность переопределения зависимостей для отдельных контекстов.

Обычно вы работаете с корневым скоупом, но при необходимости можете создавать именованные подскоупы.

## Пример

```dart
// Открыть основной/корневой скоуп
final rootScope = CherryPick.openRootScope();

// Установить пользовательский модуль
rootScope.installModules([AppModule()]);

// Получить зависимость синхронно
final str = rootScope.resolve<String>();

// Получить зависимость асинхронно
final result = await rootScope.resolveAsync<String>();

// Рекомендуется: закрывать корневой скоуп и высвобождать все ресурсы
await CherryPick.closeRootScope();

// Либо вручную вызвать dispose на любом скоупе, которым вы управляете индивидуально
// await rootScope.dispose();
```
