Commit 4d2b3f00 authored by Adam Barth's avatar Adam Barth

Merge pull request #2610 from abarth/update_context

Provide the BuildContext to createRenderObject and updateRenderObject
parents 5ebe61a1 0277b075
...@@ -37,7 +37,7 @@ class RenderDots extends RenderConstrainedBox { ...@@ -37,7 +37,7 @@ class RenderDots extends RenderConstrainedBox {
class Dots extends OneChildRenderObjectWidget { class Dots extends OneChildRenderObjectWidget {
Dots({ Key key, Widget child }) : super(key: key, child: child); Dots({ Key key, Widget child }) : super(key: key, child: child);
RenderDots createRenderObject() => new RenderDots(); RenderDots createRenderObject(BuildContext context) => new RenderDots();
} }
void main() { void main() {
......
...@@ -67,14 +67,14 @@ class _CheckboxRenderObjectWidget extends LeafRenderObjectWidget { ...@@ -67,14 +67,14 @@ class _CheckboxRenderObjectWidget extends LeafRenderObjectWidget {
final Color inactiveColor; final Color inactiveColor;
final ValueChanged<bool> onChanged; final ValueChanged<bool> onChanged;
_RenderCheckbox createRenderObject() => new _RenderCheckbox( _RenderCheckbox createRenderObject(BuildContext context) => new _RenderCheckbox(
value: value, value: value,
activeColor: activeColor, activeColor: activeColor,
inactiveColor: inactiveColor, inactiveColor: inactiveColor,
onChanged: onChanged onChanged: onChanged
); );
void updateRenderObject(_RenderCheckbox renderObject, _CheckboxRenderObjectWidget oldWidget) { void updateRenderObject(BuildContext context, _RenderCheckbox renderObject) {
renderObject renderObject
..value = value ..value = value
..activeColor = activeColor ..activeColor = activeColor
......
...@@ -279,9 +279,9 @@ class InkFeatures extends OneChildRenderObjectWidget { ...@@ -279,9 +279,9 @@ class InkFeatures extends OneChildRenderObjectWidget {
final Color color; final Color color;
RenderInkFeatures createRenderObject() => new RenderInkFeatures(color: color); RenderInkFeatures createRenderObject(BuildContext context) => new RenderInkFeatures(color: color);
void updateRenderObject(RenderInkFeatures renderObject, InkFeatures oldWidget) { void updateRenderObject(BuildContext context, RenderInkFeatures renderObject) {
renderObject.color = color; renderObject.color = color;
} }
} }
......
...@@ -72,14 +72,14 @@ class _RadioRenderObjectWidget extends LeafRenderObjectWidget { ...@@ -72,14 +72,14 @@ class _RadioRenderObjectWidget extends LeafRenderObjectWidget {
final Color activeColor; final Color activeColor;
final ValueChanged<bool> onChanged; final ValueChanged<bool> onChanged;
_RenderRadio createRenderObject() => new _RenderRadio( _RenderRadio createRenderObject(BuildContext context) => new _RenderRadio(
value: selected, value: selected,
activeColor: activeColor, activeColor: activeColor,
inactiveColor: inactiveColor, inactiveColor: inactiveColor,
onChanged: onChanged onChanged: onChanged
); );
void updateRenderObject(_RenderRadio renderObject, _RadioRenderObjectWidget oldWidget) { void updateRenderObject(BuildContext context, _RenderRadio renderObject) {
renderObject renderObject
..value = selected ..value = selected
..activeColor = activeColor ..activeColor = activeColor
......
...@@ -55,13 +55,13 @@ class _SliderRenderObjectWidget extends LeafRenderObjectWidget { ...@@ -55,13 +55,13 @@ class _SliderRenderObjectWidget extends LeafRenderObjectWidget {
final Color activeColor; final Color activeColor;
final ValueChanged<double> onChanged; final ValueChanged<double> onChanged;
_RenderSlider createRenderObject() => new _RenderSlider( _RenderSlider createRenderObject(BuildContext context) => new _RenderSlider(
value: value, value: value,
activeColor: activeColor, activeColor: activeColor,
onChanged: onChanged onChanged: onChanged
); );
void updateRenderObject(_RenderSlider renderObject, _SliderRenderObjectWidget oldWidget) { void updateRenderObject(BuildContext context, _RenderSlider renderObject) {
renderObject renderObject
..value = value ..value = value
..activeColor = activeColor ..activeColor = activeColor
......
...@@ -68,7 +68,7 @@ class _SwitchRenderObjectWidget extends LeafRenderObjectWidget { ...@@ -68,7 +68,7 @@ class _SwitchRenderObjectWidget extends LeafRenderObjectWidget {
final Color inactiveTrackColor; final Color inactiveTrackColor;
final ValueChanged<bool> onChanged; final ValueChanged<bool> onChanged;
_RenderSwitch createRenderObject() => new _RenderSwitch( _RenderSwitch createRenderObject(BuildContext context) => new _RenderSwitch(
value: value, value: value,
activeColor: activeColor, activeColor: activeColor,
inactiveColor: inactiveColor, inactiveColor: inactiveColor,
...@@ -77,7 +77,7 @@ class _SwitchRenderObjectWidget extends LeafRenderObjectWidget { ...@@ -77,7 +77,7 @@ class _SwitchRenderObjectWidget extends LeafRenderObjectWidget {
onChanged: onChanged onChanged: onChanged
); );
void updateRenderObject(_RenderSwitch renderObject, _SwitchRenderObjectWidget oldWidget) { void updateRenderObject(BuildContext context, _RenderSwitch renderObject) {
renderObject renderObject
..value = value ..value = value
..activeColor = activeColor ..activeColor = activeColor
......
...@@ -265,13 +265,13 @@ class _TabBarWrapper extends MultiChildRenderObjectWidget { ...@@ -265,13 +265,13 @@ class _TabBarWrapper extends MultiChildRenderObjectWidget {
final bool isScrollable; final bool isScrollable;
final TabLayoutChanged onLayoutChanged; final TabLayoutChanged onLayoutChanged;
_RenderTabBar createRenderObject() { _RenderTabBar createRenderObject(BuildContext context) {
_RenderTabBar result = new _RenderTabBar(onLayoutChanged); _RenderTabBar result = new _RenderTabBar(onLayoutChanged);
updateRenderObject(result, null); updateRenderObject(context, result);
return result; return result;
} }
void updateRenderObject(_RenderTabBar renderObject, _TabBarWrapper oldWidget) { void updateRenderObject(BuildContext context, _RenderTabBar renderObject) {
renderObject renderObject
..selectedIndex = selectedIndex ..selectedIndex = selectedIndex
..indicatorColor = indicatorColor ..indicatorColor = indicatorColor
......
...@@ -19,9 +19,9 @@ class AutoLayout extends MultiChildRenderObjectWidget { ...@@ -19,9 +19,9 @@ class AutoLayout extends MultiChildRenderObjectWidget {
final AutoLayoutDelegate delegate; final AutoLayoutDelegate delegate;
RenderAutoLayout createRenderObject() => new RenderAutoLayout(delegate: delegate); RenderAutoLayout createRenderObject(BuildContext context) => new RenderAutoLayout(delegate: delegate);
void updateRenderObject(RenderAutoLayout renderObject, AutoLayout oldWidget) { void updateRenderObject(BuildContext context, RenderAutoLayout renderObject) {
renderObject.delegate = delegate; renderObject.delegate = delegate;
} }
} }
......
This diff is collapsed.
...@@ -192,9 +192,9 @@ class RenderObjectToWidgetAdapter<T extends RenderObject> extends RenderObjectWi ...@@ -192,9 +192,9 @@ class RenderObjectToWidgetAdapter<T extends RenderObject> extends RenderObjectWi
RenderObjectToWidgetElement<T> createElement() => new RenderObjectToWidgetElement<T>(this); RenderObjectToWidgetElement<T> createElement() => new RenderObjectToWidgetElement<T>(this);
RenderObjectWithChildMixin<T> createRenderObject() => container; RenderObjectWithChildMixin<T> createRenderObject(BuildContext context) => container;
void updateRenderObject(RenderObject renderObject, RenderObjectWidget oldWidget) { } void updateRenderObject(BuildContext context, RenderObject renderObject) { }
RenderObjectToWidgetElement<T> attachToRenderTree([RenderObjectToWidgetElement<T> element]) { RenderObjectToWidgetElement<T> attachToRenderTree([RenderObjectToWidgetElement<T> element]) {
BuildableElement.lockState(() { BuildableElement.lockState(() {
......
...@@ -32,9 +32,9 @@ class _ChildViewWidget extends LeafRenderObjectWidget { ...@@ -32,9 +32,9 @@ class _ChildViewWidget extends LeafRenderObjectWidget {
final ChildViewConnection child; final ChildViewConnection child;
final double scale; final double scale;
RenderChildView createRenderObject() => new RenderChildView(child: child, scale: scale); RenderChildView createRenderObject(BuildContext context) => new RenderChildView(child: child, scale: scale);
void updateRenderObject(RenderChildView renderObject, _ChildViewWidget oldWidget) { void updateRenderObject(BuildContext context, RenderChildView renderObject) {
renderObject renderObject
..child = child ..child = child
..scale = scale; ..scale = scale;
......
...@@ -365,7 +365,7 @@ class _EditableLineWidget extends LeafRenderObjectWidget { ...@@ -365,7 +365,7 @@ class _EditableLineWidget extends LeafRenderObjectWidget {
final Offset paintOffset; final Offset paintOffset;
final ViewportDimensionsChangeCallback onPaintOffsetUpdateNeeded; final ViewportDimensionsChangeCallback onPaintOffsetUpdateNeeded;
RenderEditableLine createRenderObject() { RenderEditableLine createRenderObject(BuildContext context) {
return new RenderEditableLine( return new RenderEditableLine(
text: _styledTextSpan, text: _styledTextSpan,
cursorColor: cursorColor, cursorColor: cursorColor,
...@@ -378,8 +378,7 @@ class _EditableLineWidget extends LeafRenderObjectWidget { ...@@ -378,8 +378,7 @@ class _EditableLineWidget extends LeafRenderObjectWidget {
); );
} }
void updateRenderObject(RenderEditableLine renderObject, void updateRenderObject(BuildContext context, RenderEditableLine renderObject) {
_EditableLineWidget oldWidget) {
renderObject renderObject
..text = _styledTextSpan ..text = _styledTextSpan
..cursorColor = cursorColor ..cursorColor = cursorColor
......
...@@ -485,12 +485,12 @@ abstract class RenderObjectWidget extends Widget { ...@@ -485,12 +485,12 @@ abstract class RenderObjectWidget extends Widget {
/// Constructs an instance of the RenderObject class that this /// Constructs an instance of the RenderObject class that this
/// RenderObjectWidget represents, using the configuration described by this /// RenderObjectWidget represents, using the configuration described by this
/// RenderObjectWidget. /// RenderObjectWidget.
RenderObject createRenderObject(); RenderObject createRenderObject(BuildContext context);
/// Copies the configuration described by this RenderObjectWidget to the given /// Copies the configuration described by this RenderObjectWidget to the given
/// RenderObject, which must be of the same type as returned by this class' /// RenderObject, which must be of the same type as returned by this class'
/// createRenderObject(). /// createRenderObject(BuildContext context).
void updateRenderObject(RenderObject renderObject, RenderObjectWidget oldWidget) { } void updateRenderObject(BuildContext context, RenderObject renderObject) { }
void didUnmountRenderObject(RenderObject renderObject) { } void didUnmountRenderObject(RenderObject renderObject) { }
} }
...@@ -1033,7 +1033,7 @@ class ErrorWidget extends LeafRenderObjectWidget { ...@@ -1033,7 +1033,7 @@ class ErrorWidget extends LeafRenderObjectWidget {
} catch (e) { } } catch (e) { }
return 'Error'; return 'Error';
} }
RenderBox createRenderObject() => new RenderErrorBox(message); RenderBox createRenderObject(BuildContext context) => new RenderErrorBox(message);
} }
typedef void BuildScheduler(BuildableElement element); typedef void BuildScheduler(BuildableElement element);
...@@ -1509,7 +1509,7 @@ abstract class RenderObjectElement<T extends RenderObjectWidget> extends Buildab ...@@ -1509,7 +1509,7 @@ abstract class RenderObjectElement<T extends RenderObjectWidget> extends Buildab
void mount(Element parent, dynamic newSlot) { void mount(Element parent, dynamic newSlot) {
super.mount(parent, newSlot); super.mount(parent, newSlot);
_renderObject = widget.createRenderObject(); _renderObject = widget.createRenderObject(this);
assert(() { debugUpdateRenderObjectOwner(); return true; }); assert(() { debugUpdateRenderObjectOwner(); return true; });
assert(_slot == newSlot); assert(_slot == newSlot);
attachRenderObject(newSlot); attachRenderObject(newSlot);
...@@ -1517,11 +1517,10 @@ abstract class RenderObjectElement<T extends RenderObjectWidget> extends Buildab ...@@ -1517,11 +1517,10 @@ abstract class RenderObjectElement<T extends RenderObjectWidget> extends Buildab
} }
void update(T newWidget) { void update(T newWidget) {
T oldWidget = widget;
super.update(newWidget); super.update(newWidget);
assert(widget == newWidget); assert(widget == newWidget);
assert(() { debugUpdateRenderObjectOwner(); return true; }); assert(() { debugUpdateRenderObjectOwner(); return true; });
widget.updateRenderObject(renderObject, oldWidget); widget.updateRenderObject(this, renderObject);
_dirty = false; _dirty = false;
} }
......
...@@ -303,7 +303,7 @@ class RawGestureDetectorState extends State<RawGestureDetector> { ...@@ -303,7 +303,7 @@ class RawGestureDetectorState extends State<RawGestureDetector> {
if (!config.excludeFromSemantics) { if (!config.excludeFromSemantics) {
RenderSemanticsGestureHandler semanticsGestureHandler = context.findRenderObject(); RenderSemanticsGestureHandler semanticsGestureHandler = context.findRenderObject();
context.visitChildElements((RenderObjectElement element) { context.visitChildElements((RenderObjectElement element) {
element.widget.updateRenderObject(semanticsGestureHandler, null); element.widget.updateRenderObject(context, semanticsGestureHandler);
}); });
} }
} }
...@@ -458,13 +458,13 @@ class _GestureSemantics extends OneChildRenderObjectWidget { ...@@ -458,13 +458,13 @@ class _GestureSemantics extends OneChildRenderObjectWidget {
assert(false); assert(false);
} }
RenderSemanticsGestureHandler createRenderObject() { RenderSemanticsGestureHandler createRenderObject(BuildContext context) {
RenderSemanticsGestureHandler result = new RenderSemanticsGestureHandler(); RenderSemanticsGestureHandler result = new RenderSemanticsGestureHandler();
updateRenderObject(result, null); updateRenderObject(context, result);
return result; return result;
} }
void updateRenderObject(RenderSemanticsGestureHandler renderObject, _GestureSemantics oldWidget) { void updateRenderObject(BuildContext context, RenderSemanticsGestureHandler renderObject) {
Map<Type, GestureRecognizer> recognizers = owner._recognizers; Map<Type, GestureRecognizer> recognizers = owner._recognizers;
renderObject renderObject
..onTap = recognizers.containsKey(TapGestureRecognizer) ? _handleTap : null ..onTap = recognizers.containsKey(TapGestureRecognizer) ? _handleTap : null
......
...@@ -37,7 +37,7 @@ class MixedViewport extends RenderObjectWidget { ...@@ -37,7 +37,7 @@ class MixedViewport extends RenderObjectWidget {
// we don't pass constructor arguments to the RenderBlockViewport() because until // we don't pass constructor arguments to the RenderBlockViewport() because until
// we know our children, the constructor arguments we could give have no effect // we know our children, the constructor arguments we could give have no effect
RenderBlockViewport createRenderObject() => new RenderBlockViewport(); RenderBlockViewport createRenderObject(BuildContext context) => new RenderBlockViewport();
_ChangeDescription evaluateChangesFrom(MixedViewport oldWidget) { _ChangeDescription evaluateChangesFrom(MixedViewport oldWidget) {
if (direction != oldWidget.direction || if (direction != oldWidget.direction ||
......
...@@ -242,7 +242,7 @@ class PageViewport extends VirtualViewportFromIterable { ...@@ -242,7 +242,7 @@ class PageViewport extends VirtualViewportFromIterable {
final Painter overlayPainter; final Painter overlayPainter;
final Iterable<Widget> children; final Iterable<Widget> children;
RenderList createRenderObject() => new RenderList(); RenderList createRenderObject(BuildContext context) => new RenderList();
_PageViewportElement createElement() => new _PageViewportElement(this); _PageViewportElement createElement() => new _PageViewportElement(this);
} }
......
...@@ -56,12 +56,12 @@ class PerformanceOverlay extends LeafRenderObjectWidget { ...@@ -56,12 +56,12 @@ class PerformanceOverlay extends LeafRenderObjectWidget {
/// how many frame intervals). /// how many frame intervals).
final int rasterizerThreshold; final int rasterizerThreshold;
RenderPerformanceOverlay createRenderObject() => new RenderPerformanceOverlay( RenderPerformanceOverlay createRenderObject(BuildContext context) => new RenderPerformanceOverlay(
optionsMask: optionsMask, optionsMask: optionsMask,
rasterizerThreshold: rasterizerThreshold rasterizerThreshold: rasterizerThreshold
); );
void updateRenderObject(RenderPerformanceOverlay renderObject, RenderObjectWidget oldWidget) { void updateRenderObject(BuildContext context, RenderPerformanceOverlay renderObject) {
renderObject renderObject
..optionsMask = optionsMask ..optionsMask = optionsMask
..rasterizerThreshold = rasterizerThreshold; ..rasterizerThreshold = rasterizerThreshold;
......
...@@ -80,7 +80,7 @@ class GridViewport extends VirtualViewportFromIterable { ...@@ -80,7 +80,7 @@ class GridViewport extends VirtualViewportFromIterable {
// TODO(abarth): Support horizontal scrolling; // TODO(abarth): Support horizontal scrolling;
Axis get scrollDirection => Axis.vertical; Axis get scrollDirection => Axis.vertical;
RenderGrid createRenderObject() => new RenderGrid(delegate: delegate); RenderGrid createRenderObject(BuildContext context) => new RenderGrid(delegate: delegate);
_GridViewportElement createElement() => new _GridViewportElement(this); _GridViewportElement createElement() => new _GridViewportElement(this);
} }
......
...@@ -140,7 +140,7 @@ class _VirtualListViewport extends VirtualViewport { ...@@ -140,7 +140,7 @@ class _VirtualListViewport extends VirtualViewport {
return scrollOffset - _leadingPadding; return scrollOffset - _leadingPadding;
} }
RenderList createRenderObject() => new RenderList(itemExtent: itemExtent); RenderList createRenderObject(BuildContext context) => new RenderList(itemExtent: itemExtent);
_VirtualListViewportElement createElement() => new _VirtualListViewportElement(this); _VirtualListViewportElement createElement() => new _VirtualListViewportElement(this);
} }
......
...@@ -24,9 +24,9 @@ class SpriteWidget extends OneChildRenderObjectWidget { ...@@ -24,9 +24,9 @@ class SpriteWidget extends OneChildRenderObjectWidget {
/// var mySpriteWidget = new SpriteWidget(mySpriteTree, SpriteBoxTransformMode.fixedHeight); /// var mySpriteWidget = new SpriteWidget(mySpriteTree, SpriteBoxTransformMode.fixedHeight);
SpriteWidget(this.rootNode, [this.transformMode = SpriteBoxTransformMode.letterbox]); SpriteWidget(this.rootNode, [this.transformMode = SpriteBoxTransformMode.letterbox]);
SpriteBox createRenderObject() => new SpriteBox(rootNode, transformMode); SpriteBox createRenderObject(BuildContext context) => new SpriteBox(rootNode, transformMode);
void updateRenderObject(SpriteBox renderObject, SpriteWidget oldWidget) { void updateRenderObject(BuildContext context, SpriteBox renderObject) {
renderObject renderObject
..rootNode = rootNode ..rootNode = rootNode
..transformMode = transformMode; ..transformMode = transformMode;
......
...@@ -57,9 +57,9 @@ class _ChartWrapper extends LeafRenderObjectWidget { ...@@ -57,9 +57,9 @@ class _ChartWrapper extends LeafRenderObjectWidget {
final TextTheme textTheme; final TextTheme textTheme;
final ChartData data; final ChartData data;
_RenderChart createRenderObject() => new _RenderChart(textTheme: textTheme, data: data); _RenderChart createRenderObject(BuildContext context) => new _RenderChart(textTheme: textTheme, data: data);
void updateRenderObject(_RenderChart renderObject, _ChartWrapper oldWidget) { void updateRenderObject(BuildContext context, _RenderChart renderObject) {
renderObject renderObject
..textTheme = textTheme ..textTheme = textTheme
..data = data; ..data = data;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment