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
48f600f8
Commit
48f600f8
authored
Sep 04, 2015
by
Adam Barth
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1071 from abarth/center_expand
Center and Align should expand by default
parents
18e512d3
5af85d90
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
114 additions
and
37 deletions
+114
-37
shifted_box.dart
packages/flutter/lib/src/rendering/shifted_box.dart
+28
-3
basic.dart
packages/flutter/lib/src/widgets/basic.dart
+14
-5
date_picker.dart
packages/flutter/lib/src/widgets/date_picker.dart
+22
-25
dialog.dart
packages/flutter/lib/src/widgets/dialog.dart
+4
-3
material_button.dart
packages/flutter/lib/src/widgets/material_button.dart
+4
-1
positioned_box_test.dart
packages/unit/test/rendering/positioned_box_test.dart
+42
-0
No files found.
packages/flutter/lib/src/rendering/shifted_box.dart
View file @
48f600f8
...
...
@@ -136,6 +136,13 @@ class RenderPadding extends RenderShiftedBox {
String
debugDescribeSettings
(
String
prefix
)
=>
'
${super.debugDescribeSettings(prefix)}${prefix}
padding:
${padding}
\n
'
;
}
enum
ShrinkWrap
{
width
,
height
,
both
,
none
}
class
RenderPositionedBox
extends
RenderShiftedBox
{
// This box aligns a child box within itself. It's only useful for
...
...
@@ -147,12 +154,15 @@ class RenderPositionedBox extends RenderShiftedBox {
RenderPositionedBox
({
RenderBox
child
,
double
horizontal:
0.5
,
double
vertical:
0.5
double
vertical:
0.5
,
ShrinkWrap
shrinkWrap:
ShrinkWrap
.
none
})
:
_horizontal
=
horizontal
,
_vertical
=
vertical
,
_shrinkWrap
=
shrinkWrap
,
super
(
child
)
{
assert
(
horizontal
!=
null
);
assert
(
vertical
!=
null
);
assert
(
shrinkWrap
!=
null
);
}
double
_horizontal
;
...
...
@@ -175,15 +185,30 @@ class RenderPositionedBox extends RenderShiftedBox {
markNeedsLayout
();
}
ShrinkWrap
_shrinkWrap
;
ShrinkWrap
get
shrinkWrap
=>
_shrinkWrap
;
void
set
shrinkWrap
(
ShrinkWrap
value
)
{
assert
(
value
!=
null
);
if
(
_shrinkWrap
==
value
)
return
;
_shrinkWrap
=
value
;
markNeedsLayout
();
}
bool
get
_shinkWrapWidth
=>
_shrinkWrap
==
ShrinkWrap
.
width
||
_shrinkWrap
==
ShrinkWrap
.
both
;
bool
get
_shinkWrapHeight
=>
_shrinkWrap
==
ShrinkWrap
.
height
||
_shrinkWrap
==
ShrinkWrap
.
both
;
void
performLayout
()
{
if
(
child
!=
null
)
{
child
.
layout
(
constraints
.
loosen
(),
parentUsesSize:
true
);
size
=
constraints
.
constrain
(
child
.
size
);
size
=
constraints
.
constrain
(
new
Size
(
_shinkWrapWidth
?
child
.
size
.
width
:
double
.
INFINITY
,
_shinkWrapHeight
?
child
.
size
.
height
:
double
.
INFINITY
));
assert
(
child
.
parentData
is
BoxParentData
);
Offset
delta
=
size
-
child
.
size
;
child
.
parentData
.
position
=
(
delta
.
scale
(
horizontal
,
vertical
)).
toPoint
();
}
else
{
performResize
();
size
=
constraints
.
constrain
(
new
Size
(
_shinkWrapWidth
?
0.0
:
double
.
INFINITY
,
_shinkWrapHeight
?
0.0
:
double
.
INFINITY
));
}
}
...
...
packages/flutter/lib/src/widgets/basic.dart
View file @
48f600f8
...
...
@@ -32,6 +32,7 @@ export 'package:sky/src/rendering/box.dart' show BoxConstraints;
export
'package:sky/src/rendering/flex.dart'
show
FlexJustifyContent
,
FlexAlignItems
,
FlexDirection
;
export
'package:sky/src/rendering/object.dart'
show
Point
,
Offset
,
Size
,
Rect
,
Color
,
Paint
,
Path
;
export
'package:sky/src/rendering/proxy_box.dart'
show
BackgroundImage
,
BoxDecoration
,
BoxDecorationPosition
,
BoxShadow
,
Border
,
BorderSide
,
EdgeDims
,
Shape
;
export
'package:sky/src/rendering/shifted_box.dart'
show
ShrinkWrap
;
export
'package:sky/src/rendering/toggleable.dart'
show
ValueChanged
;
export
'package:sky/src/rendering/viewport.dart'
show
ScrollDirection
;
...
...
@@ -200,28 +201,36 @@ class Padding extends OneChildRenderObjectWrapper {
}
class
Align
extends
OneChildRenderObjectWrapper
{
Align
({
Key
key
,
this
.
horizontal
:
0.5
,
this
.
vertical
:
0.5
,
Widget
child
})
:
super
(
key:
key
,
child:
child
)
{
Align
({
Key
key
,
this
.
horizontal
:
0.5
,
this
.
vertical
:
0.5
,
this
.
shrinkWrap
:
ShrinkWrap
.
none
,
Widget
child
})
:
super
(
key:
key
,
child:
child
)
{
assert
(
horizontal
!=
null
);
assert
(
vertical
!=
null
);
assert
(
shrinkWrap
!=
null
);
}
final
double
horizontal
;
final
double
vertical
;
final
ShrinkWrap
shrinkWrap
;
RenderPositionedBox
createNode
()
=>
new
RenderPositionedBox
(
horizontal:
horizontal
,
vertical:
vertical
);
RenderPositionedBox
createNode
()
=>
new
RenderPositionedBox
(
horizontal:
horizontal
,
vertical:
vertical
,
shrinkWrap:
shrinkWrap
);
RenderPositionedBox
get
renderObject
=>
super
.
renderObject
;
void
syncRenderObject
(
Align
old
)
{
super
.
syncRenderObject
(
old
);
renderObject
.
horizontal
=
horizontal
;
renderObject
.
vertical
=
vertical
;
renderObject
.
shrinkWrap
=
shrinkWrap
;
}
}
class
Center
extends
Align
{
Center
({
Key
key
,
Widget
child
})
:
super
(
key:
key
,
child:
child
);
Center
({
Key
key
,
ShrinkWrap
shrinkWrap:
ShrinkWrap
.
none
,
Widget
child
})
:
super
(
key:
key
,
shrinkWrap:
shrinkWrap
,
child:
child
);
}
class
SizedBox
extends
OneChildRenderObjectWrapper
{
...
...
packages/flutter/lib/src/widgets/date_picker.dart
View file @
48f600f8
...
...
@@ -98,7 +98,13 @@ class DatePicker extends StatefulComponent {
);
break
;
}
return
new
BlockBody
([
header
,
new
Container
(
height:
_calendarHeight
,
child:
picker
)]);
return
new
Column
([
header
,
new
Container
(
height:
_calendarHeight
,
child:
picker
)
],
alignItems:
FlexAlignItems
.
stretch
);
}
}
...
...
@@ -143,28 +149,22 @@ class DatePickerHeader extends Component {
TextStyle
yearStyle
=
headerTheme
.
headline
.
copyWith
(
color:
yearColor
,
height:
1.0
);
return
new
Container
(
child:
new
BlockBody
([
new
Center
(
child:
new
GestureDetector
(
child:
new
Text
(
new
DateFormat
(
"MMM"
).
format
(
selectedDate
).
toUpperCase
(),
style:
monthStyle
),
onTap:
()
=>
_handleChangeMode
(
DatePickerMode
.
day
)
)
padding:
new
EdgeDims
.
all
(
10.0
),
decoration:
new
BoxDecoration
(
backgroundColor:
theme
.
primaryColor
),
child:
new
Column
([
new
GestureDetector
(
onTap:
()
=>
_handleChangeMode
(
DatePickerMode
.
day
),
child:
new
Text
(
new
DateFormat
(
"MMM"
).
format
(
selectedDate
).
toUpperCase
(),
style:
monthStyle
)
),
new
Center
(
child:
new
GestureDetector
(
child:
new
Text
(
new
DateFormat
(
"d"
).
format
(
selectedDate
),
style:
dayStyle
),
onTap:
()
=>
_handleChangeMode
(
DatePickerMode
.
day
)
)
new
GestureDetector
(
onTap:
()
=>
_handleChangeMode
(
DatePickerMode
.
day
),
child:
new
Text
(
new
DateFormat
(
"d"
).
format
(
selectedDate
),
style:
dayStyle
)
),
new
Center
(
child:
new
GestureDetector
(
child:
new
Text
(
new
DateFormat
(
"yyyy"
).
format
(
selectedDate
),
style:
yearStyle
),
onTap:
()
=>
_handleChangeMode
(
DatePickerMode
.
year
)
)
new
GestureDetector
(
onTap:
()
=>
_handleChangeMode
(
DatePickerMode
.
year
),
child:
new
Text
(
new
DateFormat
(
"yyyy"
).
format
(
selectedDate
),
style:
yearStyle
)
)
]),
padding:
new
EdgeDims
.
all
(
10.0
),
decoration:
new
BoxDecoration
(
backgroundColor:
theme
.
primaryColor
)
])
);
}
}
...
...
@@ -267,11 +267,8 @@ class DayPicker extends Component {
}
for
(
int
w
=
0
;
w
<
weeksShown
;
w
++)
{
int
startIndex
=
w
*
days
.
length
;
rows
.
add
(
new
Container
(
child:
new
Flex
(
labels
.
sublist
(
startIndex
,
startIndex
+
days
.
length
),
justifyContent:
FlexJustifyContent
.
spaceAround
)
rows
.
add
(
new
Row
(
labels
.
sublist
(
startIndex
,
startIndex
+
days
.
length
)
));
}
...
...
packages/flutter/lib/src/widgets/dialog.dart
View file @
48f600f8
...
...
@@ -95,21 +95,22 @@ class Dialog extends Component {
));
}
if
(
actions
!=
null
)
if
(
actions
!=
null
)
{
dialogBody
.
add
(
new
Container
(
child:
new
Row
(
actions
,
justifyContent:
FlexJustifyContent
.
end
)
));
}
return
new
Stack
([
new
GestureDetector
(
onTap:
onDismiss
,
child:
new
Container
(
decoration:
const
BoxDecoration
(
backgroundColor:
const
Color
(
0x7F000000
)
)
),
onTap:
onDismiss
)
),
new
Center
(
child:
new
Container
(
...
...
packages/flutter/lib/src/widgets/material_button.dart
View file @
48f600f8
...
...
@@ -36,7 +36,10 @@ abstract class MaterialButton extends ButtonBase {
Widget
buildContent
()
{
Widget
contents
=
new
Container
(
padding:
new
EdgeDims
.
symmetric
(
horizontal:
8.0
),
child:
new
Center
(
child:
child
)
// TODO(ianh): figure out a way to compell the child to have gray text when disabled...
child:
new
Center
(
shrinkWrap:
ShrinkWrap
.
width
,
child:
child
// TODO(ianh): figure out a way to compell the child to have gray text when disabled...
)
);
return
new
GestureDetector
(
onTap:
enabled
?
onPressed
:
null
,
...
...
packages/unit/test/rendering/positioned_box_test.dart
0 → 100644
View file @
48f600f8
import
'package:sky/rendering.dart'
;
import
'package:test/test.dart'
;
import
'rendering_tester.dart'
;
void
main
(
)
{
test
(
'RenderPositionedBox expands'
,
()
{
RenderConstrainedBox
sizer
=
new
RenderConstrainedBox
(
additionalConstraints:
new
BoxConstraints
.
tight
(
new
Size
(
100.0
,
100.0
)),
child:
new
RenderDecoratedBox
(
decoration:
new
BoxDecoration
())
);
RenderPositionedBox
positioner
=
new
RenderPositionedBox
(
child:
sizer
);
layout
(
positioner
,
constraints:
new
BoxConstraints
.
loose
(
new
Size
(
200.0
,
200.0
)));
expect
(
positioner
.
size
.
width
,
equals
(
200.0
),
reason:
"positioner width"
);
expect
(
positioner
.
size
.
height
,
equals
(
200.0
),
reason:
"positioner height"
);
});
test
(
'RenderPositionedBox shrink wraps'
,
()
{
RenderConstrainedBox
sizer
=
new
RenderConstrainedBox
(
additionalConstraints:
new
BoxConstraints
.
tight
(
new
Size
(
100.0
,
100.0
)),
child:
new
RenderDecoratedBox
(
decoration:
new
BoxDecoration
())
);
RenderPositionedBox
positioner
=
new
RenderPositionedBox
(
child:
sizer
,
shrinkWrap:
ShrinkWrap
.
width
);
RenderingTester
tester
=
layout
(
positioner
,
constraints:
new
BoxConstraints
.
loose
(
new
Size
(
200.0
,
200.0
)));
expect
(
positioner
.
size
.
width
,
equals
(
100.0
),
reason:
"positioner width"
);
expect
(
positioner
.
size
.
height
,
equals
(
200.0
),
reason:
"positioner height"
);
positioner
.
shrinkWrap
=
ShrinkWrap
.
height
;
tester
.
pumpFrame
(
phase:
EnginePhase
.
layout
);
expect
(
positioner
.
size
.
width
,
equals
(
200.0
),
reason:
"positioner width"
);
expect
(
positioner
.
size
.
height
,
equals
(
100.0
),
reason:
"positioner height"
);
positioner
.
shrinkWrap
=
ShrinkWrap
.
both
;
tester
.
pumpFrame
(
phase:
EnginePhase
.
layout
);
expect
(
positioner
.
size
.
width
,
equals
(
100.0
),
reason:
"positioner width"
);
expect
(
positioner
.
size
.
height
,
equals
(
100.0
),
reason:
"positioner height"
);
});
}
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