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
9f6fc78c
Commit
9f6fc78c
authored
Jul 24, 2015
by
Collin Jackson
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix the new item dialog for fitness app
parent
cb8e1b58
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
90 additions
and
23 deletions
+90
-23
feed.dart
packages/flutter/example/fitness/lib/feed.dart
+66
-15
fitness_item.dart
packages/flutter/example/fitness/lib/fitness_item.dart
+6
-2
meal.dart
packages/flutter/example/fitness/lib/meal.dart
+7
-1
measurement.dart
packages/flutter/example/fitness/lib/measurement.dart
+7
-1
stock_settings.dart
packages/flutter/example/stocks/lib/stock_settings.dart
+4
-4
No files found.
packages/flutter/example/fitness/lib/feed.dart
View file @
9f6fc78c
...
...
@@ -4,6 +4,7 @@
import
'package:sky/painting/text_style.dart'
;
import
'package:sky/widgets/basic.dart'
;
import
'package:sky/widgets/button_base.dart'
;
import
'package:sky/widgets/dialog.dart'
;
import
'package:sky/widgets/drawer.dart'
;
import
'package:sky/widgets/drawer_divider.dart'
;
...
...
@@ -13,10 +14,13 @@ import 'package:sky/widgets/flat_button.dart';
import
'package:sky/widgets/floating_action_button.dart'
;
import
'package:sky/widgets/icon_button.dart'
;
import
'package:sky/widgets/icon.dart'
;
import
'package:sky/widgets/ink_well.dart'
;
import
'package:sky/widgets/material.dart'
;
import
'package:sky/widgets/navigator.dart'
;
import
'package:sky/widgets/radio.dart'
;
import
'package:sky/widgets/scaffold.dart'
;
import
'package:sky/widgets/scrollable_list.dart'
;
import
'package:sky/widgets/scrollable_viewport.dart'
;
import
'package:sky/widgets/snack_bar.dart'
;
import
'package:sky/widgets/theme.dart'
;
import
'package:sky/widgets/tool_bar.dart'
;
...
...
@@ -27,7 +31,10 @@ import 'fitness_item.dart';
import
'measurement.dart'
;
class
FitnessItemList
extends
Component
{
FitnessItemList
({
Key
key
,
this
.
items
,
this
.
onDismissed
})
:
super
(
key:
key
);
FitnessItemList
({
Key
key
,
this
.
items
,
this
.
onDismissed
})
:
super
(
key:
key
)
{
assert
(
items
!=
null
);
assert
(
onDismissed
!=
null
);
}
final
List
<
FitnessItem
>
items
;
final
FitnessItemHandler
onDismissed
;
...
...
@@ -36,11 +43,40 @@ class FitnessItemList extends Component {
return
new
Material
(
type:
MaterialType
.
canvas
,
child:
new
ScrollableList
<
FitnessItem
>(
padding:
const
EdgeDims
.
all
(
4.0
),
items:
items
,
itemHeight:
kFitnessItemHeight
,
itemBuilder:
(
item
)
=>
new
MeasurementRow
(
measurement:
item
as
Measurement
,
onDismissed:
onDismissed
itemBuilder:
(
item
)
=>
item
.
toRow
(
onDismissed:
onDismissed
)
)
);
}
}
class
DialogMenuItem
extends
ButtonBase
{
DialogMenuItem
(
this
.
children
,
{
Key
key
,
this
.
onPressed
})
:
super
(
key:
key
);
List
<
Widget
>
children
;
Function
onPressed
;
void
syncFields
(
DialogMenuItem
source
)
{
children
=
source
.
children
;
onPressed
=
source
.
onPressed
;
super
.
syncFields
(
source
);
}
Widget
buildContent
()
{
return
new
Listener
(
onGestureTap:
(
_
)
{
if
(
onPressed
!=
null
)
onPressed
();
},
child:
new
Container
(
height:
48.0
,
child:
new
InkWell
(
child:
new
Padding
(
padding:
const
EdgeDims
.
symmetric
(
horizontal:
16.0
),
child:
new
Flex
(
children
)
)
)
)
);
...
...
@@ -204,11 +240,30 @@ class FeedFragment extends StatefulComponent {
}
bool
_isShowingDialog
=
false
;
String
_addItemRoute
;
void
_handleAddItemRouteChanged
(
String
routeName
)
{
setState
(()
{
_addItemRoute
=
routeName
;
});
}
Widget
buildDialog
()
{
// TODO(jackson): Internationalize
Map
<
String
,
String
>
labels
=
{
'/meals/new'
:
'Eat'
,
'/measurements/new'
:
'Measure'
,
};
List
<
Widget
>
menuItems
=
[];
for
(
String
routeName
in
labels
.
keys
)
{
menuItems
.
add
(
new
DialogMenuItem
([
new
Flexible
(
child:
new
Text
(
labels
[
routeName
])),
new
Radio
(
value:
routeName
,
groupValue:
_addItemRoute
,
onChanged:
_handleAddItemRouteChanged
),
],
onPressed:
()
=>
_handleAddItemRouteChanged
(
routeName
)));
}
return
new
Dialog
(
title:
new
Text
(
"
New item
"
),
content:
new
Text
(
"What are you trying to do?"
),
title:
new
Text
(
"
What are you doing?
"
),
content:
new
ScrollableBlock
(
menuItems
),
onDismiss:
navigator
.
pop
,
actions:
[
new
FlatButton
(
...
...
@@ -216,17 +271,10 @@ class FeedFragment extends StatefulComponent {
onPressed:
navigator
.
pop
),
new
FlatButton
(
child:
new
Text
(
'
EAT
'
),
child:
new
Text
(
'
ADD
'
),
onPressed:
()
{
navigator
.
pop
();
navigator
.
pushNamed
(
"/meals/new"
);
}
),
new
FlatButton
(
child:
new
Text
(
'MEASURE'
),
onPressed:
()
{
navigator
.
pop
();
navigator
.
pushNamed
(
"/measurements/new"
);
navigator
.
pushNamed
(
_addItemRoute
);
}
),
]
...
...
@@ -236,6 +284,9 @@ class FeedFragment extends StatefulComponent {
void
_handleActionButtonPressed
()
{
setState
(()
{
_isShowingDialog
=
true
;
navigator
.
pushState
(
this
,
(
_
)
{
_isShowingDialog
=
false
;
});
});
}
...
...
packages/flutter/example/fitness/lib/fitness_item.dart
View file @
9f6fc78c
...
...
@@ -10,7 +10,7 @@ typedef void FitnessItemHandler(FitnessItem item);
const
double
kFitnessItemHeight
=
79.0
;
class
FitnessItem
{
abstract
class
FitnessItem
{
FitnessItem
({
this
.
when
})
{
assert
(
when
!=
null
);
}
...
...
@@ -18,13 +18,17 @@ class FitnessItem {
// TODO(jackson): Internationalize
String
get
displayDate
=>
"
${when.year.toString()}
-
${when.month.toString().padLeft(2,'0')}
-
${when.day.toString().padLeft(2,'0')}
"
;
FitnessItemRow
toRow
({
FitnessItemHandler
onDismissed
});
}
abstract
class
FitnessItemRow
extends
Component
{
FitnessItemRow
({
FitnessItem
item
,
this
.
onDismissed
})
:
this
.
item
=
item
,
super
(
key:
new
Key
(
item
.
when
.
toString
()));
super
(
key:
new
Key
(
item
.
when
.
toString
()))
{
assert
(
onDismissed
!=
null
);
}
final
FitnessItem
item
;
final
FitnessItemHandler
onDismissed
;
...
...
packages/flutter/example/fitness/lib/meal.dart
View file @
9f6fc78c
...
...
@@ -21,6 +21,10 @@ class Meal extends FitnessItem {
Meal
({
DateTime
when
,
this
.
description
})
:
super
(
when:
when
);
final
String
description
;
FitnessItemRow
toRow
({
FitnessItemHandler
onDismissed
})
{
return
new
MealRow
(
meal:
this
,
onDismissed:
onDismissed
);
}
}
class
MealRow
extends
FitnessItemRow
{
...
...
@@ -91,6 +95,8 @@ class MealFragment extends StatefulComponent {
});
}
static
final
GlobalKey
descriptionKey
=
new
GlobalKey
();
Widget
buildBody
()
{
Meal
meal
=
new
Meal
(
when:
new
DateTime
.
now
());
return
new
Material
(
...
...
@@ -101,7 +107,7 @@ class MealFragment extends StatefulComponent {
child:
new
Block
([
new
Text
(
meal
.
displayDate
),
new
Input
(
focused:
false
,
key:
descriptionKey
,
placeholder:
'Describe meal'
,
onChanged:
_handleDescriptionChanged
),
...
...
packages/flutter/example/fitness/lib/measurement.dart
View file @
9f6fc78c
...
...
@@ -25,6 +25,10 @@ class Measurement extends FitnessItem {
// TODO(jackson): Internationalize
String
get
displayWeight
=>
"
${weight.toStringAsFixed(2)}
lbs"
;
FitnessItemRow
toRow
({
FitnessItemHandler
onDismissed
})
{
return
new
MeasurementRow
(
measurement:
this
,
onDismissed:
onDismissed
);
}
}
class
MeasurementRow
extends
FitnessItemRow
{
...
...
@@ -105,6 +109,8 @@ class MeasurementFragment extends StatefulComponent {
});
}
static
final
GlobalKey
weightKey
=
new
GlobalKey
();
Widget
buildBody
()
{
Measurement
measurement
=
new
Measurement
(
when:
new
DateTime
.
now
());
return
new
Material
(
...
...
@@ -115,7 +121,7 @@ class MeasurementFragment extends StatefulComponent {
child:
new
Block
([
new
Text
(
measurement
.
displayDate
),
new
Input
(
focused:
false
,
key:
weightKey
,
placeholder:
'Enter weight'
,
onChanged:
_handleWeightChanged
),
...
...
packages/flutter/example/stocks/lib/stock_settings.dart
View file @
9f6fc78c
...
...
@@ -31,7 +31,7 @@ class StockSettings extends StatefulComponent {
BackupMode
backup
;
SettingsUpdater
updater
;
bool
showModeDialog
=
false
;
bool
_
showModeDialog
=
false
;
void
syncFields
(
StockSettings
source
)
{
navigator
=
source
.
navigator
;
...
...
@@ -60,9 +60,9 @@ class StockSettings extends StatefulComponent {
_handleOptimismChanged
(
false
);
break
;
case
StockMode
.
pessimistic
:
showModeDialog
=
true
;
_
showModeDialog
=
true
;
navigator
.
pushState
(
this
,
(
_
)
{
showModeDialog
=
false
;
_
showModeDialog
=
false
;
});
break
;
}
...
...
@@ -123,7 +123,7 @@ class StockSettings extends StatefulComponent {
body:
buildSettingsPane
()
)
];
if
(
showModeDialog
)
{
if
(
_
showModeDialog
)
{
layers
.
add
(
new
Dialog
(
title:
new
Text
(
"Change mode?"
),
content:
new
Text
(
"Optimistic mode means everything is awesome. Are you sure you can handle that?"
),
...
...
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