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
9536c418
Commit
9536c418
authored
Mar 09, 2016
by
Hans Muller
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Scaffold saves and restores scrollable state, etc
parent
6d646860
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
138 additions
and
145 deletions
+138
-145
dialog_demo.dart
examples/material_gallery/lib/demo/dialog_demo.dart
+104
-128
page_selector_demo.dart
examples/material_gallery/lib/demo/page_selector_demo.dart
+17
-14
tabs_demo.dart
examples/material_gallery/lib/demo/tabs_demo.dart
+9
-2
scaffold.dart
packages/flutter/lib/src/material/scaffold.dart
+7
-0
tabs.dart
packages/flutter/lib/src/material/tabs.dart
+1
-1
No files found.
examples/material_gallery/lib/demo/dialog_demo.dart
View file @
9536c418
...
@@ -14,11 +14,6 @@ enum DialogDemoAction {
...
@@ -14,11 +14,6 @@ enum DialogDemoAction {
agree
,
agree
,
}
}
const
String
_introText
=
"Use dialogs sparingly because their sudden appearance forces users to stop their "
"current task and focus on the dialog's content. Alternatives to dialogs include "
"menus or inline expansion, both of which maintain the current context."
;
const
String
_alertWithoutTitleText
=
"Discard draft?"
;
const
String
_alertWithoutTitleText
=
"Discard draft?"
;
const
String
_alertWithTitleText
=
const
String
_alertWithTitleText
=
...
@@ -88,134 +83,115 @@ class DialogDemoState extends State<DialogDemo> {
...
@@ -88,134 +83,115 @@ class DialogDemoState extends State<DialogDemo> {
toolBar:
new
ToolBar
(
toolBar:
new
ToolBar
(
center:
new
Text
(
'Dialogs'
)
center:
new
Text
(
'Dialogs'
)
),
),
body:
new
B
uttonTheme
(
body:
new
B
lock
(
color:
ButtonColor
.
accent
,
padding:
const
EdgeDims
.
symmetric
(
vertical:
24.0
,
horizontal:
72.0
)
,
child
:
new
Padding
(
child
ren:
<
Widget
>[
padding:
const
EdgeDims
.
all
(
24.0
),
new
RaisedButton
(
child:
new
ScrollableViewport
(
child:
new
Text
(
'ALERT'
),
child:
new
Column
(
onPressed:
()
{
alignItems:
FlexAlignItems
.
stretch
,
showDemoDialog
(
children:
<
Widget
>[
context:
context
,
new
Container
(
dialog:
new
Dialog
(
c
hild
:
new
Text
(
c
ontent
:
new
Text
(
_
intro
Text
,
_
alertWithoutTitle
Text
,
style:
dialogTextStyle
style:
dialogTextStyle
),
),
padding:
const
EdgeDims
.
only
(
top:
8.0
,
bottom:
24.0
),
actions:
<
Widget
>[
margin:
const
EdgeDims
.
only
(
bottom:
16.0
),
new
FlatButton
(
decoration:
new
BoxDecoration
(
child:
new
Text
(
'CANCEL'
),
border:
new
Border
(
bottom:
new
BorderSide
(
color:
theme
.
dividerColor
))
onPressed:
()
{
Navigator
.
pop
(
context
,
DialogDemoAction
.
cancel
);
}
)
),
),
new
FlatButton
(
new
FlatButton
(
child:
new
Text
(
'DISCARD'
),
child:
new
Text
(
'Alert without a title'
),
onPressed:
()
{
Navigator
.
pop
(
context
,
DialogDemoAction
.
discard
);
}
onPressed:
()
{
showDemoDialog
(
context:
context
,
dialog:
new
Dialog
(
content:
new
Text
(
_alertWithoutTitleText
,
style:
dialogTextStyle
),
actions:
<
Widget
>[
new
FlatButton
(
child:
new
Text
(
'CANCEL'
),
onPressed:
()
{
Navigator
.
pop
(
context
,
DialogDemoAction
.
cancel
);
}
),
new
FlatButton
(
child:
new
Text
(
'DISCARD'
),
onPressed:
()
{
Navigator
.
pop
(
context
,
DialogDemoAction
.
discard
);
}
)
]
)
);
}
),
new
FlatButton
(
child:
new
Text
(
'Alert with a title'
),
onPressed:
()
{
showDemoDialog
(
context:
context
,
dialog:
new
Dialog
(
title:
new
Text
(
"Use Google's location service?"
),
content:
new
Text
(
_alertWithTitleText
,
style:
dialogTextStyle
),
actions:
<
Widget
>[
new
FlatButton
(
child:
new
Text
(
'DISAGREE'
),
onPressed:
()
{
Navigator
.
pop
(
context
,
DialogDemoAction
.
disagree
);
}
),
new
FlatButton
(
child:
new
Text
(
'AGREE'
),
onPressed:
()
{
Navigator
.
pop
(
context
,
DialogDemoAction
.
agree
);
}
)
]
)
);
}
),
new
FlatButton
(
child:
new
Text
(
'Simple Dialog'
),
onPressed:
()
{
showDemoDialog
(
context:
context
,
dialog:
new
Dialog
(
title:
new
Text
(
'Set backup account'
),
content:
new
Column
(
children:
<
Widget
>[
new
DialogDemoItem
(
icon:
Icons
.
account_circle
,
color:
theme
.
primaryColor
,
text:
'username@gmail.com'
,
onPressed:
()
{
Navigator
.
pop
(
context
,
'username@gmail.com'
);
}
),
new
DialogDemoItem
(
icon:
Icons
.
account_circle
,
color:
theme
.
primaryColor
,
text:
'user02@gmail.com'
,
onPressed:
()
{
Navigator
.
pop
(
context
,
'user02@gmail.com'
);
}
),
new
DialogDemoItem
(
icon:
Icons
.
add_circle
,
text:
'add account'
,
color:
theme
.
disabledColor
)
]
)
)
);
}
),
new
FlatButton
(
child:
new
Text
(
'Confirmation Dialog'
),
onPressed:
()
{
showTimePicker
(
context:
context
,
initialTime:
const
TimeOfDay
(
hour:
15
,
minute:
30
)
)
)
.
then
((
value
)
{
// The value passed to Navigator.pop() or null.
]
if
(
value
!=
null
)
{
scaffoldKey
.
currentState
.
showSnackBar
(
new
SnackBar
(
content:
new
Text
(
'You selected:
$value
'
)
));
}
});
}
),
new
FlatButton
(
child:
new
Text
(
'Fullscreen Dialog'
),
onPressed:
()
{
Navigator
.
push
(
context
,
new
MaterialPageRoute
(
builder:
(
BuildContext
context
)
=>
new
FullScreenDialogDemo
()
));
}
)
)
]
);
)
}
),
new
RaisedButton
(
child:
new
Text
(
'ALERT WITH TITLE'
),
onPressed:
()
{
showDemoDialog
(
context:
context
,
dialog:
new
Dialog
(
title:
new
Text
(
"Use Google's location service?"
),
content:
new
Text
(
_alertWithTitleText
,
style:
dialogTextStyle
),
actions:
<
Widget
>[
new
FlatButton
(
child:
new
Text
(
'DISAGREE'
),
onPressed:
()
{
Navigator
.
pop
(
context
,
DialogDemoAction
.
disagree
);
}
),
new
FlatButton
(
child:
new
Text
(
'AGREE'
),
onPressed:
()
{
Navigator
.
pop
(
context
,
DialogDemoAction
.
agree
);
}
)
]
)
);
}
),
new
RaisedButton
(
child:
new
Text
(
'SIMPLE'
),
onPressed:
()
{
showDemoDialog
(
context:
context
,
dialog:
new
Dialog
(
title:
new
Text
(
'Set backup account'
),
content:
new
Column
(
children:
<
Widget
>[
new
DialogDemoItem
(
icon:
Icons
.
account_circle
,
color:
theme
.
primaryColor
,
text:
'username@gmail.com'
,
onPressed:
()
{
Navigator
.
pop
(
context
,
'username@gmail.com'
);
}
),
new
DialogDemoItem
(
icon:
Icons
.
account_circle
,
color:
theme
.
primaryColor
,
text:
'user02@gmail.com'
,
onPressed:
()
{
Navigator
.
pop
(
context
,
'user02@gmail.com'
);
}
),
new
DialogDemoItem
(
icon:
Icons
.
add_circle
,
text:
'add account'
,
color:
theme
.
disabledColor
)
]
)
)
);
}
),
new
RaisedButton
(
child:
new
Text
(
'CONFIRMATION'
),
onPressed:
()
{
showTimePicker
(
context:
context
,
initialTime:
const
TimeOfDay
(
hour:
15
,
minute:
30
)
)
.
then
((
value
)
{
// The value passed to Navigator.pop() or null.
if
(
value
!=
null
)
{
scaffoldKey
.
currentState
.
showSnackBar
(
new
SnackBar
(
content:
new
Text
(
'You selected:
$value
'
)
));
}
});
}
),
new
RaisedButton
(
child:
new
Text
(
'FULLSCREEN'
),
onPressed:
()
{
Navigator
.
push
(
context
,
new
MaterialPageRoute
(
builder:
(
BuildContext
context
)
=>
new
FullScreenDialogDemo
()
));
}
)
)
)
]
)
)
);
);
}
}
...
...
examples/material_gallery/lib/demo/page_selector_demo.dart
View file @
9536c418
...
@@ -5,17 +5,6 @@
...
@@ -5,17 +5,6 @@
import
'package:flutter/material.dart'
;
import
'package:flutter/material.dart'
;
class
PageSelectorDemo
extends
StatelessComponent
{
class
PageSelectorDemo
extends
StatelessComponent
{
Widget
_buildTabView
(
IconData
icon
)
{
return
new
Container
(
key:
new
ObjectKey
(
icon
),
padding:
const
EdgeDims
.
all
(
12.0
),
child:
new
Card
(
child:
new
Center
(
child:
new
Icon
(
icon:
icon
,
size:
48.0
)
)
)
);
}
void
_handleArrowButtonPress
(
BuildContext
context
,
int
delta
)
{
void
_handleArrowButtonPress
(
BuildContext
context
,
int
delta
)
{
final
TabBarSelectionState
selection
=
TabBarSelection
.
of
(
context
);
final
TabBarSelectionState
selection
=
TabBarSelection
.
of
(
context
);
...
@@ -35,10 +24,11 @@ class PageSelectorDemo extends StatelessComponent {
...
@@ -35,10 +24,11 @@ class PageSelectorDemo extends StatelessComponent {
return
new
Scaffold
(
return
new
Scaffold
(
toolBar:
new
ToolBar
(
center:
new
Text
(
'Page Selector'
)),
toolBar:
new
ToolBar
(
center:
new
Text
(
'Page Selector'
)),
body:
new
TabBarSelection
(
body:
new
TabBarSelection
<
IconData
>
(
values:
icons
,
values:
icons
,
child:
new
Builder
(
child:
new
Builder
(
builder:
(
BuildContext
context
)
{
builder:
(
BuildContext
context
)
{
final
Color
color
=
Theme
.
of
(
context
).
accentColor
;
return
new
Column
(
return
new
Column
(
children:
<
Widget
>[
children:
<
Widget
>[
new
Container
(
new
Container
(
...
@@ -47,12 +37,14 @@ class PageSelectorDemo extends StatelessComponent {
...
@@ -47,12 +37,14 @@ class PageSelectorDemo extends StatelessComponent {
children:
<
Widget
>[
children:
<
Widget
>[
new
IconButton
(
new
IconButton
(
icon:
Icons
.
arrow_back
,
icon:
Icons
.
arrow_back
,
color:
color
,
onPressed:
()
{
_handleArrowButtonPress
(
context
,
-
1
);
},
onPressed:
()
{
_handleArrowButtonPress
(
context
,
-
1
);
},
tooltip:
'Back'
tooltip:
'Back'
),
),
new
TabPageSelector
<
String
>(),
new
TabPageSelector
<
IconData
>(),
new
IconButton
(
new
IconButton
(
icon:
Icons
.
arrow_forward
,
icon:
Icons
.
arrow_forward
,
color:
color
,
onPressed:
()
{
_handleArrowButtonPress
(
context
,
1
);
},
onPressed:
()
{
_handleArrowButtonPress
(
context
,
1
);
},
tooltip:
'Forward'
tooltip:
'Forward'
)
)
...
@@ -62,7 +54,18 @@ class PageSelectorDemo extends StatelessComponent {
...
@@ -62,7 +54,18 @@ class PageSelectorDemo extends StatelessComponent {
),
),
new
Flexible
(
new
Flexible
(
child:
new
TabBarView
(
child:
new
TabBarView
(
children:
icons
.
map
(
_buildTabView
).
toList
()
children:
icons
.
map
((
IconData
icon
)
{
return
new
Container
(
key:
new
ObjectKey
(
icon
),
padding:
const
EdgeDims
.
all
(
12.0
),
child:
new
Card
(
child:
new
Center
(
child:
new
Icon
(
icon:
icon
,
size:
128.0
,
color:
color
)
)
)
);
})
.
toList
()
)
)
)
)
]
]
...
...
examples/material_gallery/lib/demo/tabs_demo.dart
View file @
9536c418
...
@@ -23,7 +23,8 @@ class TabsDemo extends StatelessComponent {
...
@@ -23,7 +23,8 @@ class TabsDemo extends StatelessComponent {
Icons
.
language
:
'LANGUAGE'
,
Icons
.
language
:
'LANGUAGE'
,
};
};
Widget
build
(
_
)
{
Widget
build
(
BuildContext
context
)
{
final
Color
iconColor
=
Theme
.
of
(
context
).
accentColor
;
return
new
TabBarSelection
(
return
new
TabBarSelection
(
values:
icons
,
values:
icons
,
child:
new
Scaffold
(
child:
new
Scaffold
(
...
@@ -43,7 +44,13 @@ class TabsDemo extends StatelessComponent {
...
@@ -43,7 +44,13 @@ class TabsDemo extends StatelessComponent {
key:
new
ObjectKey
(
icon
),
key:
new
ObjectKey
(
icon
),
padding:
const
EdgeDims
.
all
(
12.0
),
padding:
const
EdgeDims
.
all
(
12.0
),
child:
new
Card
(
child:
new
Card
(
child:
new
Center
(
child:
new
Icon
(
icon:
icon
,
size:
48.0
))
child:
new
Center
(
child:
new
Icon
(
icon:
icon
,
color:
iconColor
,
size:
128.0
)
)
)
)
);
);
}).
toList
()
}).
toList
()
...
...
packages/flutter/lib/src/material/scaffold.dart
View file @
9536c418
...
@@ -345,6 +345,12 @@ class ScaffoldState extends State<Scaffold> {
...
@@ -345,6 +345,12 @@ class ScaffoldState extends State<Scaffold> {
void
initState
()
{
void
initState
()
{
super
.
initState
();
super
.
initState
();
_appBarController
=
new
AnimationController
();
_appBarController
=
new
AnimationController
();
List
<
double
>
scrollValues
=
PageStorage
.
of
(
context
)?.
readState
(
context
);
if
(
scrollValues
!=
null
)
{
assert
(
scrollValues
.
length
==
2
);
_scrollOffset
=
scrollValues
[
0
];
_scrollOffsetDelta
=
scrollValues
[
1
];
}
}
}
void
dispose
()
{
void
dispose
()
{
...
@@ -353,6 +359,7 @@ class ScaffoldState extends State<Scaffold> {
...
@@ -353,6 +359,7 @@ class ScaffoldState extends State<Scaffold> {
_snackBarController
=
null
;
_snackBarController
=
null
;
_snackBarTimer
?.
cancel
();
_snackBarTimer
?.
cancel
();
_snackBarTimer
=
null
;
_snackBarTimer
=
null
;
PageStorage
.
of
(
context
)?.
writeState
(
context
,
<
double
>[
_scrollOffset
,
_scrollOffsetDelta
]);
super
.
dispose
();
super
.
dispose
();
}
}
...
...
packages/flutter/lib/src/material/tabs.dart
View file @
9536c418
...
@@ -999,7 +999,7 @@ class TabPageSelector<T> extends StatelessComponent {
...
@@ -999,7 +999,7 @@ class TabPageSelector<T> extends StatelessComponent {
Widget
build
(
BuildContext
context
)
{
Widget
build
(
BuildContext
context
)
{
final
TabBarSelectionState
selection
=
TabBarSelection
.
of
(
context
);
final
TabBarSelectionState
selection
=
TabBarSelection
.
of
(
context
);
final
Color
color
=
Theme
.
of
(
context
).
primary
Color
;
final
Color
color
=
Theme
.
of
(
context
).
accent
Color
;
final
ColorTween
selectedColor
=
new
ColorTween
(
begin:
Colors
.
transparent
,
end:
color
);
final
ColorTween
selectedColor
=
new
ColorTween
(
begin:
Colors
.
transparent
,
end:
color
);
final
ColorTween
previousColor
=
new
ColorTween
(
begin:
color
,
end:
Colors
.
transparent
);
final
ColorTween
previousColor
=
new
ColorTween
(
begin:
color
,
end:
Colors
.
transparent
);
Animation
<
double
>
animation
=
new
CurvedAnimation
(
parent:
selection
.
animation
,
curve:
Curves
.
ease
);
Animation
<
double
>
animation
=
new
CurvedAnimation
(
parent:
selection
.
animation
,
curve:
Curves
.
ease
);
...
...
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