Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
F
Front-End
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
abdullh.alsoleman
Front-End
Commits
b3ebd440
Commit
b3ebd440
authored
Sep 23, 2015
by
Hixie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Expose _descendantRenderObject as 'renderer'
This allows people to use localToGlobal and company.
parent
4bc4c978
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
63 additions
and
14 deletions
+63
-14
framework.dart
packages/flutter/lib/src/fn3/framework.dart
+7
-6
coordinates_test.dart
packages/unit/test/fn3/coordinates_test.dart
+46
-0
widget_tester.dart
packages/unit/test/fn3/widget_tester.dart
+10
-8
No files found.
packages/flutter/lib/src/fn3/framework.dart
View file @
b3ebd440
...
@@ -425,10 +425,10 @@ abstract class Element<T extends Widget> implements BuildContext {
...
@@ -425,10 +425,10 @@ abstract class Element<T extends Widget> implements BuildContext {
T
get
widget
=>
_widget
;
T
get
widget
=>
_widget
;
T
_widget
;
T
_widget
;
RenderObject
get
_descendantR
enderObject
{
RenderObject
get
r
enderObject
{
RenderObject
result
;
RenderObject
result
;
void
visit
(
Element
element
)
{
void
visit
(
Element
element
)
{
assert
(
result
==
null
);
assert
(
result
==
null
);
// this verifies that there's only one child
if
(
element
is
RenderObjectElement
)
if
(
element
is
RenderObjectElement
)
result
=
element
.
renderObject
;
result
=
element
.
renderObject
;
else
else
...
@@ -800,10 +800,11 @@ class InheritedElement extends StatelessComponentElement<InheritedWidget> {
...
@@ -800,10 +800,11 @@ class InheritedElement extends StatelessComponentElement<InheritedWidget> {
/// Base class for instantiations of RenderObjectWidget subclasses
/// Base class for instantiations of RenderObjectWidget subclasses
abstract
class
RenderObjectElement
<
T
extends
RenderObjectWidget
>
extends
Element
<
T
>
{
abstract
class
RenderObjectElement
<
T
extends
RenderObjectWidget
>
extends
Element
<
T
>
{
RenderObjectElement
(
T
widget
)
RenderObjectElement
(
T
widget
)
:
renderObject
=
widget
.
createRenderObject
(),
super
(
widget
);
:
_
renderObject
=
widget
.
createRenderObject
(),
super
(
widget
);
/// The underlying [RenderObject] for this element
/// The underlying [RenderObject] for this element
final
RenderObject
renderObject
;
RenderObject
get
renderObject
=>
_renderObject
;
final
RenderObject
_renderObject
;
RenderObjectElement
_ancestorRenderObjectElement
;
RenderObjectElement
_ancestorRenderObjectElement
;
RenderObjectElement
_findAncestorRenderObjectElement
()
{
RenderObjectElement
_findAncestorRenderObjectElement
()
{
...
@@ -938,7 +939,7 @@ class MultiChildRenderObjectElement<T extends MultiChildRenderObjectWidget> exte
...
@@ -938,7 +939,7 @@ class MultiChildRenderObjectElement<T extends MultiChildRenderObjectWidget> exte
void
insertChildRenderObject
(
RenderObject
child
,
Element
slot
)
{
void
insertChildRenderObject
(
RenderObject
child
,
Element
slot
)
{
final
renderObject
=
this
.
renderObject
;
// TODO(ianh): Remove this once the analyzer is cleverer
final
renderObject
=
this
.
renderObject
;
// TODO(ianh): Remove this once the analyzer is cleverer
RenderObject
nextSibling
=
slot
?.
_descendantR
enderObject
;
RenderObject
nextSibling
=
slot
?.
r
enderObject
;
assert
(
renderObject
is
ContainerRenderObjectMixin
);
assert
(
renderObject
is
ContainerRenderObjectMixin
);
renderObject
.
add
(
child
,
before:
nextSibling
);
renderObject
.
add
(
child
,
before:
nextSibling
);
assert
(
renderObject
==
this
.
renderObject
);
// TODO(ianh): Remove this once the analyzer is cleverer
assert
(
renderObject
==
this
.
renderObject
);
// TODO(ianh): Remove this once the analyzer is cleverer
...
@@ -946,7 +947,7 @@ class MultiChildRenderObjectElement<T extends MultiChildRenderObjectWidget> exte
...
@@ -946,7 +947,7 @@ class MultiChildRenderObjectElement<T extends MultiChildRenderObjectWidget> exte
void
moveChildRenderObject
(
RenderObject
child
,
dynamic
slot
)
{
void
moveChildRenderObject
(
RenderObject
child
,
dynamic
slot
)
{
final
renderObject
=
this
.
renderObject
;
// TODO(ianh): Remove this once the analyzer is cleverer
final
renderObject
=
this
.
renderObject
;
// TODO(ianh): Remove this once the analyzer is cleverer
RenderObject
nextSibling
=
slot
?.
_descendantR
enderObject
;
RenderObject
nextSibling
=
slot
?.
r
enderObject
;
assert
(
renderObject
is
ContainerRenderObjectMixin
);
assert
(
renderObject
is
ContainerRenderObjectMixin
);
renderObject
.
move
(
child
,
before:
nextSibling
);
renderObject
.
move
(
child
,
before:
nextSibling
);
assert
(
renderObject
==
this
.
renderObject
);
// TODO(ianh): Remove this once the analyzer is cleverer
assert
(
renderObject
==
this
.
renderObject
);
// TODO(ianh): Remove this once the analyzer is cleverer
...
...
packages/unit/test/fn3/coordinates_test.dart
0 → 100644
View file @
b3ebd440
import
'package:sky/src/fn3.dart'
;
import
'package:test/test.dart'
;
import
'widget_tester.dart'
;
void
main
(
)
{
test
(
'Comparing coordinates'
,
()
{
WidgetTester
tester
=
new
WidgetTester
();
Key
keyA
=
new
GlobalKey
();
Key
keyB
=
new
GlobalKey
();
Key
keyC
=
new
GlobalKey
();
tester
.
pumpFrame
(
new
Stack
([
new
Positioned
(
top:
100.0
,
left:
100.0
,
child:
new
SizedBox
(
key:
keyA
,
width:
10.0
,
height:
10.0
)
),
new
Positioned
(
left:
100.0
,
top:
200.0
,
child:
new
SizedBox
(
key:
keyB
,
width:
20.0
,
height:
10.0
)
),
])
);
expect
(
tester
.
findElementByKey
(
keyA
).
renderObject
.
localToGlobal
(
const
Point
(
0.0
,
0.0
)),
equals
(
const
Point
(
100.0
,
100.0
)));
expect
(
tester
.
findElementByKey
(
keyB
).
renderObject
.
localToGlobal
(
const
Point
(
0.0
,
0.0
)),
equals
(
const
Point
(
100.0
,
200.0
)));
expect
(
tester
.
findElementByKey
(
keyB
).
renderObject
.
globalToLocal
(
const
Point
(
110.0
,
205.0
)),
equals
(
const
Point
(
10.0
,
5.0
)));
});
}
packages/unit/test/fn3/widget_tester.dart
View file @
b3ebd440
...
@@ -28,20 +28,22 @@ class WidgetTester {
...
@@ -28,20 +28,22 @@ class WidgetTester {
WidgetFlutterBinding
.
instance
.
renderViewElement
.
visitChildren
(
walk
);
WidgetFlutterBinding
.
instance
.
renderViewElement
.
visitChildren
(
walk
);
}
}
Element
findElement
(
bool
predicate
(
Element
widge
t
))
{
Element
findElement
(
bool
predicate
(
Element
elemen
t
))
{
try
{
try
{
walkElements
((
Element
widge
t
)
{
walkElements
((
Element
elemen
t
)
{
if
(
predicate
(
widge
t
))
if
(
predicate
(
elemen
t
))
throw
widge
t
;
throw
elemen
t
;
});
});
}
catch
(
e
)
{
}
on
Element
catch
(
e
)
{
if
(
e
is
Element
)
return
e
;
return
e
;
rethrow
;
}
}
return
null
;
return
null
;
}
}
Element
findElementByKey
(
Key
key
)
{
return
findElement
((
Element
element
)
=>
element
.
widget
.
key
==
key
);
}
void
pumpFrame
(
Widget
widget
)
{
void
pumpFrame
(
Widget
widget
)
{
runApp
(
widget
);
runApp
(
widget
);
WidgetFlutterBinding
.
instance
.
beginFrame
(
0.0
);
// TODO(ianh): https://github.com/flutter/engine/issues/1084
WidgetFlutterBinding
.
instance
.
beginFrame
(
0.0
);
// TODO(ianh): https://github.com/flutter/engine/issues/1084
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment