diff --git a/packages/flutter/lib/src/animation/animations.dart b/packages/flutter/lib/src/animation/animations.dart index 944c1067bbe..e2526d2f2e6 100644 --- a/packages/flutter/lib/src/animation/animations.dart +++ b/packages/flutter/lib/src/animation/animations.dart @@ -379,15 +379,9 @@ class ReverseAnimation extends Animation class CurvedAnimation extends Animation with AnimationWithParentMixin { /// Creates a curved animation. CurvedAnimation({required this.parent, required this.curve, this.reverseCurve}) { - // TODO(polina-c): stop duplicating code across disposables - // https://github.com/flutter/flutter/issues/137435 - if (kFlutterMemoryAllocationsEnabled) { - FlutterMemoryAllocations.instance.dispatchObjectCreated( - library: 'package:flutter/animation.dart', - className: '$CurvedAnimation', - object: this, - ); - } + assert( + debugMaybeDispatchObjectCreated('package:flutter/animation.dart', 'CurvedAnimation', this), + ); _updateCurveDirection(parent.status); parent.addStatusListener(_updateCurveDirection); } @@ -434,11 +428,7 @@ class CurvedAnimation extends Animation with AnimationWithParentMixin.filled(1, 0); + + void listener(ObjectEvent event) { + expect(dispatchedEvent, null); + dispatchedEvent = event; + } + + setUp(() { + dispatchedEvent = null; + FlutterMemoryAllocations.instance.addListener(listener); + }); + + tearDown(() { + FlutterMemoryAllocations.instance.removeListener(listener); + }); + + test('debugMaybeDispatchObjectCreated', () async { + debugMaybeDispatchObjectCreated('library', 'class', object); + + if (kFlutterMemoryAllocationsEnabled) { + final ObjectEvent? theEvent = dispatchedEvent; + + if (theEvent is! ObjectCreated) { + fail('Expected ObjectCreated event'); + } + + expect(theEvent.object, object); + expect(theEvent.library, 'library'); + expect(theEvent.className, 'class'); + } else { + expect(dispatchedEvent, isNull); + } + }); + + test('debugMaybeDispatchObjectDisposed', () async { + debugMaybeDispatchObjectDisposed(object); + + if (kFlutterMemoryAllocationsEnabled) { + final ObjectEvent? theEvent = dispatchedEvent; + + if (theEvent is! ObjectDisposed) { + fail('Expected ObjectDisposed event'); + } + + expect(theEvent.object, object); + } else { + expect(dispatchedEvent, isNull); + } + }); + }); }