Skip to content

Upgrading firebase_analytics 8 to 9

Breaking8.3.4 β†’ 9.3.8Breaking9Platform2Deprecated6New12Changed4Fixed11Other7

BreakingUpgrade verdict

3 breaking changes and 2 platform requirement changes.

  • The FirebaseAnalyticsObserver class is no longer available.
  • Do not create analytics instances directly; get the shared instance instead.
  • The parameters for logging view-item events changed and may require code updates.
  • This package now needs Dart 2.16.0 or newer.
Top 5 of 11 that need code or config changes

Dart SDK requirement changed in 9.1.2: >=2.12.0 <3.0.0 β†’ >=2.16.0 <3.0.0.

Adds firebase_core_platform_interface ^4.5.1.

Drops meta.

Moves firebase_analytics_platform_interface ^2.0.1 β†’ ^3.3.7, firebase_analytics_web ^0.3.0+1 β†’ ^0.4.2+7, firebase_core ^1.8.0 β†’ ^1.10.0. Your build may pick other versions.

Breaking3
Removes the FirebaseAnalyticsObserver() class.
FirebaseAnalyticsObserver()
Deprecates constructing a FirebaseAnalytics instance; use FirebaseAnalytics.instanceFor (web only) or FirebaseAnalytics.instance.
FirebaseAnalyticsFirebaseAnalytics.instanceForFirebaseAnalytics.instance
Updates logViewItem() parameters so they are logged in the Analytics console.
logViewItem()logAddPaymentInfo()logAddToCart()logAddToWishlist()logBeginCheckout()logRemoveFromCart()logViewItemList()
Platform2
Updates all Dart SDK version constraints to require Dart >= 2.16.0.
Updates Android minSdk version to 19, required by Firebase Android SDK 29.0.0.
minSdk
Deprecated6
Deprecates signInWithAuthProvider in favor of signInWithProvider.
signInWithAuthProvidersignInWithProvider
Deprecates the FirebaseAnalytics.android namespace in favor of calling setSessionTimeoutDuration() directly.
FirebaseAnalytics.androidsetSessionTimeoutDuration()FirebaseAnalytics.instance
Deprecates logEcommercePurchase() in favor of logPurchase().
logEcommercePurchase()logPurchase()
Deprecates logPresentOffer() in favor of logViewPromotion().
logPresentOffer()logViewPromotion()
Deprecates logPurchaseRefund() in favor of logRefund().
logPurchaseRefund()logRefund()
Deprecates logSetCheckoutOption().
logSetCheckoutOption()

