Fixes in flutter framework code to address the mixin issue raised in https://github.com/dart-lang/sdk/issues/31984
diff --git a/packages/flutter/lib/src/rendering/proxy_box.dart b/packages/flutter/lib/src/rendering/proxy_box.dart index 67f68d3..3b80195 100644 --- a/packages/flutter/lib/src/rendering/proxy_box.dart +++ b/packages/flutter/lib/src/rendering/proxy_box.dart
@@ -52,7 +52,7 @@ /// of [RenderProxyBox] is desired but inheriting from [RenderProxyBox] is /// impractical (e.g. because you want to mix in other classes as well). // TODO(ianh): Remove this class once https://github.com/dart-lang/sdk/issues/15101 is fixed -abstract class RenderProxyBoxMixin extends RenderBox with RenderObjectWithChildMixin<RenderBox> { +abstract class RenderProxyBoxMixin<T extends RenderBox> extends RenderBox with RenderObjectWithChildMixin<T> { // This class is intended to be used as a mixin, and should not be // extended directly. factory RenderProxyBoxMixin._() => null;
diff --git a/packages/flutter/lib/src/widgets/automatic_keep_alive.dart b/packages/flutter/lib/src/widgets/automatic_keep_alive.dart index 3f04dc2..ad264d8 100644 --- a/packages/flutter/lib/src/widgets/automatic_keep_alive.dart +++ b/packages/flutter/lib/src/widgets/automatic_keep_alive.dart
@@ -299,7 +299,7 @@ /// /// * [AutomaticKeepAlive], which listens to messages from this mixin. /// * [KeepAliveNotification], the notifications sent by this mixin. -abstract class AutomaticKeepAliveClientMixin extends State<StatefulWidget> { +abstract class AutomaticKeepAliveClientMixin<T extends StatefulWidget> extends State<T> { // This class is intended to be used as a mixin, and should not be // extended directly. factory AutomaticKeepAliveClientMixin._() => null; @@ -358,4 +358,4 @@ _ensureKeepAlive(); return null; } -} \ No newline at end of file +}
diff --git a/packages/flutter/lib/src/widgets/ticker_provider.dart b/packages/flutter/lib/src/widgets/ticker_provider.dart index 4bb2e93..5449e8f 100644 --- a/packages/flutter/lib/src/widgets/ticker_provider.dart +++ b/packages/flutter/lib/src/widgets/ticker_provider.dart
@@ -73,7 +73,7 @@ /// This mixin only supports vending a single ticker. If you might have multiple /// [AnimationController] objects over the lifetime of the [State], use a full /// [TickerProviderStateMixin] instead. -abstract class SingleTickerProviderStateMixin extends State<dynamic> implements TickerProvider { // ignore: TYPE_ARGUMENT_NOT_MATCHING_BOUNDS, https://github.com/dart-lang/sdk/issues/25232 +abstract class SingleTickerProviderStateMixin<T extends StatefulWidget> extends State<T> implements TickerProvider { // ignore: TYPE_ARGUMENT_NOT_MATCHING_BOUNDS, https://github.com/dart-lang/sdk/issues/25232 // This class is intended to be used as a mixin, and should not be // extended directly. factory SingleTickerProviderStateMixin._() => null; @@ -155,7 +155,7 @@ /// If you only have a single [Ticker] (for example only a single /// [AnimationController]) for the lifetime of your [State], then using a /// [SingleTickerProviderStateMixin] is more efficient. This is the common case. -abstract class TickerProviderStateMixin extends State<dynamic> implements TickerProvider { // ignore: TYPE_ARGUMENT_NOT_MATCHING_BOUNDS, https://github.com/dart-lang/sdk/issues/25232 +abstract class TickerProviderStateMixin<T extends StatefulWidget> extends State<T> implements TickerProvider { // ignore: TYPE_ARGUMENT_NOT_MATCHING_BOUNDS, https://github.com/dart-lang/sdk/issues/25232 // This class is intended to be used as a mixin, and should not be // extended directly. factory TickerProviderStateMixin._() => null; @@ -231,7 +231,7 @@ class _WidgetTicker extends Ticker { _WidgetTicker(TickerCallback onTick, this._creator, { String debugLabel }) : super(onTick, debugLabel: debugLabel); - final TickerProviderStateMixin _creator; + final TickerProviderStateMixin<StatefulWidget> _creator; @override void dispose() {