From 62fdcb031945c23dacb481bd464cbea8ec9037d4 Mon Sep 17 00:00:00 2001 From: Jenn Magder Date: Mon, 3 Feb 2020 16:42:47 -0800 Subject: [PATCH] Revert "Fix custom Elements that wants to decorate State.build (#49925)" (#50068) This reverts commit a1143d174f0e97b1fb831bcf87f438d07f2351d7. --- .../flutter/lib/src/widgets/framework.dart | 17 ++--- .../flutter/test/widgets/framework_test.dart | 74 ------------------- 2 files changed, 7 insertions(+), 84 deletions(-) diff --git a/packages/flutter/lib/src/widgets/framework.dart b/packages/flutter/lib/src/widgets/framework.dart index b59e1c5aa3f..2b697db9cfc 100644 --- a/packages/flutter/lib/src/widgets/framework.dart +++ b/packages/flutter/lib/src/widgets/framework.dart @@ -4586,7 +4586,13 @@ class StatefulElement extends ComponentElement { } @override - Widget build() => _state.build(this); + Widget build() { + if (_didChangeDependencies) { + _state.didChangeDependencies(); + _didChangeDependencies = false; + } + return state.build(this); + } /// The [State] instance associated with this location in the tree. /// @@ -4636,15 +4642,6 @@ class StatefulElement extends ComponentElement { super._firstBuild(); } - @override - void performRebuild() { - if (_didChangeDependencies) { - _state.didChangeDependencies(); - _didChangeDependencies = false; - } - super.performRebuild(); - } - @override void update(StatefulWidget newWidget) { super.update(newWidget); diff --git a/packages/flutter/test/widgets/framework_test.dart b/packages/flutter/test/widgets/framework_test.dart index b2f3bb206bd..1a5fba15c8c 100644 --- a/packages/flutter/test/widgets/framework_test.dart +++ b/packages/flutter/test/widgets/framework_test.dart @@ -1259,80 +1259,6 @@ void main() { expect(state.didChangeDependenciesCount, 3); expect(state.deactivatedCount, 2); }); - - testWidgets('StatefulElement subclass can decorate State.build', (WidgetTester tester) async { - bool isDidChangeDependenciesDecorated; - bool isBuildDecorated; - - final Widget child = Decorate( - didChangeDependencies: (bool value) { - isDidChangeDependenciesDecorated = value; - }, - build: (bool value) { - isBuildDecorated = value; - } - ); - - await tester.pumpWidget(Inherited(0, child: child)); - - expect(isBuildDecorated, isTrue); - expect(isDidChangeDependenciesDecorated, isFalse); - - await tester.pumpWidget(Inherited(1, child: child)); - - expect(isBuildDecorated, isTrue); - expect(isDidChangeDependenciesDecorated, isFalse); - }); -} - -class Decorate extends StatefulWidget { - const Decorate({ - Key key, - @required this.didChangeDependencies, - @required this.build - }) : - assert(didChangeDependencies != null), - assert(build != null), - super(key: key); - - final void Function(bool isInBuild) didChangeDependencies; - final void Function(bool isInBuild) build; - - @override - _DecorateState createState() => _DecorateState(); - - @override - DecorateElement createElement() => DecorateElement(this); -} - -class DecorateElement extends StatefulElement { - DecorateElement(Decorate widget): super(widget); - - bool isDecorated = false; - - @override - Widget build() { - try { - isDecorated = true; - return super.build(); - } finally { - isDecorated = false; - } - } -} - -class _DecorateState extends State { - @override - void didChangeDependencies() { - super.didChangeDependencies(); - widget.didChangeDependencies.call((context as DecorateElement).isDecorated); - } - @override - Widget build(covariant DecorateElement context) { - context.dependOnInheritedWidgetOfExactType(); - widget.build.call(context.isDecorated); - return Container(); - } } class NullChildTest extends Widget {