Generated by DepDelta from published Dart source. Not mixed with prose notes.

  • changed: class FirebaseAnalytics β†’ class FirebaseAnalytics extends FirebasePluginPlatform
  • changed: method FirebaseAnalytics.logAddPaymentInfo(): Future<void> β†’ method FirebaseAnalytics.logAddPaymentInfo({ String? coupon, String? currency, String? paymentType, double? value, List<AnalyticsEventItem>? items, AnalyticsCallOptions? callOptions, }): Future<void>
  • changed: method FirebaseAnalytics.logAddToCart({ required String itemId, required String itemName, required String itemCategory, required int quantity, double? price, double? value, String? currency, String? origin, String? itemLocationId, String? destination, String? startDate, String? endDate, }): Future<void> β†’ method FirebaseAnalytics.logAddToCart({ List<AnalyticsEventItem>? items, double? value, String? currency, AnalyticsCallOptions? callOptions, }): Future<void>
  • changed: method FirebaseAnalytics.logAddToWishlist({ required String itemId, required String itemName, required String itemCategory, required int quantity, double? price, double? value, String? currency, String? itemLocationId, }): Future<void> β†’ method FirebaseAnalytics.logAddToWishlist({ List<AnalyticsEventItem>? items, double? value, String? currency, AnalyticsCallOptions? callOptions, }): Future<void>
  • changed: method FirebaseAnalytics.logAppOpen(): Future<void> β†’ method FirebaseAnalytics.logAppOpen({AnalyticsCallOptions? callOptions}): Future<void>
  • changed: method FirebaseAnalytics.logBeginCheckout({ double? value, String? currency, String? transactionId, int? numberOfNights, int? numberOfRooms, int? numberOfPassengers, String? origin, String? destination, String? startDate, String? endDate, String? travelClass, }): Future<void> β†’ method FirebaseAnalytics.logBeginCheckout({ double? value, String? currency, List<AnalyticsEventItem>? items, String? coupon, AnalyticsCallOptions? callOptions, }): Future<void>
  • changed: method FirebaseAnalytics.logCampaignDetails({ required String source, required String medium, required String campaign, String? term, String? content, String? aclid, String? cp1, }): Future<void> β†’ method FirebaseAnalytics.logCampaignDetails({ required String source, required String medium, required String campaign, String? term, String? content, String? aclid, String? cp1, AnalyticsCallOptions? callOptions, }): Future<void>
  • changed: method FirebaseAnalytics.logEarnVirtualCurrency({ required String virtualCurrencyName, required num value, }): Future<void> β†’ method FirebaseAnalytics.logEarnVirtualCurrency({ required String virtualCurrencyName, required num value, AnalyticsCallOptions? callOptions, }): Future<void>
  • changed: method FirebaseAnalytics.logEvent( {required String name, Map<String, Object?>? parameters}): Future<void> β†’ method FirebaseAnalytics.logEvent({ required String name, Map<String, Object?>? parameters, AnalyticsCallOptions? callOptions, }): Future<void>
  • changed: method FirebaseAnalytics.logGenerateLead({ String? currency, double? value, }): Future<void> β†’ method FirebaseAnalytics.logGenerateLead({ String? currency, double? value, AnalyticsCallOptions? callOptions, }): Future<void>
  • changed: method FirebaseAnalytics.logJoinGroup({ required String groupId, }): Future<void> β†’ method FirebaseAnalytics.logJoinGroup({ required String groupId, AnalyticsCallOptions? callOptions, }): Future<void>
  • changed: method FirebaseAnalytics.logLevelEnd({ required String levelName, int? success, }): Future<void> β†’ method FirebaseAnalytics.logLevelEnd({ required String levelName, int? success, AnalyticsCallOptions? callOptions, }): Future<void>
  • changed: method FirebaseAnalytics.logLevelStart({ required String levelName, }): Future<void> β†’ method FirebaseAnalytics.logLevelStart({ required String levelName, AnalyticsCallOptions? callOptions, }): Future<void>
  • changed: method FirebaseAnalytics.logLevelUp({ required int level, String? character, }): Future<void> β†’ method FirebaseAnalytics.logLevelUp({ required int level, String? character, AnalyticsCallOptions? callOptions, }): Future<void>
  • changed: method FirebaseAnalytics.logLogin({String? loginMethod}): Future<void> β†’ method FirebaseAnalytics.logLogin({ String? loginMethod, AnalyticsCallOptions? callOptions, }): Future<void>
  • changed: method FirebaseAnalytics.logPostScore({ required int score, int? level, String? character, }): Future<void> β†’ method FirebaseAnalytics.logPostScore({ required int score, int? level, String? character, AnalyticsCallOptions? callOptions, }): Future<void>
  • changed: method FirebaseAnalytics.logRemoveFromCart({ required String itemId, required String itemName, required String itemCategory, required int quantity, double? price, double? value, String? currency, String? origin, String? itemLocationId, String? destination, String? startDate, String? endDate, }): Future<void> β†’ method FirebaseAnalytics.logRemoveFromCart({ String? currency, double? value, List<AnalyticsEventItem>? items, AnalyticsCallOptions? callOptions, }): Future<void>
  • changed: method FirebaseAnalytics.logSearch({ required String searchTerm, int? numberOfNights, int? numberOfRooms, int? numberOfPassengers, String? origin, String? destination, String? startDate, String? endDate, String? travelClass, }): Future<void> β†’ method FirebaseAnalytics.logSearch({ required String searchTerm, int? numberOfNights, int? numberOfRooms, int? numberOfPassengers, String? origin, String? destination, String? startDate, String? endDate, String? travelClass, AnalyticsCallOptions? callOptions, }): Future<void>
  • changed: method FirebaseAnalytics.logViewItem({ required String itemId, required String itemName, required String itemCategory, String? itemLocationId, double? price, int? quantity, String? currency, double? value, String? flightNumber, int? numberOfPassengers, int? numberOfNights, int? numberOfRooms, String? origin, String? destination, String? startDate, String? endDate, String? searchTerm, String? trav… β†’ method FirebaseAnalytics.logViewItem({ String? currency, double? value, List<AnalyticsEventItem>? items, }): Future<void>
  • changed: method FirebaseAnalytics.logViewItemList({ required String itemCategory, }): Future<void> β†’ method FirebaseAnalytics.logViewItemList({ List<AnalyticsEventItem>? items, String? itemListId, String? itemListName, }): Future<void>
  • changed: method FirebaseAnalytics.setCurrentScreen( {required String? screenName, String screenClassOverride = …}): Future<void> β†’ method FirebaseAnalytics.setCurrentScreen({ required String? screenName, String screenClassOverride = …, AnalyticsCallOptions? callOptions, }): Future<void>
  • changed: method FirebaseAnalytics.setUserId(String? id): Future<void> β†’ method FirebaseAnalytics.setUserId({ String? id, AnalyticsCallOptions? callOptions, }): Future<void>
  • changed: method FirebaseAnalytics.setUserProperty( {required String name, required String? value}): Future<void> β†’ method FirebaseAnalytics.setUserProperty({ required String name, required String? value, AnalyticsCallOptions? callOptions, }): Future<void>
  • added: class FirebaseAnalyticsObserver extends RouteObserver<ModalRoute<dynamic>>
  • added: ctor FirebaseAnalytics.instanceFor({required FirebaseApp app})
  • added: ctor FirebaseAnalyticsObserver({ required this.analytics, this.nameExtractor = …, this.routeFilter = …, Function(PlatformException error)? onError, })
  • added: field FirebaseAnalytics.app: FirebaseApp
  • added: field FirebaseAnalyticsObserver.analytics: final FirebaseAnalytics
  • added: field FirebaseAnalyticsObserver.nameExtractor: final ScreenNameExtractor
  • added: field FirebaseAnalyticsObserver.routeFilter: final RouteFilter
  • added: function defaultNameExtractor(RouteSettings settings): String?
  • added: function defaultRouteFilter(Route<dynamic>? route): bool
  • added: get FirebaseAnalytics.appInstanceId: Future<String?>
  • added: method FirebaseAnalytics.isSupported(): Future<bool>
  • added: method FirebaseAnalytics.logAdImpression({ String? adPlatform, String? adSource, String? adFormat, String? adUnitName, double? value, String? currency, AnalyticsCallOptions? callOptions, }): Future<void>
  • added: method FirebaseAnalytics.logAddShippingInfo({ String? coupon, String? currency, double? value, String? shippingTier, List<AnalyticsEventItem>? items, AnalyticsCallOptions? callOptions, }): Future<void>
  • added: method FirebaseAnalytics.logPurchase({ String? currency, String? coupon, double? value, List<AnalyticsEventItem>? items, double? tax, double? shipping, String? transactionId, String? affiliation, AnalyticsCallOptions? callOptions, }): Future<void>
  • added: method FirebaseAnalytics.logRefund({ String? currency, String? coupon, double? value, double? tax, double? shipping, String? transactionId, String? affiliation, List<AnalyticsEventItem>? items, }): Future<void>
  • added: method FirebaseAnalytics.logScreenView({ String? screenClass, String? screenName, AnalyticsCallOptions? callOptions, }): Future<void>
  • added: method FirebaseAnalytics.logSelectItem({ String? itemListId, String? itemListName, List<AnalyticsEventItem>? items, AnalyticsCallOptions? callOptions, }): Future<void>
  • added: method FirebaseAnalytics.logSelectPromotion({ String? creativeName, String? creativeSlot, List<AnalyticsEventItem>? items, String? locationId, String? promotionId, String? promotionName, AnalyticsCallOptions? callOptions, }): Future<void>
  • added: method FirebaseAnalytics.logViewCart({ String? currency, double? value, List<AnalyticsEventItem>? items, AnalyticsCallOptions? callOptions, }): Future<void>
  • added: method FirebaseAnalytics.logViewPromotion({ String? creativeName, String? creativeSlot, List<AnalyticsEventItem>? items, String? locationId, String? promotionId, String? promotionName, }): Future<void>
  • added: method FirebaseAnalytics.setConsent({ bool? adStorageConsentGranted, bool? analyticsStorageConsentGranted, }): Future<void>
  • added: method FirebaseAnalytics.setDefaultEventParameters( Map<String, Object?>? defaultParameters, ): Future<void>
  • added: method FirebaseAnalytics.setSessionTimeoutDuration(Duration timeout): Future<void>
  • added: method FirebaseAnalyticsObserver.Function(PlatformException error): void
  • added: method FirebaseAnalyticsObserver.didPop(Route<dynamic> route, Route<dynamic>? previousRoute): void
  • added: method FirebaseAnalyticsObserver.didPush(Route<dynamic> route, Route<dynamic>? previousRoute): void
  • added: method FirebaseAnalyticsObserver.didReplace({Route<dynamic>? newRoute, Route<dynamic>? oldRoute}): void
  • added: static get FirebaseAnalytics.instance: FirebaseAnalytics
  • added: typedef RouteFilter = bool Function(Route<dynamic>? route)
  • added: typedef ScreenNameExtractor = String? Function(RouteSettings settings)
  • changed: class FirebaseAnalyticsObserver extends RouteObserver<PageRoute<dynamic>> β†’ class FirebaseAnalyticsObserver extends RouteObserver<ModalRoute<dynamic>>
  • changed: ctor FirebaseAnalyticsObserver({ required this.analytics, this.nameExtractor = …, Function(PlatformException error)? onError, }) β†’ ctor FirebaseAnalyticsObserver({ required this.analytics, this.nameExtractor = …, this.routeFilter = …, Function(PlatformException error)? onError, })
  • added: field FirebaseAnalyticsObserver.routeFilter: final RouteFilter
  • added: function defaultRouteFilter(Route<dynamic>? route): bool
  • added: typedef RouteFilter = bool Function(Route<dynamic>? route)