Я добавил аналитику Firebase в свой проект и использую аналитику во всех случаях использования. Поэтому в каждом файле мне нужно создать экземпляр аналитики firebase. нравиться
FirebaseAnalytics analytics = FirebaseAnalytics.instance;.
Итак, я подумал, что если я использую getIt и добавляю экземпляр туда, где мне нужно, в этом случае будет создан только один экземпляр. лайк getIt.registerSingleton(FirebaseAnalytics.instance);





Нет необходимости внедрять их с помощью пакета менеджера зависимостей, геттер instance сервисов Firebase реализован следующим образом:
/// Returns an instance using the default [FirebaseApp].
static FirebaseAuth get instance {
FirebaseApp defaultAppInstance = Firebase.app();
return FirebaseAuth.instanceFor(app: defaultAppInstance);
}
/// Returns an instance using a specified [FirebaseApp].
/// Note that persistence can only be used on Web and is not supported on other platforms.
factory FirebaseAuth.instanceFor(
{required FirebaseApp app, Persistence? persistence}) {
return _firebaseAuthInstances.putIfAbsent(app.name, () {
return FirebaseAuth._(app: app, persistence: persistence);
});
}
поэтому вызов нескольких геттеров instance во всем приложении не будет регистрировать его каждый раз, он будет регистрировать его только в первый раз с помощью putIfAbsent, после чего он будет напрямую возвращать этот экземпляр.
Вместо того, чтобы вводить FirebaseAnalytics напрямую, используйте Wrapper и вставьте это, вот так.
Сначала определите свою оболочку:
class Analytics {
Analytics(this.firebaseAnalytics);
final FirebaseAnalytics firebaseAnalytics;
void logEvent(String eventName, Map<String, dynamic> params) {
// log any analytics here.
}
}
Создайте свою обертку.
final analytics = Analytics(FirebaseAnalytics.instance);
Вставьте свою обертку (вы можете использовать любой сервисный инжектор).
getIt.registerSingleton(analytics);
Затем вы можете получить свою зависимость от любого виджета/блока.
Почему?
Представьте, что позже вы захотите добавить или переключить другого провайдера аналитики, нам просто нужно будет изменить вашу оболочку, а не обновлять все ваши виджеты.
Это также поможет для тестирования, вы сможете издеваться над своей Wrapper.