Commit a6c473ea authored by Hixie's avatar Hixie

Strong modeify the examples

This makes skyanalyzer also check the examples, and fixes everything it
found there.
parent 1dbf9bc8
......@@ -17,7 +17,7 @@ class Field extends StatelessComponent {
final String placeholder;
Widget build(BuildContext context) {
return new Row([
return new Row(<Widget>[
new Padding(
padding: const EdgeDims.symmetric(horizontal: 16.0),
child: new Icon(type: icon, size: 24)
......@@ -37,7 +37,7 @@ class AddressBookHome extends StatelessComponent {
Widget buildToolBar(BuildContext context) {
return new ToolBar(
left: new IconButton(icon: "navigation/arrow_back"),
right: [new IconButton(icon: "navigation/check")]
right: <Widget>[new IconButton(icon: "navigation/check")]
);
}
......@@ -56,7 +56,7 @@ class AddressBookHome extends StatelessComponent {
static final GlobalKey noteKey = new GlobalKey(label: 'note field');
Widget buildBody(BuildContext context) {
return new Block([
return new Block(<Widget>[
new AspectRatio(
aspectRatio: 16.0 / 9.0,
child: new Container(
......
......@@ -10,61 +10,59 @@ class DateUtils {
static const YESTERDAY = 'Yesterday';
static const MS_IN_WEEK =
DateTime.DAYS_PER_WEEK * Duration.MILLISECONDS_PER_DAY;
static const MS_IN_WEEK = DateTime.DAYS_PER_WEEK * Duration.MILLISECONDS_PER_DAY;
// TODO(jmesserly): locale specific date format
static String _twoDigits(int n) {
if (n >= 10) return "${n}";
return "0${n}";
if (n >= 10)
return '$n';
return '0$n';
}
/** Formats a time in H:MM A format */
/// Formats a time in H:MM A format
static String toHourMinutesString(Duration duration) {
assert(duration.inDays == 0);
int hours = duration.inHours;
String a;
if (hours >= 12) {
a = 'pm';
if (hours != 12) {
if (hours != 12)
hours -= 12;
}
} else {
a = 'am';
if (hours == 0) {
if (hours == 0)
hours += 12;
}
}
String twoDigits(int n) {
if (n >= 10) return "${n}";
return "0${n}";
if (n >= 10)
return '$n';
return '0$n';
}
String mm =
twoDigits(duration.inMinutes.remainder(Duration.MINUTES_PER_HOUR));
return "${hours}:${mm} ${a}";
String mm = twoDigits(duration.inMinutes.remainder(Duration.MINUTES_PER_HOUR));
return '$hours:$mm $a';
}
/**
* A date/time formatter that takes into account the current date/time:
* - if it's from today, just show the time
* - if it's from yesterday, just show 'Yesterday'
* - if it's from the same week, just show the weekday
* - otherwise, show just the date
*/
/// A date/time formatter that takes into account the current date/time:
/// - if it's from today, just show the time
/// - if it's from yesterday, just show 'Yesterday'
/// - if it's from the same week, just show the weekday
/// - otherwise, show just the date
static String toRecentTimeString(DateTime then) {
bool datesAreEqual(DateTime d1, DateTime d2) {
return (d1.year == d2.year) && (d1.month == d2.month) &&
(d1.day == d2.day);
return (d1.year == d2.year) &&
(d1.month == d2.month) &&
(d1.day == d2.day);
}
final now = new DateTime.now();
if (datesAreEqual(then, now)) {
return toHourMinutesString(new Duration(
days: 0,
hours: then.hour,
minutes: then.minute,
seconds: then.second,
milliseconds: then.millisecond));
days: 0,
hours: then.hour,
minutes: then.minute,
seconds: then.second,
milliseconds: then.millisecond)
);
}
final today = new DateTime(now.year, now.month, now.day, 0, 0, 0, 0);
......@@ -76,7 +74,7 @@ class DateUtils {
} else {
String twoDigitMonth = _twoDigits(then.month);
String twoDigitDay = _twoDigits(then.day);
return "${then.year}-${twoDigitMonth}-${twoDigitDay}";
return '${then.year}-$twoDigitMonth-$twoDigitDay';
}
}
......@@ -84,6 +82,6 @@ class DateUtils {
// TODO(jmesserly): locale specific date format
String twoDigitMonth = _twoDigits(then.month);
String twoDigitDay = _twoDigits(then.day);
return "${then.year}-${twoDigitMonth}-${twoDigitDay}";
return '${then.year}-$twoDigitMonth-$twoDigitDay';
}
}
......@@ -18,7 +18,7 @@ class FitnessItemList extends StatelessComponent {
padding: const EdgeDims.all(4.0),
items: items,
itemExtent: kFitnessItemHeight,
itemBuilder: (_, item) => item.toRow(onDismissed: onDismissed)
itemBuilder: (BuildContext context, FitnessItem item) => item.toRow(onDismissed: onDismissed)
);
}
}
......@@ -68,7 +68,7 @@ class FeedFragmentState extends State<FeedFragment> {
void _showDrawer() {
showDrawer(
context: context,
child: new Block([
child: new Block(<Widget>[
new DrawerHeader(child: new Text('Fitness')),
new DrawerItem(
icon: 'action/view_list',
......@@ -120,7 +120,7 @@ class FeedFragmentState extends State<FeedFragment> {
context: context,
placeholderKey: _snackBarPlaceholderKey,
content: new Text("Item deleted."),
actions: [new SnackBarAction(label: "UNDO", onPressed: () {
actions: <SnackBarAction>[new SnackBarAction(label: "UNDO", onPressed: () {
config.onItemCreated(item);
config.navigator.pop();
})]
......@@ -172,7 +172,7 @@ class FeedFragmentState extends State<FeedFragment> {
return new Container();
if (config.userData.items.length == 0) {
return new Row(
[new Text("No data yet.\nAdd some!", style: style)],
<Widget>[new Text("No data yet.\nAdd some!", style: style)],
justifyContent: FlexJustifyContent.center
);
}
......@@ -225,7 +225,7 @@ class AddItemDialog extends StatefulComponent {
class AddItemDialogState extends State<AddItemDialog> {
// TODO(jackson): Internationalize
static final Map<String, String> _labels = {
static final Map<String, String> _labels = <String, String>{
'/measurements/new': 'Measure',
'/meals/new': 'Eat',
};
......@@ -239,9 +239,9 @@ class AddItemDialogState extends State<AddItemDialog> {
}
Widget build(BuildContext context) {
List<Widget> menuItems = [];
for(String routeName in _labels.keys) {
menuItems.add(new DialogMenuItem([
List<Widget> menuItems = <Widget>[];
for (String routeName in _labels.keys) {
menuItems.add(new DialogMenuItem(<Widget>[
new Flexible(child: new Text(_labels[routeName])),
new Radio(value: routeName, groupValue: _addItemRoute, onChanged: _handleAddItemRouteChanged),
], onPressed: () => _handleAddItemRouteChanged(routeName)));
......@@ -252,7 +252,7 @@ class AddItemDialogState extends State<AddItemDialog> {
onDismiss: () {
Navigator.of(context).pop();
},
actions: [
actions: <Widget>[
new FlatButton(
child: new Text('CANCEL'),
onPressed: () {
......
......@@ -29,7 +29,7 @@ abstract class UserData {
class UserDataImpl extends UserData {
UserDataImpl();
List<FitnessItem> _items = [];
List<FitnessItem> _items = <FitnessItem>[];
BackupMode _backupMode;
BackupMode get backupMode => _backupMode;
......@@ -46,7 +46,7 @@ class UserDataImpl extends UserData {
List<FitnessItem> get items => _items;
void sort() {
_items.sort((a, b) => a.when.compareTo(b.when));
_items.sort((FitnessItem a, FitnessItem b) => a.when.compareTo(b.when));
}
void add(FitnessItem item) {
......@@ -69,14 +69,14 @@ class UserDataImpl extends UserData {
return mode.toString() == json['backupMode'];
});
} catch(e) {
print("Failed to load backup mode: ${e}");
print("Failed to load backup mode: $e");
}
_goalWeight = json['goalWeight'];
}
Map toJson() {
Map json = new Map();
json['items'] = _items.map((item) => item.toJson()).toList();
json['items'] = _items.map((FitnessItem item) => item.toJson()).toList();
json['backupMode'] = _backupMode.toString();
json['goalWeight'] = _goalWeight;
return json;
......@@ -132,7 +132,7 @@ class FitnessAppState extends State<FitnessApp> {
accentColor: Colors.pinkAccent[200]
),
title: 'Fitness',
routes: {
routes: <String, RouteBuilder>{
'/': (RouteArguments args) {
return new FeedFragment(
navigator: args.navigator,
......
......@@ -20,7 +20,7 @@ class MealRow extends FitnessItemRow {
Widget buildContent(BuildContext context) {
Meal meal = item;
List<Widget> children = [
List<Widget> children = <Widget>[
new Flexible(
child: new Text(
meal.description,
......@@ -65,7 +65,7 @@ class MealFragmentState extends State<MealFragment> {
icon: "navigation/close",
onPressed: config.navigator.pop),
center: new Text('New Meal'),
right: [
right: <Widget>[
// TODO(abarth): Should this be a FlatButton?
new InkWell(
onTap: _handleSave,
......@@ -85,10 +85,11 @@ class MealFragmentState extends State<MealFragment> {
Widget buildBody() {
Meal meal = new Meal(when: new DateTime.now());
// TODO(ianh): Fix Block such that we could use that here instead of rolling our own
return new ScrollableViewport(
child: new Container(
padding: const EdgeDims.all(20.0),
child: new BlockBody([
child: new BlockBody(<Widget>[
new Text(meal.displayDate),
new Input(
key: descriptionKey,
......
......@@ -6,7 +6,7 @@ part of fitness;
class Measurement extends FitnessItem {
Measurement({ DateTime when, this.weight }) : super(when: when);
Measurement.fromJson(Map json) : super.fromJson(json), weight = json['weight'];
Measurement.fromJson(Map json) : weight = json['weight'], super.fromJson(json);
final double weight;
......@@ -32,7 +32,7 @@ class MeasurementRow extends FitnessItemRow {
Widget buildContent(BuildContext context) {
Measurement measurement = item;
List<Widget> children = [
List<Widget> children = <Widget>[
new Flexible(
child: new Text(
measurement.displayWeight,
......@@ -85,7 +85,7 @@ class MeasurementDateDialogState extends State<MeasurementDateDialog> {
onChanged: _handleDateChanged
),
contentPadding: EdgeDims.zero,
actions: [
actions: <Widget>[
new FlatButton(
child: new Text('CANCEL'),
onPressed: () {
......@@ -140,7 +140,7 @@ class MeasurementFragmentState extends State<MeasurementFragment> {
icon: "navigation/close",
onPressed: config.navigator.pop),
center: new Text('New Measurement'),
right: [
right: <Widget>[
// TODO(abarth): Should this be a FlatButton?
new InkWell(
onTap: _handleSave,
......@@ -175,12 +175,12 @@ class MeasurementFragmentState extends State<MeasurementFragment> {
// TODO(jackson): Revisit the layout of this pane to be more maintainable
return new Container(
padding: const EdgeDims.all(20.0),
child: new Column([
child: new Column(<Widget>[
new GestureDetector(
onTap: _handleDatePressed,
child: new Container(
height: 50.0,
child: new Column([
child: new Column(<Widget>[
new Text('Measurement Date'),
new Text(measurement.displayDate, style: Theme.of(context).text.caption),
], alignItems: FlexAlignItems.start)
......
......@@ -74,7 +74,7 @@ class SettingsFragmentState extends State<SettingsFragment> {
onDismiss: () {
Navigator.of(context).pop();
},
actions: [
actions: <Widget>[
new FlatButton(
child: new Text('CANCEL'),
onPressed: () {
......@@ -94,20 +94,21 @@ class SettingsFragmentState extends State<SettingsFragment> {
}
Widget buildSettingsPane(BuildContext context) {
// TODO(ianh): Make Block capable of doing this
return new ScrollableViewport(
child: new Container(
padding: const EdgeDims.symmetric(vertical: 20.0),
child: new BlockBody([
child: new BlockBody(<Widget>[
new DrawerItem(
onPressed: () { _handleBackupChanged(!(config.userData.backupMode == BackupMode.enabled)); },
child: new Row([
child: new Row(<Widget>[
new Flexible(child: new Text('Back up data to the cloud')),
new Switch(value: config.userData.backupMode == BackupMode.enabled, onChanged: _handleBackupChanged),
])
),
new DrawerItem(
onPressed: () => _handleGoalWeightPressed(),
child: new Column([
child: new Column(<Widget>[
new Text('Goal Weight'),
new Text(goalWeightText, style: Theme.of(context).text.caption),
],
......
......@@ -18,7 +18,7 @@ SpriteSheet _spriteSheet;
main() async {
_images = new ImageMap(_bundle);
await _images.load([
await _images.load(<String>[
'assets/checker.png',
'assets/line_effects.png'
]);
......@@ -45,7 +45,7 @@ class TestAppState extends State<TestApp> {
TestBed _testBed;
int _selectedLine = 0;
List<String> _labelTexts = [
List<String> _labelTexts = <String>[
"Colored",
"Smoke",
"Electric",
......@@ -56,14 +56,14 @@ class TestAppState extends State<TestApp> {
return new MaterialApp(
title: 'EffectLine Demo',
theme: _theme,
routes: {
routes: <String, RouteBuilder>{
'/': _buildColumn
}
);
}
Column _buildColumn(RouteArguments args) {
return new Column([
return new Column(<Widget>[
new Flexible(child: _buildSpriteWidget()),
_buildTabBar()
]);
......@@ -82,10 +82,9 @@ class TestAppState extends State<TestApp> {
}
List<TabLabel> _buildTabLabels() {
List<TabLabel> labels = [];
for(String text in _labelTexts) {
List<TabLabel> labels = <TabLabel>[];
for (String text in _labelTexts)
labels.add(new TabLabel(text: text));
}
return labels;
}
......@@ -168,7 +167,8 @@ class TestBed extends NodeWithSize {
}
bool handleEvent(SpriteBoxEvent event) {
if (event.type == "pointerdown") _line.points = [];
if (event.type == "pointerdown")
_line.points = <Point>[];
if (event.type == "pointerdown" || event.type == "pointermove") {
Point pos = convertPointToNodeSpace(event.boxPosition);
......
part of game;
typedef void PointSetterCallback(Point value);
class ActionCircularMove extends ActionInterval {
ActionCircularMove(this.setter, this.center, this.radius, this.startAngle, this.clockWise, double duration) : super (duration);
final Function setter;
final PointSetterCallback setter;
final Point center;
final double radius;
final double startAngle;
......@@ -21,7 +23,7 @@ class ActionCircularMove extends ActionInterval {
class ActionOscillate extends ActionInterval {
ActionOscillate(this.setter, this.center, this.radius, double duration) : super(duration);
final Function setter;
final PointSetterCallback setter;
final Point center;
final double radius;
......
......@@ -31,7 +31,7 @@ class ExplosionBig extends Explosion {
ParticleSystem particlesFire = new ParticleSystem(
sheet["fire_particle.png"],
colorSequence: new ColorSequence([new Color(0xffffff33), new Color(0xffff3333), new Color(0x00ff3333)], [0.0, 0.5, 1.0]),
colorSequence: new ColorSequence(<Color>[new Color(0xffffff33), new Color(0xffff3333), new Color(0x00ff3333)], <double>[0.0, 0.5, 1.0]),
numParticlesToEmit: 25,
emissionRate: 1000.0,
startSize: 0.5,
......@@ -48,32 +48,32 @@ class ExplosionBig extends Explosion {
addChild(particlesFire);
// Add ring
Sprite sprtRing = new Sprite(sheet["explosion_ring.png"]);
sprtRing.transferMode = ui.TransferMode.plus;
addChild(sprtRing);
Sprite spriteRing = new Sprite(sheet["explosion_ring.png"]);
spriteRing.transferMode = ui.TransferMode.plus;
addChild(spriteRing);
Action scale = new ActionTween( (a) => sprtRing.scale = a, 0.2, 1.0, 0.75);
Action scaleAndRemove = new ActionSequence([scale, new ActionRemoveNode(sprtRing)]);
Action fade = new ActionTween( (a) => sprtRing.opacity = a, 1.0, 0.0, 0.75);
Action scale = new ActionTween((double a) { spriteRing.scale = a; }, 0.2, 1.0, 0.75);
Action scaleAndRemove = new ActionSequence(<Action>[scale, new ActionRemoveNode(spriteRing)]);
Action fade = new ActionTween((double a) { spriteRing.opacity = a; }, 1.0, 0.0, 0.75);
actions.run(scaleAndRemove);
actions.run(fade);
// Add streaks
for (int i = 0; i < 5; i++) {
Sprite sprtFlare = new Sprite(sheet["explosion_flare.png"]);
sprtFlare.pivot = new Point(0.3, 1.0);
sprtFlare.scaleX = 0.3;
sprtFlare.transferMode = ui.TransferMode.plus;
sprtFlare.rotation = randomDouble() * 360.0;
addChild(sprtFlare);
Sprite spriteFlare = new Sprite(sheet["explosion_flare.png"]);
spriteFlare.pivot = new Point(0.3, 1.0);
spriteFlare.scaleX = 0.3;
spriteFlare.transferMode = ui.TransferMode.plus;
spriteFlare.rotation = randomDouble() * 360.0;
addChild(spriteFlare);
double multiplier = randomDouble() * 0.3 + 1.0;
Action scale = new ActionTween( (a) => sprtFlare.scaleY = a, 0.3 * multiplier, 0.8, 0.75 * multiplier);
Action scaleAndRemove = new ActionSequence([scale, new ActionRemoveNode(sprtFlare)]);
Action fadeIn = new ActionTween( (a) => sprtFlare.opacity = a, 0.0, 1.0, 0.25 * multiplier);
Action fadeOut = new ActionTween( (a) => sprtFlare.opacity = a, 1.0, 0.0, 0.5 * multiplier);
Action fadeInOut = new ActionSequence([fadeIn, fadeOut]);
Action scale = new ActionTween((double a) { spriteFlare.scaleY = a; }, 0.3 * multiplier, 0.8, 0.75 * multiplier);
Action scaleAndRemove = new ActionSequence(<Action>[scale, new ActionRemoveNode(spriteFlare)]);
Action fadeIn = new ActionTween((double a) { spriteFlare.opacity = a; }, 0.0, 1.0, 0.25 * multiplier);
Action fadeOut = new ActionTween((double a) { spriteFlare.opacity = a; }, 1.0, 0.0, 0.5 * multiplier);
Action fadeInOut = new ActionSequence(<Action>[fadeIn, fadeOut]);
actions.run(scaleAndRemove);
actions.run(fadeInOut);
}
......@@ -96,14 +96,14 @@ class ExplosionMini extends Explosion {
rotationEnd = -rotationEnd;
}
ActionTween rotate = new ActionTween((a) => star.rotation = a, rotationStart, rotationEnd, 0.2);
ActionTween rotate = new ActionTween((double a) { star.rotation = a; }, rotationStart, rotationEnd, 0.2);
actions.run(rotate);
ActionTween fade = new ActionTween((a) => star.opacity = a, 1.0, 0.0, 0.2);
ActionTween fade = new ActionTween((double a) { star.opacity = a; }, 1.0, 0.0, 0.2);
actions.run(fade);
}
ActionSequence seq = new ActionSequence([new ActionDelay(0.2), new ActionRemoveNode(this)]);
ActionSequence seq = new ActionSequence(<Action>[new ActionDelay(0.2), new ActionRemoveNode(this)]);
actions.run(seq);
}
}
......@@ -2,8 +2,8 @@ part of game;
class Flash extends NodeWithSize {
Flash(Size size, this.duration) : super(size) {
ActionTween fade = new ActionTween((a) => _opacity = a, 1.0, 0.0, duration);
ActionSequence seq = new ActionSequence([fade, new ActionRemoveNode(this)]);
ActionTween fade = new ActionTween((double a) { _opacity = a; }, 1.0, 0.0, duration);
ActionSequence seq = new ActionSequence(<Action>[fade, new ActionRemoveNode(this)]);
actions.run(seq);
}
......
......@@ -8,6 +8,8 @@ final int _chunksPerLevel = 9;
final bool _drawDebug = false;
typedef void GameOverCallback(int score);
class GameDemoNode extends NodeWithSize {
GameDemoNode(
......@@ -66,7 +68,7 @@ class GameDemoNode extends NodeWithSize {
SoundEffectPlayer _effectPlayer = SoundEffectPlayer.sharedInstance();
// Callback
Function _gameOverCallback;
GameOverCallback _gameOverCallback;
// Game screen nodes
Node _gameScreen;
......@@ -133,12 +135,12 @@ class GameDemoNode extends NodeWithSize {
if (_gameOver) return;
// Check for collisions between lasers and objects that can take damage
List<Laser> lasers = [];
List<Laser> lasers = <Laser>[];
for (Node node in _level.children) {
if (node is Laser) lasers.add(node);
}
List<GameObject> damageables = [];
List<GameObject> damageables = <GameObject>[];
for (Node node in _level.children) {
if (node is GameObject && node.canBeDamaged) damageables.add(node);
}
......@@ -154,7 +156,7 @@ class GameDemoNode extends NodeWithSize {
}
// Check for collsions between ship and objects that can damage the ship
List<Node> nodes = new List.from(_level.children);
List<Node> nodes = new List<Node>.from(_level.children);
for (Node node in nodes) {
if (node is GameObject && node.canDamageShip) {
if (node.collidingWith(_level.ship)) {
......
This diff is collapsed.
......@@ -23,7 +23,7 @@ final AssetBundle _bundle = _initBundle();
ImageMap _imageMap;
SpriteSheet _spriteSheet;
SpriteSheet _spriteSheetUI;
Map<String,SoundEffect> _sounds = {};
Map<String, SoundEffect> _sounds = <String, SoundEffect>{};
main() async {
_imageMap = new ImageMap(_bundle);
......@@ -31,7 +31,7 @@ main() async {
// Use a list to wait on all loads in parallel just before starting the app.
List loads = [];
loads.add(_imageMap.load([
loads.add(_imageMap.load(<String>[
'assets/nebula.png',
'assets/sprites.png',
'assets/starfield.png',
......@@ -84,7 +84,7 @@ class GameDemoState extends State<GameDemo> {
return new MaterialApp(
title: 'Asteroids',
theme: _theme,
routes: {
routes: <String, RouteBuilder>{
'/': _buildMainScene,
'/game': _buildGameScene
}
......@@ -96,9 +96,9 @@ class GameDemoState extends State<GameDemo> {
}
Widget _buildMainScene(RouteArguments args) {
return new Stack([
return new Stack(<Widget>[
new SpriteWidget(new MainScreenBackground(), SpriteBoxTransformMode.fixedWidth),
new Column([
new Column(<Widget>[
new TextureButton(
onPressed: () {
_game = new GameDemoNode(
......@@ -106,8 +106,8 @@ class GameDemoState extends State<GameDemo> {
_spriteSheet,
_spriteSheetUI,
_sounds,
(lastScore) {
setState(() {_lastScore = lastScore;});
(int lastScore) {
setState(() { _lastScore = lastScore; });
args.navigator.pop();
}
);
......@@ -141,7 +141,7 @@ class TextureButton extends StatefulComponent {
this.height: 128.0
}) : super(key: key);
final Function onPressed;
final GestureTapCallback onPressed;
final Texture texture;
final Texture textureDown;
final double width;
......
......@@ -3,26 +3,26 @@ part of game;
class PlayerState extends Node {
PlayerState(this._sheetUI, this._sheetGame) {
// Score display
_sprtBgScore = new Sprite(_sheetUI["scoreboard.png"]);
_sprtBgScore.pivot = new Point(1.0, 0.0);
_sprtBgScore.scale = 0.35;
_sprtBgScore.position = new Point(240.0, 10.0);
addChild(_sprtBgScore);
_spriteBackgroundScore = new Sprite(_sheetUI["scoreboard.png"]);
_spriteBackgroundScore.pivot = new Point(1.0, 0.0);
_spriteBackgroundScore.scale = 0.35;
_spriteBackgroundScore.position = new Point(240.0, 10.0);
addChild(_spriteBackgroundScore);
_scoreDisplay = new ScoreDisplay(_sheetUI);
_scoreDisplay.position = new Point(-13.0, 49.0);
_sprtBgScore.addChild(_scoreDisplay);
_spriteBackgroundScore.addChild(_scoreDisplay);
// Coin display
_sprtBgCoins = new Sprite(_sheetUI["coinboard.png"]);
_sprtBgCoins.pivot = new Point(1.0, 0.0);
_sprtBgCoins.scale = 0.35;
_sprtBgCoins.position = new Point(105.0, 10.0);
addChild(_sprtBgCoins);
_spriteBackgroundCoins = new Sprite(_sheetUI["coinboard.png"]);
_spriteBackgroundCoins.pivot = new Point(1.0, 0.0);
_spriteBackgroundCoins.scale = 0.35;
_spriteBackgroundCoins.position = new Point(105.0, 10.0);
addChild(_spriteBackgroundCoins);
_coinDisplay = new ScoreDisplay(_sheetUI);
_coinDisplay.position = new Point(-13.0, 49.0);
_sprtBgCoins.addChild(_coinDisplay);
_spriteBackgroundCoins.addChild(_coinDisplay);
}
final SpriteSheet _sheetUI;
......@@ -38,16 +38,16 @@ class PlayerState extends Node {
EnemyBoss boss;
Sprite _sprtBgScore;
Sprite _spriteBackgroundScore;
ScoreDisplay _scoreDisplay;
Sprite _sprtBgCoins;
Sprite _spriteBackgroundCoins;
ScoreDisplay _coinDisplay;
int get score => _scoreDisplay.score;
set score(int score) {
_scoreDisplay.score = score;
flashBgSprite(_sprtBgScore);
flashBackgroundSprite(_spriteBackgroundScore);
}
int get coins => _coinDisplay.score;
......@@ -59,26 +59,26 @@ class PlayerState extends Node {
Point middlePos = new Point((startPos.x + finalPos.x) / 2.0 + 50.0,
(startPos.y + finalPos.y) / 2.0);
List<Point> path = [startPos, middlePos, finalPos];
List<Point> path = <Point>[startPos, middlePos, finalPos];
Sprite sprt = new Sprite(_sheetGame["coin.png"]);
sprt.scale = 0.7;
Sprite sprite = new Sprite(_sheetGame["coin.png"]);
sprite.scale = 0.7;
ActionSpline spline = new ActionSpline((a) => sprt.position = a, path, 0.5);
ActionSpline spline = new ActionSpline((Point a) { sprite.position = a; }, path, 0.5);
spline.tension = 0.25;
ActionTween rotate = new ActionTween((a) => sprt.rotation = a, 0.0, 360.0, 0.5);
ActionTween scale = new ActionTween((a) => sprt.scale = a, 0.7, 1.2, 0.5);
ActionGroup group = new ActionGroup([spline, rotate, scale]);
sprt.actions.run(new ActionSequence([
ActionTween rotate = new ActionTween((double a) { sprite.rotation = a; }, 0.0, 360.0, 0.5);
ActionTween scale = new ActionTween((double a) { sprite.scale = a; }, 0.7, 1.2, 0.5);
ActionGroup group = new ActionGroup(<Action>[spline, rotate, scale]);
sprite.actions.run(new ActionSequence(<Action>[
group,
new ActionRemoveNode(sprt),
new ActionRemoveNode(sprite),
new ActionCallFunction(() {
_coinDisplay.score += 1;
flashBgSprite(_sprtBgCoins);
flashBackgroundSprite(_spriteBackgroundCoins);
})
]));
addChild(sprt);
addChild(sprite);
}
void activatePowerUp(PowerUpType type) {
......@@ -107,21 +107,25 @@ class PlayerState extends Node {
int _speedBoostFrames = 0;
bool get speedBoostActive => _speedBoostFrames > 0;
void flashBgSprite(Sprite sprt) {
sprt.actions.stopAll();
void flashBackgroundSprite(Sprite sprite) {
sprite.actions.stopAll();
ActionTween flash = new ActionTween(
(a) => sprt.colorOverlay = a,
(Color a) { sprite.colorOverlay = a; },
new Color(0x66ccfff0),
new Color(0x00ccfff0),
0.3);
sprt.actions.run(flash);
sprite.actions.run(flash);
}
void update(double dt) {
if (_shieldFrames > 0) _shieldFrames--;
if (_sideLaserFrames > 0) _sideLaserFrames--;
if (_speedLaserFrames > 0) _speedLaserFrames--;
if (_speedBoostFrames > 0) _speedBoostFrames--;
if (_shieldFrames > 0)
_shieldFrames--;
if (_sideLaserFrames > 0)
_sideLaserFrames--;
if (_speedLaserFrames > 0)
_speedLaserFrames--;
if (_speedBoostFrames > 0)
_speedBoostFrames--;
// Update speed
if (boss != null) {
......@@ -165,9 +169,9 @@ class ScoreDisplay extends Node {
double xPos = -37.0;
for (int i = scoreStr.length - 1; i >= 0; i--) {
String numStr = scoreStr.substring(i, i + 1);
Sprite numSprt = new Sprite(_sheetUI["number_$numStr.png"]);
numSprt.position = new Point(xPos, 0.0);
addChild(numSprt);
Sprite numSprite = new Sprite(_sheetUI["number_$numStr.png"]);
numSprite.position = new Point(xPos, 0.0);
addChild(numSprite);
xPos -= 37.0;
}
_dirtyScore = false;
......
part of game;
class RepeatedImage extends Node {
Sprite _sprt0;
Sprite _sprt1;
Sprite _sprite0;
Sprite _sprite1;
RepeatedImage(ui.Image image, [ui.TransferMode mode = null]) {
_sprt0 = new Sprite.fromImage(image);
_sprt0.size = new Size(1024.0, 1024.0);
_sprt0.pivot = Point.origin;
_sprt1 = new Sprite.fromImage(image);
_sprt1.size = new Size(1024.0, 1024.0);
_sprt1.pivot = Point.origin;
_sprt1.position = new Point(0.0, -1024.0);
_sprite0 = new Sprite.fromImage(image);
_sprite0.size = new Size(1024.0, 1024.0);
_sprite0.pivot = Point.origin;
_sprite1 = new Sprite.fromImage(image);
_sprite1.size = new Size(1024.0, 1024.0);
_sprite1.pivot = Point.origin;
_sprite1.position = new Point(0.0, -1024.0);
if (mode != null) {
_sprt0.transferMode = mode;
_sprt1.transferMode = mode;
_sprite0.transferMode = mode;
_sprite1.transferMode = mode;
}
addChild(_sprt0);
addChild(_sprt1);
addChild(_sprite0);
addChild(_sprite1);
}
void move(double dy) {
......
......@@ -24,10 +24,10 @@ class StarField extends NodeWithSize {
}
void addStars() {
_starPositions = [];
_starScales = [];
_colors = [];
_rects = [];
_starPositions = <Point>[];
_starScales = <double>[];
_colors = <Color>[];
_rects = <Rect>[];
size = spriteBox.visibleArea.size;
_paddedSize = new Size(size.width + _padding * 2.0,
......@@ -48,7 +48,7 @@ class StarField extends NodeWithSize {
void paint(PaintingCanvas canvas) {
// Create a transform for each star
List<ui.RSTransform> transforms = [];
List<ui.RSTransform> transforms = <ui.RSTransform>[];
for (int i = 0; i < _numStars; i++) {
ui.RSTransform transform = new ui.RSTransform(
_starScales[i],
......
......@@ -21,7 +21,7 @@ TestBedApp _app;
main() async {
_images = new ImageMap(_bundle);
await _images.load([
await _images.load(<String>[
'assets/sprites.png'
]);
......@@ -54,6 +54,5 @@ class TestBedApp extends MaterialApp {
}
class TestBed extends NodeWithSize {
TestBed() : super(new Size(1024.0, 1024.0)) {
}
TestBed() : super(new Size(1024.0, 1024.0));
}
......@@ -25,7 +25,7 @@ final ThemeData _theme = new ThemeData(
main() async {
_images = new ImageMap(_bundle);
await _images.load([
await _images.load(<String>[
'assets/sprites.png'
]);
......@@ -35,7 +35,7 @@ main() async {
runApp(new MaterialApp(
title: 'Test drawAtlas',
theme: _theme,
routes: {
routes: <String, RouteBuilder>{
'/': (RouteArguments args) {
return new SpriteWidget(
new TestDrawAtlas(),
......@@ -47,17 +47,16 @@ main() async {
}
class TestDrawAtlas extends NodeWithSize {
TestDrawAtlas() : super(new Size(1024.0, 1024.0)) {
}
TestDrawAtlas() : super(new Size(1024.0, 1024.0));
void paint(PaintingCanvas canvas) {
List<RSTransform> transforms = [
List<RSTransform> transforms = <RSTransform>[
new RSTransform(1.0, 0.0, 100.0, 100.0)
];
List<Rect> rects = [
List<Rect> rects = <Rect>[
_spriteSheet["ship.png"].frame
];
List<Color> colors = [
List<Color> colors = <Color>[
new Color(0xffffffff)
];
......
......@@ -26,7 +26,7 @@ final ThemeData _theme = new ThemeData(
main() async {
_images = new ImageMap(_bundle);
await _images.load([
await _images.load(<String>[
'assets/sprites.png'
]);
......@@ -36,21 +36,19 @@ main() async {
runApp(new MaterialApp(
title: 'Test Sprite Performance',
theme: _theme,
routes: {
'/': (RouteArguments args) {
return new SpriteWidget(new TestPerformance());
}
routes: <String, RouteBuilder>{
'/': (RouteArguments args) => new SpriteWidget(new TestPerformance())
}
));
}
class TestPerformance extends NodeWithSize {
TestPerformance() : super(new Size(1024.0, 1024.0));
final int numFramesPerTest = 100;
final int numTests = 5;
TestPerformance() : super(new Size(1024.0, 1024.0)) {
}
int test = 0;
int frame = 0;
int testStartTime;
......@@ -116,18 +114,18 @@ class TestPerformanceParticles extends PerformanceTest {
for (int x = 0; x < grid; x++) {
for (int y = 0; y < grid; y++) {
ParticleSystem particles = new ParticleSystem(
_spriteSheet["explosion_particle.png"],
rotateToMovement: true,
startRotation:90.0,
startRotationVar: 0.0,
endRotation: 90.0,
startSize: 0.3,
startSizeVar: 0.1,
endSize: 0.3,
endSizeVar: 0.1,
emissionRate:100.0,
greenVar: 127,
redVar: 127
_spriteSheet["explosion_particle.png"],
rotateToMovement: true,
startRotation:90.0,
startRotationVar: 0.0,
endRotation: 90.0,
startSize: 0.3,
startSizeVar: 0.1,
endSize: 0.3,
endSizeVar: 0.1,
emissionRate:100.0,
greenVar: 127,
redVar: 127
);
particles.position = new Point(x * 1024.0 / (grid - 1), y * 1024.0 / (grid - 1));
addChild(particles);
......@@ -144,23 +142,22 @@ class TestPerformanceSprites extends PerformanceTest {
TestPerformanceSprites() {
for (int x = 0; x < grid; x++) {
for (int y = 0; y < grid; y++) {
Sprite sprt = new Sprite(_spriteSheet["asteroid_big_1.png"]);
sprt.scale = 1.0;
sprt.position = new Point(x * 1024.0 / (grid - 1), y * 1024.0 / (grid - 1));
addChild(sprt);
//sprt.actions.run(new ActionRepeatForever(new ActionTween((a) => sprt.rotation = a, 0.0, 360.0, 1.0)));
Sprite sprite = new Sprite(_spriteSheet["asteroid_big_1.png"]);
sprite.scale = 1.0;
sprite.position = new Point(x * 1024.0 / (grid - 1), y * 1024.0 / (grid - 1));
addChild(sprite);
}
}
Sprite sprt = new Sprite(_spriteSheet["asteroid_big_1.png"]);
sprt.position = new Point(512.0, 512.0);
addChild(sprt);
Sprite sprite = new Sprite(_spriteSheet["asteroid_big_1.png"]);
sprite.position = new Point(512.0, 512.0);
addChild(sprite);
}
void update(double dt) {
for (Sprite sprt in children) {
sprt.rotation += 1;
for (Node child in children) {
final Sprite sprite = child;
sprite.rotation += 1;
}
}
}
......@@ -173,23 +170,22 @@ class TestPerformanceSprites2 extends PerformanceTest {
TestPerformanceSprites2() {
for (int x = 12; x < grid - 12; x++) {
for (int y = 0; y < grid; y++) {
Sprite sprt = new Sprite(_spriteSheet["asteroid_big_1.png"]);
sprt.scale = 1.0;
sprt.position = new Point(x * 1024.0 / (grid - 1), y * 1024.0 / (grid - 1));
addChild(sprt);
//sprt.actions.run(new ActionRepeatForever(new ActionTween((a) => sprt.rotation = a, 0.0, 360.0, 1.0)));
Sprite sprite = new Sprite(_spriteSheet["asteroid_big_1.png"]);
sprite.scale = 1.0;
sprite.position = new Point(x * 1024.0 / (grid - 1), y * 1024.0 / (grid - 1));
addChild(sprite);
}
}
Sprite sprt = new Sprite(_spriteSheet["asteroid_big_1.png"]);
sprt.position = new Point(512.0, 512.0);
addChild(sprt);
Sprite sprite = new Sprite(_spriteSheet["asteroid_big_1.png"]);
sprite.position = new Point(512.0, 512.0);
addChild(sprite);
}
void update(double dt) {
for (Sprite sprt in children) {
sprt.rotation += 1;
for (Node child in children) {
final Sprite sprite = child;
sprite.rotation += 1;
}
}
}
......@@ -200,7 +196,7 @@ class TestPerformanceAtlas extends PerformanceTest {
final int grid = 100;
double rotation = 0.0;
List<Rect> rects = [];
List<Rect> rects = <Rect>[];
Paint cachedPaint = new Paint()
..filterQuality = ui.FilterQuality.low
..isAntiAlias = false;
......@@ -216,7 +212,7 @@ class TestPerformanceAtlas extends PerformanceTest {
void paint(PaintingCanvas canvas) {
// Setup transforms
List<ui.RSTransform> transforms = [];
List<ui.RSTransform> transforms = <ui.RSTransform>[];
for (int x = 0; x < grid; x++) {
for (int y = 0; y < grid; y++) {
......@@ -253,7 +249,7 @@ class TestPerformanceAtlas2 extends PerformanceTest {
final int grid = 100;
double rotation = 0.0;
List<Rect> rects = [];
List<Rect> rects = <Rect>[];
Paint cachedPaint = new Paint()
..filterQuality = ui.FilterQuality.low
..isAntiAlias = false;
......@@ -269,7 +265,7 @@ class TestPerformanceAtlas2 extends PerformanceTest {
void paint(PaintingCanvas canvas) {
// Setup transforms
List<ui.RSTransform> transforms = [];
List<ui.RSTransform> transforms = <ui.RSTransform>[];
for (int x = 12; x < grid - 12; x++) {
for (int y = 0; y < grid; y++) {
......
......@@ -15,10 +15,9 @@ void runTest() {
timeStart = new DateTime.now().millisecondsSinceEpoch;
// Create systems
List<TestParticleSystem> systems = [];
for (int i = 0; i < numSystems; i++) {
List<TestParticleSystem> systems = <TestParticleSystem>[];
for (int i = 0; i < numSystems; i++)
systems.add(new TestParticleSystem());
}
int timeAfterCreate = new DateTime.now().millisecondsSinceEpoch;
print("TIME creation ${(timeAfterCreate - timeStart) / 1000.0}");
......
......@@ -21,7 +21,7 @@ SpriteSheet _spriteSheet;
main() async {
_images = new ImageMap(_bundle);
await _images.load([
await _images.load(<String>[
'assets/sprites.png'
]);
......@@ -34,7 +34,7 @@ main() async {
brightness: ThemeBrightness.light,
primarySwatch: Colors.purple
),
routes: {
routes: <String, RouteBuilder>{
'/': (RouteArguments args) {
return new SpriteWidget(
new TestBed(),
......@@ -73,9 +73,9 @@ class TestBed extends NodeWithSize {
_world.addContactCallback(myCallback, "obstacle", "ship", PhysicsContactType.begin);
// Animate group
ActionSequence seq = new ActionSequence([
new ActionTween((a) => _group.position = a, new Point(-256.0, 0.0), new Point(256.0, 0.0), 1.0, Curves.easeInOut),
new ActionTween((a) => _group.position = a, new Point(256.0, 0.0), new Point(-256.0, 0.0), 1.0, Curves.easeInOut)
ActionSequence seq = new ActionSequence(<Action>[
new ActionTween((Point a) { _group.position = a; }, new Point(-256.0, 0.0), new Point(256.0, 0.0), 1.0, Curves.easeInOut),
new ActionTween((Point a) { _group.position = a; }, new Point(256.0, 0.0), new Point(-256.0, 0.0), 1.0, Curves.easeInOut)
]);
_group.actions.run(new ActionRepeatForever(seq));
......@@ -115,7 +115,7 @@ class TestBed extends NodeWithSize {
shipB.opacity = 0.3;
shipB.position = new Point(40.0, 0.0);
shipB.size = new Size(64.0, 64.0);
shipB.physicsBody = new PhysicsBody(new PhysicsShapePolygon([new Point(-25.0, -25.0), new Point(25.0, -25.0), new Point(25.0, 25.0), new Point(-25.0, 25.0)]),
shipB.physicsBody = new PhysicsBody(new PhysicsShapePolygon(<Point>[new Point(-25.0, -25.0), new Point(25.0, -25.0), new Point(25.0, 25.0), new Point(-25.0, 25.0)]),
friction: 0.5,
restitution: 0.5,
tag: "ship"
......
......@@ -30,8 +30,8 @@ const List<Color> textColors = const <Color>[
const Color(0xFF000000),
];
final List<TextStyle> textStyles = textColors.map((color) {
return new TextStyle(color: color, fontWeight: bold, textAlign: TextAlign.center);
final List<TextStyle> textStyles = textColors.map((Color color) {
return new TextStyle(color: color, fontWeight: bold, textAlign: TextAlign.center);
}).toList();
enum CellState { covered, exploded, cleared, flagged, shown }
......@@ -64,10 +64,10 @@ class MineDiggerState extends State<MineDigger> {
hasWon = false;
detectedCount = 0;
// Initialize matrices.
cells = new List<List>.generate(rows, (int row) {
cells = new List<List<bool>>.generate(rows, (int row) {
return new List<bool>.filled(cols, false);
});
uiState = new List<List>.generate(rows, (int row) {
uiState = new List<List<CellState>>.generate(rows, (int row) {
return new List<CellState>.filled(cols, CellState.covered);
});
// Place the mines.
......
......@@ -26,13 +26,14 @@ ui.Picture paint(ui.Rect paintBounds) {
canvas.rotate(math.PI/4.0);
ui.Gradient yellowBlue = new ui.Gradient.linear(
[new ui.Point(-radius, -radius), new ui.Point(0.0, 0.0)],
[const ui.Color(0xFFFFFF00), const ui.Color(0xFF0000FF)]);
<ui.Point>[new ui.Point(-radius, -radius), new ui.Point(0.0, 0.0)],
<ui.Color>[const ui.Color(0xFFFFFF00), const ui.Color(0xFF0000FF)]
);
canvas.drawRect(new ui.Rect.fromLTRB(-radius, -radius, radius, radius),
new ui.Paint()..shader = yellowBlue);
new ui.Paint()..shader = yellowBlue);
// Scale x and y by 0.5.
var scaleMatrix = new Float64List.fromList([
Float64List scaleMatrix = new Float64List.fromList(<double>[
0.5, 0.0, 0.0, 0.0,
0.0, 0.5, 0.0, 0.0,
0.0, 0.0, 1.0, 0.0,
......@@ -45,35 +46,47 @@ ui.Picture paint(ui.Rect paintBounds) {
canvas.restore();
canvas.translate(0.0, 50.0);
var builder = new ui.LayerDrawLooperBuilder()
..addLayerOnTop(
new ui.DrawLooperLayerInfo()
..setOffset(const ui.Offset(150.0, 0.0))
..setColorMode(ui.TransferMode.src)
..setPaintBits(ui.PaintBits.all),
new ui.Paint()
..color = const ui.Color.fromARGB(128, 255, 255, 0)
..colorFilter = new ui.ColorFilter.mode(
const ui.Color.fromARGB(128, 0, 0, 255), ui.TransferMode.srcIn)
..maskFilter = new ui.MaskFilter.blur(
ui.BlurStyle.normal, 3.0, highQuality: true))
..addLayerOnTop(
new ui.DrawLooperLayerInfo()
..setOffset(const ui.Offset(75.0, 75.0))
..setColorMode(ui.TransferMode.src)
..setPaintBits(ui.PaintBits.shader),
new ui.Paint()
..shader = new ui.Gradient.radial(
new ui.Point(0.0, 0.0), radius/3.0,
[const ui.Color(0xFFFFFF00), const ui.Color(0xFFFF0000)],
null, ui.TileMode.mirror)
// Since we're don't set ui.PaintBits.maskFilter, this has no effect.
..maskFilter = new ui.MaskFilter.blur(
ui.BlurStyle.normal, 50.0, highQuality: true))
..addLayerOnTop(
new ui.DrawLooperLayerInfo()..setOffset(const ui.Offset(225.0, 75.0)),
// Since this layer uses a DST color mode, this has no effect.
new ui.Paint()..color = const ui.Color.fromARGB(128, 255, 0, 0));
ui.LayerDrawLooperBuilder builder = new ui.LayerDrawLooperBuilder()
..addLayerOnTop(
new ui.DrawLooperLayerInfo()
..setOffset(const ui.Offset(150.0, 0.0))
..setColorMode(ui.TransferMode.src)
..setPaintBits(ui.PaintBits.all),
new ui.Paint()
..color = const ui.Color.fromARGB(128, 255, 255, 0)
..colorFilter = new ui.ColorFilter.mode(
const ui.Color.fromARGB(128, 0, 0, 255),
ui.TransferMode.srcIn
)
..maskFilter = new ui.MaskFilter.blur(
ui.BlurStyle.normal, 3.0, highQuality: true
)
)
..addLayerOnTop(
new ui.DrawLooperLayerInfo()
..setOffset(const ui.Offset(75.0, 75.0))
..setColorMode(ui.TransferMode.src)
..setPaintBits(ui.PaintBits.shader),
new ui.Paint()
..shader = new ui.Gradient.radial(
new ui.Point(0.0, 0.0), radius/3.0,
<ui.Color>[
const ui.Color(0xFFFFFF00),
const ui.Color(0xFFFF0000)
],
null,
ui.TileMode.mirror
)
// Since we're don't set ui.PaintBits.maskFilter, this has no effect.
..maskFilter = new ui.MaskFilter.blur(
ui.BlurStyle.normal, 50.0, highQuality: true
)
)
..addLayerOnTop(
new ui.DrawLooperLayerInfo()..setOffset(const ui.Offset(225.0, 75.0)),
// Since this layer uses a DST color mode, this has no effect.
new ui.Paint()..color = const ui.Color.fromARGB(128, 255, 0, 0)
);
paint.drawLooper = builder.build();
canvas.drawCircle(ui.Point.origin, radius, paint);
......
......@@ -7,34 +7,34 @@ import 'package:flutter/rendering.dart';
import 'lib/solid_color_box.dart';
void main() {
var table = new RenderFlex(direction: FlexDirection.vertical);
RenderFlex table = new RenderFlex(direction: FlexDirection.vertical);
for(FlexAlignItems alignItems in FlexAlignItems.values) {
for (FlexAlignItems alignItems in FlexAlignItems.values) {
TextStyle style = const TextStyle(color: const Color(0xFF000000));
RenderParagraph paragraph = new RenderParagraph(new StyledTextSpan(style, [new PlainTextSpan("${alignItems}")]));
RenderParagraph paragraph = new RenderParagraph(new StyledTextSpan(style, <TextSpan>[new PlainTextSpan("$alignItems")]));
table.add(new RenderPadding(child: paragraph, padding: new EdgeDims.only(top: 20.0)));
var row = new RenderFlex(alignItems: alignItems, textBaseline: TextBaseline.alphabetic);
RenderFlex row = new RenderFlex(alignItems: alignItems, textBaseline: TextBaseline.alphabetic);
style = new TextStyle(fontSize: 15.0, color: const Color(0xFF000000));
row.add(new RenderDecoratedBox(
decoration: new BoxDecoration(backgroundColor: const Color(0x7FFFCCCC)),
child: new RenderParagraph(new StyledTextSpan(style, [new PlainTextSpan('foo foo foo')]))
child: new RenderParagraph(new StyledTextSpan(style, <TextSpan>[new PlainTextSpan('foo foo foo')]))
));
style = new TextStyle(fontSize: 10.0, color: const Color(0xFF000000));
row.add(new RenderDecoratedBox(
decoration: new BoxDecoration(backgroundColor: const Color(0x7FCCFFCC)),
child: new RenderParagraph(new StyledTextSpan(style, [new PlainTextSpan('foo foo foo')]))
child: new RenderParagraph(new StyledTextSpan(style, <TextSpan>[new PlainTextSpan('foo foo foo')]))
));
var subrow = new RenderFlex(alignItems: alignItems, textBaseline: TextBaseline.alphabetic);
RenderFlex subrow = new RenderFlex(alignItems: alignItems, textBaseline: TextBaseline.alphabetic);
style = new TextStyle(fontSize: 25.0, color: const Color(0xFF000000));
subrow.add(new RenderDecoratedBox(
decoration: new BoxDecoration(backgroundColor: const Color(0x7FCCCCFF)),
child: new RenderParagraph(new StyledTextSpan(style, [new PlainTextSpan('foo foo foo foo')]))
child: new RenderParagraph(new StyledTextSpan(style, <TextSpan>[new PlainTextSpan('foo foo foo foo')]))
));
subrow.add(new RenderSolidColorBox(const Color(0x7FCCFFFF), desiredSize: new Size(30.0, 40.0)));
row.add(subrow);
table.add(row);
row.parentData.flex = 1;
final FlexParentData rowParentData = row.parentData;
rowParentData.flex = 1;
}
RenderDecoratedBox root = new RenderDecoratedBox(
......
......@@ -12,7 +12,7 @@ RenderBox getBox(double lh) {
new TextStyle(
color: const Color(0xFF0000A0)
),
[
<TextSpan>[
new PlainTextSpan('test'),
new StyledTextSpan(
new TextStyle(
......@@ -20,7 +20,7 @@ RenderBox getBox(double lh) {
fontSize: 50.0,
height: lh
),
[new PlainTextSpan('مرحبا Hello')]
<TextSpan>[new PlainTextSpan('مرحبا Hello')]
)
]
)
......@@ -62,7 +62,7 @@ RenderBox getBox(double lh) {
}
void main() {
RenderBox root = new RenderFlex(children: [
RenderBox root = new RenderFlex(children: <RenderBox>[
new RenderConstrainedBox(
additionalConstraints: new BoxConstraints.tightFor(height: 50.0)
),
......
......@@ -7,8 +7,8 @@ import 'dart:ui' as ui;
import 'package:flutter/rendering.dart';
void main() {
var root = new RenderFlex(
children: [
RenderFlex root = new RenderFlex(
children: <RenderBox>[
new RenderPadding(
padding: new EdgeDims.all(10.0),
child: new RenderConstrainedBox(
......
......@@ -46,7 +46,8 @@ RenderBox buildFlexExample() {
);
flexRoot.add(decoratedRow);
decoratedRow.parentData.flex = 3;
final FlexParentData decoratedRowParentData = decoratedRow.parentData;
decoratedRowParentData.flex = 3;
return root;
}
......
......@@ -33,7 +33,7 @@ class RenderImageGrow extends RenderImage {
RenderImageGrow image;
Map<int, Touch> touches = new Map();
final Map<int, Touch> touches = <int, Touch>{};
void handleEvent(event) {
if (event is ui.PointerEvent) {
if (event.type == 'pointermove')
......@@ -64,8 +64,7 @@ void main() {
image.image = dartLogo;
});
var padding = new RenderPadding(padding: const EdgeDims.all(10.0), child: image);
row.add(padding);
row.add(new RenderPadding(padding: const EdgeDims.all(10.0), child: image));
RenderFlex column = new RenderFlex(direction: FlexDirection.vertical);
......@@ -79,13 +78,14 @@ porchetta bacon kevin meatball meatloaf pig beef ribs chicken. Brisket ribeye
andouille leberkas capicola meatloaf. Chicken pig ball tip pork picanha bresaola
alcatra. Pork pork belly alcatra, flank chuck drumstick biltong doner jowl.
Pancetta meatball tongue tenderloin rump tail jowl boudin.""";
var text = new StyledTextSpan(
new TextStyle(color: const Color(0xFF009900)),
[new PlainTextSpan(meatyString)]);
padding = new RenderPadding(
padding: const EdgeDims.all(10.0),
child: new RenderParagraph(text));
column.add(padding);
TextSpan text = new StyledTextSpan(
new TextStyle(color: const Color(0xFF009900)),
<TextSpan>[new PlainTextSpan(meatyString)]
);
column.add(new RenderPadding(
padding: const EdgeDims.all(10.0),
child: new RenderParagraph(text)
));
// Bottom cell
addFlexChildSolidColor(column, const Color(0xFF0081C6), flex: 2);
......
......@@ -14,15 +14,16 @@ void main() {
var table = new RenderFlex(direction: FlexDirection.vertical);
void addRow(FlexJustifyContent justify) {
RenderParagraph paragraph = new RenderParagraph(new StyledTextSpan(style, [new PlainTextSpan("${justify}")]));
RenderParagraph paragraph = new RenderParagraph(new StyledTextSpan(style, <TextSpan>[new PlainTextSpan("$justify")]));
table.add(new RenderPadding(child: paragraph, padding: new EdgeDims.only(top: 20.0)));
var row = new RenderFlex(direction: FlexDirection.horizontal);
RenderFlex row = new RenderFlex(direction: FlexDirection.horizontal);
row.add(new RenderSolidColorBox(const Color(0xFFFFCCCC), desiredSize: new Size(80.0, 60.0)));
row.add(new RenderSolidColorBox(const Color(0xFFCCFFCC), desiredSize: new Size(64.0, 60.0)));
row.add(new RenderSolidColorBox(const Color(0xFFCCCCFF), desiredSize: new Size(160.0, 60.0)));
row.justifyContent = justify;
table.add(row);
row.parentData.flex = 1;
final FlexParentData rowParentData = row.parentData;
rowParentData.flex = 1;
}
addRow(FlexJustifyContent.start);
......
......@@ -19,7 +19,7 @@ Color randomColor() {
}
RenderBox buildGridExample() {
List<RenderBox> children = new List.generate(30, (_) => new RenderSolidColorBox(randomColor()));
List<RenderBox> children = new List<RenderBox>.generate(30, (_) => new RenderSolidColorBox(randomColor()));
return new RenderGrid(children: children, maxChildExtent: 100.0);
}
......
......@@ -14,9 +14,11 @@ void main() {
child: flexRoot
);
FlexParentData childParentData;
RenderObject child = new RenderSolidColorBox(const Color(0xFFFFFF00));
flexRoot.add(child);
FlexParentData childParentData = child.parentData;
childParentData = child.parentData;
childParentData.flex = 2;
// The internet is a beautiful place. https://baconipsum.com/
......@@ -26,9 +28,10 @@ andouille leberkas capicola meatloaf. Chicken pig ball tip pork picanha bresaola
alcatra. Pork pork belly alcatra, flank chuck drumstick biltong doner jowl.
Pancetta meatball tongue tenderloin rump tail jowl boudin.""";
var text = new StyledTextSpan(
new TextStyle(color: const Color(0xFF009900)),
[new PlainTextSpan(meatyString)]);
StyledTextSpan text = new StyledTextSpan(
new TextStyle(color: const Color(0xFF009900)),
<TextSpan>[new PlainTextSpan(meatyString)]
);
child = new RenderDecoratedBox(
decoration: new BoxDecoration(backgroundColor: const Color(0xFFFFFFFF)),
child: new RenderParagraph(text)
......
......@@ -12,7 +12,7 @@ void main() {
decoration: new BoxDecoration(
gradient: new RadialGradient(
center: Point.origin, radius: 500.0,
colors: [Colors.yellow[500], Colors.blue[500]]),
colors: <Color>[Colors.yellow[500], Colors.blue[500]]),
boxShadow: shadows[3])
);
var paddedBox = new RenderPadding(
......
......@@ -24,7 +24,7 @@ void main() {
decoration: new BoxDecoration(backgroundColor: const Color(0xFFFFFFFF))
);
RenderAutoLayout root = new RenderAutoLayout(children: [c1, c2, c3, c4]);
RenderAutoLayout root = new RenderAutoLayout(children: <RenderBox>[c1, c2, c3, c4]);
AutoLayoutParentData p1 = c1.parentData;
AutoLayoutParentData p2 = c2.parentData;
......
......@@ -7,7 +7,7 @@ import 'package:flutter/rendering.dart';
import 'package:flutter/gestures.dart';
// Material design colors. :p
List<Color> kColors = [
List<Color> kColors = <Color>[
Colors.teal[500],
Colors.amber[500],
Colors.purple[500],
......@@ -34,9 +34,7 @@ class Dot {
}
class RenderTouchDemo extends RenderBox {
Map<int, Dot> dots = new Map();
RenderTouchDemo();
final Map<int, Dot> dots = <int, Dot>{};
void handleEvent(InputEvent event, BoxHitTestEntry entry) {
if (event is PointerInputEvent) {
......@@ -49,7 +47,7 @@ class RenderTouchDemo extends RenderBox {
dots.remove(event.pointer);
break;
case 'pointercancel':
dots = new Map();
dots.clear();
break;
case 'pointermove':
dots[event.pointer].update(event);
......@@ -74,14 +72,15 @@ class RenderTouchDemo extends RenderBox {
}
void main() {
var paragraph = new RenderParagraph(new PlainTextSpan("Touch me!"));
var stack = new RenderStack(children: [
RenderParagraph paragraph = new RenderParagraph(new PlainTextSpan("Touch me!"));
RenderStack stack = new RenderStack(children: <RenderBox>[
new RenderTouchDemo(),
paragraph,
]);
// Prevent the RenderParagraph from filling the whole screen so
// that it doesn't eat events.
paragraph.parentData..top = 40.0
..left = 20.0;
final StackParentData paragraphParentData = paragraph.parentData;
paragraphParentData..top = 40.0
..left = 20.0;
new FlutterBinding(root: stack);
}
......@@ -8,7 +8,7 @@ enum _MenuItems { autorefresh, autorefreshCheckbox, add, remove }
const double _kMenuMargin = 16.0; // 24.0 on tablet
Future showStockMenu({BuildContext context, bool autorefresh, ValueChanged onAutorefreshChanged }) async {
Future showStockMenu({BuildContext context, bool autorefresh, ValueChanged<bool> onAutorefreshChanged }) async {
switch (await showMenu(
context: context,
position: new MenuPosition(
......
......@@ -48,13 +48,19 @@ class CardCollectionState extends State<CardCollection> {
48.0, 63.0, 82.0, 146.0, 60.0, 55.0, 84.0, 96.0, 50.0,
48.0, 63.0, 82.0, 146.0, 60.0, 55.0, 84.0, 96.0, 50.0
];
_cardModels = new List.generate(cardHeights.length, (i) => new CardModel(i, cardHeights[i]));
_cardModels = new List<CardModel>.generate(
cardHeights.length,
(int i) => new CardModel(i, cardHeights[i])
);
}
void _initFixedSizedCardModels() {
const int cardCount = 27;
const double cardHeight = 100.0;
_cardModels = new List.generate(cardCount, (i) => new CardModel(i, cardHeight));
_cardModels = new List<CardModel>.generate(
cardCount,
(int i) => new CardModel(i, cardHeight)
);
}
void _initCardModels() {
......@@ -72,7 +78,7 @@ class CardCollectionState extends State<CardCollection> {
double _variableSizeToSnapOffset(double scrollOffset) {
double cumulativeHeight = 0.0;
double margins = 8.0;
List<double> cumulativeHeights = _cardModels.map((card) {
List<double> cumulativeHeights = _cardModels.map((CardModel card) {
cumulativeHeight += card.height + margins;
return cumulativeHeight;
})
......@@ -112,7 +118,7 @@ class CardCollectionState extends State<CardCollection> {
context: context,
child: new IconTheme(
data: const IconThemeData(color: IconThemeColor.black),
child: new Block([
child: new Block(<Widget>[
new DrawerHeader(child: new Text('Options')),
buildDrawerCheckbox("Snap fling scrolls to center", _snapToCenter, _toggleSnapToCenter),
buildDrawerCheckbox("Fixed size cards", _fixedSizeCards, _toggleFixedSizeCards),
......@@ -168,10 +174,10 @@ class CardCollectionState extends State<CardCollection> {
Navigator.of(context).pop();
}
Widget buildDrawerCheckbox(String label, bool value, Function callback) {
Widget buildDrawerCheckbox(String label, bool value, void callback()) {
return new DrawerItem(
onPressed: callback,
child: new Row([
child: new Row(<Widget>[
new Flexible(child: new Text(label)),
new Checkbox(value: value, onChanged: (_) { callback(); })
])
......@@ -182,7 +188,7 @@ class CardCollectionState extends State<CardCollection> {
return new DrawerItem(
icon: icon,
onPressed: () { onChanged(itemValue); },
child: new Row([
child: new Row(<Widget>[
new Flexible(child: new Text(label)),
new Radio(
value: itemValue,
......@@ -197,7 +203,7 @@ class CardCollectionState extends State<CardCollection> {
return new ToolBar(
left: new IconButton(icon: "navigation/menu", onPressed: _showDrawer),
center: new Text('Swipe Away'),
right: [
right: <Widget>[
new Text(_dismissDirectionText(_dismissDirection))
]
);
......@@ -210,7 +216,7 @@ class CardCollectionState extends State<CardCollection> {
CardModel cardModel = _cardModels[index];
Widget card = new Dismissable(
direction: _dismissDirection,
onResized: () { _invalidator([index]); },
onResized: () { _invalidator(<int>[index]); },
onDismissed: () { dismissCard(cardModel); },
child: new Card(
color: Theme.of(context).primarySwatch[cardModel.color],
......@@ -272,7 +278,7 @@ class CardCollectionState extends State<CardCollection> {
child: new Container(
height: cardModel.height,
decoration: new BoxDecoration(backgroundColor: Theme.of(context).primaryColor),
child: new Row([
child: new Row(<Widget>[
leftArrowIcon,
new Flexible(child: new Text(backgroundMessage, style: backgroundTextStyle)),
rightArrowIcon
......@@ -285,7 +291,7 @@ class CardCollectionState extends State<CardCollection> {
return new IconTheme(
key: cardModel.key,
data: const IconThemeData(color: IconThemeColor.white),
child: new Stack([background, card])
child: new Stack(<Widget>[background, card])
);
}
......@@ -299,8 +305,8 @@ class CardCollectionState extends State<CardCollection> {
return new LinearGradient(
begin: Point.origin,
end: new Point(0.0, bounds.height),
colors: [const Color(0x00FFFFFF), const Color(0xFFFFFFFF)],
stops: [0.1, 0.35]
colors: <Color>[const Color(0x00FFFFFF), const Color(0xFFFFFFFF)],
stops: <double>[0.1, 0.35]
)
.createShader();
}
......@@ -327,8 +333,8 @@ class CardCollectionState extends State<CardCollection> {
}
if (_sunshine)
cardCollection = new Stack([
new Column([new NetworkImage(src: _sunshineURL)]),
cardCollection = new Stack(<Widget>[
new Column(<Widget>[new NetworkImage(src: _sunshineURL)]),
new ShaderMask(child: cardCollection, shaderCallback: _createShader)
]);
......@@ -351,7 +357,7 @@ class CardCollectionState extends State<CardCollection> {
)
)
);
body = new Stack([body, indicator]);
body = new Stack(<Widget>[body, indicator]);
}
return new Theme(
......@@ -369,7 +375,7 @@ class CardCollectionState extends State<CardCollection> {
void main() {
runApp(new MaterialApp(
title: 'Cards',
routes: {
routes: <String, RouteBuilder>{
'/': (RouteArguments args) => new CardCollection(),
}
));
......
......@@ -6,7 +6,7 @@ import 'package:flutter/material.dart';
class ContainerApp extends StatelessComponent {
Widget build(BuildContext context) {
return new Column([
return new Column(<Widget>[
new Container(
padding: new EdgeDims.all(10.0),
margin: new EdgeDims.all(10.0),
......@@ -20,7 +20,7 @@ class ContainerApp extends StatelessComponent {
new Container(
decoration: new BoxDecoration(backgroundColor: const Color(0xFFFFFF00)),
padding: new EdgeDims.symmetric(horizontal: 50.0, vertical: 75.0),
child: new Row([
child: new Row(<Widget>[
new RaisedButton(
child: new Text('PRESS ME'),
onPressed: () => print("Hello World")
......
......@@ -31,11 +31,11 @@ class DatePickerDemoState extends State<DatePickerDemo> {
brightness: ThemeBrightness.light,
primarySwatch: Colors.teal
),
child: new Stack([
child: new Stack(<Widget>[
new Scaffold(
toolBar: new ToolBar(center: new Text("Date Picker")),
body: new Row(
[new Text(_dateTime.toString())],
<Widget>[new Text(_dateTime.toString())],
alignItems: FlexAlignItems.end,
justifyContent: FlexJustifyContent.center
)
......@@ -48,7 +48,7 @@ class DatePickerDemoState extends State<DatePickerDemo> {
onChanged: _handleDateChanged
),
contentPadding: EdgeDims.zero,
actions: [
actions: <Widget>[
new FlatButton(
child: new Text('CANCEL')
),
......
......@@ -105,8 +105,8 @@ class DragAndDropAppState extends State<DragAndDropApp> {
),
body: new DefaultTextStyle(
style: Theme.of(context).text.body1.copyWith(textAlign: TextAlign.center),
child: new Column([
new Flexible(child: new Row([
child: new Column(<Widget>[
new Flexible(child: new Row(<Widget>[
new ExampleDragSource(navigator: config.navigator, name: 'Orange', color: const Color(0xFFFF9000)),
new ExampleDragSource(navigator: config.navigator, name: 'Teal', color: const Color(0xFF00FFFF)),
new ExampleDragSource(navigator: config.navigator, name: 'Yellow', color: const Color(0xFFFFF000)),
......@@ -114,7 +114,7 @@ class DragAndDropAppState extends State<DragAndDropApp> {
alignItems: FlexAlignItems.center,
justifyContent: FlexJustifyContent.spaceAround
)),
new Flexible(child: new Row([
new Flexible(child: new Row(<Widget>[
new Flexible(child: new ExampleDragTarget()),
new Flexible(child: new ExampleDragTarget()),
new Flexible(child: new ExampleDragTarget()),
......@@ -129,7 +129,7 @@ class DragAndDropAppState extends State<DragAndDropApp> {
void main() {
runApp(new MaterialApp(
title: 'Drag and Drop Flutter Demo',
routes: {
routes: <String, RouteBuilder>{
'/': (RouteArguments args) => new DragAndDropApp(navigator: args.navigator)
}
));
......
......@@ -13,7 +13,7 @@ class DropdownDemo extends StatefulComponent {
class DropdownDemoState extends State<DropdownDemo> {
String _value = "Free";
List <DropdownMenuItem> _buildItems() {
List<DropdownMenuItem> _buildItems() {
return ["One", "Two", "Free", "Four"].map((String value) {
return new DropdownMenuItem<String>(value: value, child: new Text(value));
})
......@@ -24,7 +24,7 @@ class DropdownDemoState extends State<DropdownDemo> {
Widget dropdown = new DropdownButton<String>(
items: _buildItems(),
value: _value,
onChanged: (dynamic newValue) {
onChanged: (String newValue) {
setState(() {
if (newValue != null)
_value = newValue;
......@@ -50,7 +50,7 @@ void main() {
primarySwatch: Colors.blue,
accentColor: Colors.redAccent[200]
),
routes: {
routes: <String, RouteBuilder>{
'/': (RouteArguments args) => new DropdownDemo(),
}
));
......
......@@ -23,7 +23,7 @@ class Circle extends StatelessComponent {
class HorizontalScrollingApp extends StatelessComponent {
Widget build(BuildContext context) {
List<Widget> circles = [
List<Widget> circles = <Widget>[
new Circle(margin: new EdgeDims.only(left: 10.0)),
new Circle(),
new Circle(),
......
......@@ -19,10 +19,10 @@ class IndexedStackDemoState extends State<IndexedStackDemo> {
});
}
List <PopupMenuItem> _buildMenu() {
List<PopupMenuItem> _buildMenu() {
TextStyle style = const TextStyle(fontSize: 18.0, fontWeight: bold);
String pad = '';
return new List.generate(_itemCount, (int i) {
return new List<PopupMenuItem>.generate(_itemCount, (int i) {
pad += '-';
return new PopupMenuItem(value: i, child: new Text('$pad Hello World $i $pad', style: style));
});
......@@ -30,7 +30,7 @@ class IndexedStackDemoState extends State<IndexedStackDemo> {
Widget build(BuildContext context) {
List <PopupMenuItem> items = _buildMenu();
IndexedStack indexedStack = new IndexedStack(items, index: _itemIndex, horizontalAlignment: 0.5);
IndexedStack indexedStack = new IndexedStack(items, index: _itemIndex, alignment: const FractionalOffset(0.5, 0.0));
return new Scaffold(
toolBar: new ToolBar(center: new Text('IndexedStackDemo Demo')),
......@@ -56,7 +56,7 @@ void main() {
primarySwatch: Colors.blue,
accentColor: Colors.redAccent[200]
),
routes: {
routes: <String, RouteBuilder>{
'/': (RouteArguments args) => new IndexedStackDemo(),
}
));
......
......@@ -8,7 +8,7 @@ final Map<String, RouteBuilder> routes = <String, RouteBuilder>{
'/': (RouteArguments args) => new Container(
padding: const EdgeDims.all(30.0),
decoration: new BoxDecoration(backgroundColor: const Color(0xFFCCCCCC)),
child: new Column([
child: new Column(<Widget>[
new Text("You are at home"),
new RaisedButton(
child: new Text('GO SHOPPING'),
......@@ -24,7 +24,7 @@ final Map<String, RouteBuilder> routes = <String, RouteBuilder>{
'/shopping': (RouteArguments args) => new Container(
padding: const EdgeDims.all(20.0),
decoration: new BoxDecoration(backgroundColor: const Color(0xFFBF5FFF)),
child: new Column([
child: new Column(<Widget>[
new Text("Village Shop"),
new RaisedButton(
child: new Text('RETURN HOME'),
......@@ -40,7 +40,7 @@ final Map<String, RouteBuilder> routes = <String, RouteBuilder>{
'/adventure': (RouteArguments args) => new Container(
padding: const EdgeDims.all(20.0),
decoration: new BoxDecoration(backgroundColor: const Color(0xFFDC143C)),
child: new Column([
child: new Column(<Widget>[
new Text("Monster's Lair"),
new RaisedButton(
child: new Text('RUN!!!'),
......
......@@ -86,7 +86,7 @@ class OverlayGeometryAppState extends State<OverlayGeometryApp> {
48.0, 63.0, 82.0, 146.0, 60.0, 55.0, 84.0, 96.0, 50.0,
48.0, 63.0, 82.0, 146.0, 60.0, 55.0, 84.0, 96.0, 50.0
];
cardModels = new List.generate(cardHeights.length, (i) {
cardModels = new List<CardModel>.generate(cardHeights.length, (int i) {
Color color = Color.lerp(Colors.red[300], Colors.blue[900], i / cardHeights.length);
return new CardModel(i, cardHeights[i], color);
});
......@@ -121,7 +121,7 @@ class OverlayGeometryAppState extends State<OverlayGeometryApp> {
CardModel cardModel = cardModels[index];
return new Listener(
key: cardModel.key,
onPointerDown: (e) { return handlePointerDown(cardModel.targetKey, e); },
onPointerDown: (PointerInputEvent e) { return handlePointerDown(cardModel.targetKey, e); },
child: new Card(
key: cardModel.targetKey,
color: cardModel.color,
......@@ -162,7 +162,7 @@ void main() {
accentColor: Colors.redAccent[200]
),
title: 'Cards',
routes: {
routes: <String, RouteBuilder>{
'/': (RouteArguments args) => new OverlayGeometryApp()
}
));
......
......@@ -27,7 +27,7 @@ class PageableListAppState extends State<PageableListApp> {
.map((args) => new Size(args[0], args[1]))
.toList();
cardModels = new List.generate(cardSizes.length, (i) {
cardModels = new List<CardModel>.generate(cardSizes.length, (int i) {
Color color = Color.lerp(Colors.red[300], Colors.blue[900], i / cardSizes.length);
return new CardModel(i, cardSizes[i], color);
});
......@@ -86,7 +86,7 @@ class PageableListAppState extends State<PageableListApp> {
void _showDrawer() {
showDrawer(
context: context,
child: new Block([
child: new Block(<Widget>[
new DrawerHeader(child: new Text('Options')),
new DrawerItem(
icon: 'navigation/more_horiz',
......@@ -102,7 +102,7 @@ class PageableListAppState extends State<PageableListApp> {
),
new DrawerItem(
onPressed: toggleItemsWrap,
child: new Row([
child: new Row(<Widget>[
new Flexible(child: new Text('Scrolling wraps around')),
new Checkbox(value: itemsWrap)
])
......@@ -115,7 +115,7 @@ class PageableListAppState extends State<PageableListApp> {
return new ToolBar(
left: new IconButton(icon: "navigation/menu", onPressed: _showDrawer),
center: new Text('PageableList'),
right: [
right: <Widget>[
new Text(scrollDirection == ScrollDirection.horizontal ? "horizontal" : "vertical")
]
);
......@@ -156,7 +156,7 @@ void main() {
primarySwatch: Colors.blue,
accentColor: Colors.redAccent[200]
),
routes: {
routes: <String, RouteBuilder>{
'/': (RouteArguments args) => new PageableListApp(),
}
));
......
......@@ -18,11 +18,12 @@ const String frogs = "http://soundbible.com/grab.php?id=2033&type=wav";
const String rattle = "http://soundbible.com/grab.php?id=2037&type=wav";
const String iLoveYou = "http://soundbible.com/grab.php?id=2045&type=wav";
class Key {
Key(this.color, this.soundUrl);
class PianoKey {
PianoKey(this.color, this.soundUrl);
final Color color;
final String soundUrl;
final MediaPlayerProxy player = new MediaPlayerProxy.unbound();
bool get isPlayerOpen => player.impl.isOpen;
......@@ -51,13 +52,13 @@ class Key {
}
class PianoApp extends StatelessComponent {
final List<Key> keys = [
new Key(Colors.red[500], chimes),
new Key(Colors.orange[500], chainsaw),
new Key(Colors.yellow[500], stag),
new Key(Colors.green[500], frogs),
new Key(Colors.blue[500], rattle),
new Key(Colors.purple[500], iLoveYou),
final List<PianoKey> keys = <PianoKey>[
new PianoKey(Colors.red[500], chimes),
new PianoKey(Colors.orange[500], chainsaw),
new PianoKey(Colors.yellow[500], stag),
new PianoKey(Colors.green[500], frogs),
new PianoKey(Colors.blue[500], rattle),
new PianoKey(Colors.purple[500], iLoveYou),
];
Future connect() {
......@@ -68,10 +69,9 @@ class PianoApp extends StatelessComponent {
MediaServiceProxy mediaService = new MediaServiceProxy.unbound();
try {
shell.requestService(null, mediaService);
List<Future> pending = [];
for (Key key in keys) {
List<Future<MediaPlayerPrepareResponseParams>> pending = <Future<MediaPlayerPrepareResponseParams>>[];
for (PianoKey key in keys)
pending.add(key.load(mediaService));
}
await Future.wait(pending);
} finally {
mediaService.close();
......@@ -79,8 +79,8 @@ class PianoApp extends StatelessComponent {
}
Widget build(BuildContext context) {
List<Widget> children = [];
for (Key key in keys) {
List<Widget> children = <Widget>[];
for (PianoKey key in keys) {
children.add(new Flexible(
child: new Listener(
child: new Container(
......@@ -99,7 +99,7 @@ Widget statusBox(Widget child) {
const darkGray = const Color(0xff222222);
return new Center(
child: new Container(
decoration: const BoxDecoration(boxShadow: const [
decoration: const BoxDecoration(boxShadow: const <BoxShadow>[
const BoxShadow(
color: mediumGray, offset: const Offset(6.0, 6.0), blur: 5.0)
], backgroundColor: darkGray),
......
......@@ -71,7 +71,7 @@ class ProgressIndicatorAppState extends State<ProgressIndicatorApp> {
];
return new Column(
indicators
.map((c) => new Container(child: c, margin: const EdgeDims.symmetric(vertical: 15.0, horizontal: 20.0)))
.map((Widget c) => new Container(child: c, margin: const EdgeDims.symmetric(vertical: 15.0, horizontal: 20.0)))
.toList(),
justifyContent: FlexJustifyContent.center
);
......@@ -83,7 +83,7 @@ class ProgressIndicatorAppState extends State<ProgressIndicatorApp> {
child: new Container(
padding: const EdgeDims.symmetric(vertical: 12.0, horizontal: 8.0),
child: new BuilderTransition(
variables: [valueAnimation.variable],
variables: <AnimatedValue<double>>[valueAnimation.variable],
performance: valueAnimation.view,
builder: buildIndicators
)
......
......@@ -47,7 +47,7 @@ class ScaleAppState extends State<ScaleApp> {
double radius = size.width / 2.0 * _zoom;
Gradient gradient = new RadialGradient(
center: center, radius: radius,
colors: [Colors.blue[200], Colors.blue[800]]
colors: <Color>[Colors.blue[200], Colors.blue[800]]
);
Paint paint = new Paint()
..shader = gradient.createShader();
......
......@@ -60,7 +60,7 @@ void main() {
primarySwatch: Colors.blue,
accentColor: Colors.redAccent[200]
),
routes: {
routes: <String, RouteBuilder>{
'/': (RouteArguments args) => new ScrollbarApp(),
}
));
......
......@@ -6,7 +6,7 @@ import 'package:flutter/animation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
final List<Map<int, Color>> _kColors = [
final List<Map<int, Color>> _kColors = <Map<int, Color>>[
Colors.amber,
Colors.yellow,
Colors.blue,
......@@ -42,7 +42,7 @@ class CardTransition extends StatelessComponent {
return new BuilderTransition(
performance: performance,
variables: [x, opacity, scale],
variables: <AnimatedValue<double>>[x, opacity, scale],
builder: (BuildContext context) {
Matrix4 transform = new Matrix4.identity()
..translate(x.value)
......
......@@ -5,6 +5,8 @@
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
typedef Widget TextTransformer(String name, String text);
class StyledTextApp extends StatefulComponent {
StyledTextAppState createState() => new StyledTextAppState();
}
......@@ -19,7 +21,7 @@ class StyledTextAppState extends State<StyledTextApp> {
.toList();
}
Function toText;
TextTransformer toText;
// From https://en.wikiquote.org/wiki/2001:_A_Space_Odyssey_(film)
final String dialogText = '''
......@@ -74,10 +76,10 @@ HAL: This mission is too important for me to allow you to jeopardize it.''';
Widget build(BuildContext context) {
List<Widget> lines = nameLines
.map((nameAndText) => Function.apply(toText, nameAndText))
.map((List<String> nameAndText) => Function.apply(toText, nameAndText))
.toList();
List<Widget> children = [];
List<Widget> children = <Widget>[];
for (Widget line in lines) {
children.add(line);
if (line != lines.last) {
......
......@@ -19,7 +19,7 @@ class TabbedNavigatorAppState extends State<TabbedNavigatorApp> {
views: views,
selectedIndex: selectedIndices[n],
isScrollable: isScrollable,
onChanged: (tabIndex) {
onChanged: (int tabIndex) {
setState(() { selectedIndices[n] = tabIndex; } );
}
);
......@@ -46,7 +46,7 @@ class TabbedNavigatorAppState extends State<TabbedNavigatorApp> {
Iterable<TabNavigatorView> views = ["event", "home", "android", "alarm", "face", "language"]
.map((icon_name) {
return new TabNavigatorView(
label: new TabLabel(icon: "action/${icon_name}"),
label: new TabLabel(icon: "action/$icon_name"),
builder: (BuildContext context) => _buildContent(icon_name)
);
});
......
......@@ -35,7 +35,7 @@ class Checkbox extends StatelessComponent {
const Checkbox({Key key, this.value, this.onChanged}) : super(key: key);
final bool value;
final ValueChanged onChanged;
final ValueChanged<bool> onChanged;
Widget build(BuildContext context) {
ThemeData themeData = Theme.of(context);
......@@ -67,7 +67,7 @@ class _CheckboxWrapper extends LeafRenderObjectWidget {
}
final bool value;
final ValueChanged onChanged;
final ValueChanged<bool> onChanged;
final Color uncheckedColor;
final Color accentColor;
......@@ -91,7 +91,7 @@ class _RenderCheckbox extends RenderToggleable {
bool value,
Color uncheckedColor,
Color accentColor,
ValueChanged onChanged
ValueChanged<bool> onChanged
}): _uncheckedColor = uncheckedColor,
_accentColor = accentColor,
super(
......
......@@ -368,7 +368,7 @@ class _YearPickerState extends ScrollableWidgetListState<YearPicker> {
List<Widget> buildItems(BuildContext context, int start, int count) {
TextStyle style = Theme.of(context).text.body1.copyWith(color: Colors.black54);
List<Widget> items = new List<Widget>();
for(int i = start; i < start + count; i++) {
for (int i = start; i < start + count; i++) {
int year = config.firstDate.year + i;
String label = year.toString();
Widget item = new InkWell(
......
......@@ -203,7 +203,7 @@ class DropdownButton<T> extends StatelessComponent {
final List<DropdownMenuItem<T>> items;
final T value;
final ValueChanged onChanged;
final ValueChanged<T> onChanged;
final int level;
void _showDropdown(BuildContext context, int selectedIndex, GlobalKey indexedStackKey) {
......@@ -217,7 +217,7 @@ class DropdownButton<T> extends StatelessComponent {
rect: rect,
level: level
));
completer.future.then((dynamic newValue) {
completer.future.then((T newValue) {
if (onChanged != null)
onChanged(newValue);
});
......
......@@ -32,7 +32,7 @@ class Switch extends StatelessComponent {
: super(key: key);
final bool value;
final ValueChanged onChanged;
final ValueChanged<bool> onChanged;
Widget build(BuildContext context) {
return new _SwitchWrapper(
......@@ -49,7 +49,7 @@ class _SwitchWrapper extends LeafRenderObjectWidget {
final bool value;
final Color thumbColor;
final ValueChanged onChanged;
final ValueChanged<bool> onChanged;
_RenderSwitch createRenderObject() => new _RenderSwitch(
value: value,
......@@ -68,7 +68,7 @@ class _RenderSwitch extends RenderToggleable {
_RenderSwitch({
bool value,
Color thumbColor: _kThumbOffColor,
ValueChanged onChanged
ValueChanged<bool> onChanged
}) : _thumbColor = thumbColor,
super(value: value, onChanged: onChanged, size: _kSwitchSize);
......
......@@ -10,7 +10,7 @@ import 'box.dart';
import 'object.dart';
import 'proxy_box.dart';
typedef void ValueChanged(bool value);
typedef void ValueChanged<T>(T value);
const Duration _kToggleDuration = const Duration(milliseconds: 200);
......@@ -19,7 +19,7 @@ const Duration _kToggleDuration = const Duration(milliseconds: 200);
// ValueChanged on a tap gesture and driving a changed animation. Subclasses are
// responsible for painting.
abstract class RenderToggleable extends RenderConstrainedBox {
RenderToggleable({bool value, Size size, ValueChanged onChanged})
RenderToggleable({bool value, Size size, ValueChanged<bool> onChanged})
: _value = value,
_onChanged = onChanged,
super(additionalConstraints: new BoxConstraints.tight(size)) {
......@@ -70,9 +70,9 @@ abstract class RenderToggleable extends RenderConstrainedBox {
performance.play(value ? AnimationDirection.forward : AnimationDirection.reverse);
}
ValueChanged get onChanged => _onChanged;
ValueChanged _onChanged;
void set onChanged(ValueChanged onChanged) {
ValueChanged<bool> get onChanged => _onChanged;
ValueChanged<bool> _onChanged;
void set onChanged(ValueChanged<bool> onChanged) {
_onChanged = onChanged;
}
}
......@@ -37,6 +37,8 @@ abstract class Action {
double get duration => 0.0;
}
typedef void SetterCallback(dynamic value);
/// The abstract class for an action that changes properties over a time
/// interval, optionally using an easing curve.
abstract class ActionInterval extends Action {
......@@ -351,17 +353,6 @@ class ActionRemoveNode extends ActionInstant {
/// type [Point], [Size], [Rect], [double], or [Color].
class ActionTween extends ActionInterval {
/// The setter method used to set the property being animated.
final Function setter;
/// The start value of the animation.
final startVal;
/// The end value of the animation.
final endVal;
var _delta;
/// Creates a new tween action. The [setter] will be called to update the
/// animated property from [startVal] to [endVal] over the [duration] time in
/// seconds. Optionally an animation [curve] can be passed in for easing the
......@@ -381,6 +372,17 @@ class ActionTween extends ActionInterval {
_computeDelta();
}
/// The setter method used to set the property being animated.
final SetterCallback setter;
/// The start value of the animation.
final dynamic startVal;
/// The end value of the animation.
final dynamic endVal;
dynamic _delta;
void _computeDelta() {
if (startVal is Point) {
// Point
......@@ -474,7 +476,7 @@ class ActionTween extends ActionInterval {
/// itself is typically a property of a [Node] and powered by the [SpriteBox].
class ActionController {
List<Action> _actions = [];
List<Action> _actions = <Action>[];
/// Creates a new [ActionController]. However, for most uses a reference to
/// an [ActionController] is acquired through the [Node.actions] property.
......
......@@ -17,6 +17,8 @@ Point _cardinalSplineAt(Point p0, Point p1, Point p2, Point p3, double tension,
return new Point(x, y);
}
typedef void PointSetterCallback(Point value);
/// The spline action is used to animate a point along a spline definied by
/// a set of points.
class ActionSpline extends ActionInterval {
......@@ -30,7 +32,7 @@ class ActionSpline extends ActionInterval {
}
/// The callback used to update a point when the action is run.
final Function setter;
final PointSetterCallback setter;
/// A list of points that define the spline.
final List<Point> points;
......
......@@ -21,8 +21,8 @@ class ColorSequence {
/// Creates a new color sequence from a start and an end color.
ColorSequence.fromStartAndEndColor(Color start, Color end) {
colors = [start, end];
colorStops = [0.0, 1.0];
colors = <Color>[start, end];
colorStops = <double>[0.0, 1.0];
}
/// Creates a new color sequence by copying an existing sequence.
......
......@@ -30,14 +30,18 @@ class EffectLine extends Node {
this.simplify: true,
ColorSequence colorSequence
}) {
if (points == null) this.points = [];
else this.points = points;
if (points == null)
this.points = <Point>[];
else
this.points = points;
_colorSequence = colorSequence;
if (_colorSequence == null)
if (_colorSequence == null) {
_colorSequence = new ColorSequence.fromStartAndEndColor(
new Color(0xffffffff),
new Color(0xffffffff));
new Color(0xffffffff)
);
}
_offset = scrollStart;
......@@ -65,7 +69,7 @@ class EffectLine extends Node {
set points(List<Point> points) {
_points = points;
_pointAges = [];
_pointAges = <double>[];
for (int i = 0; i < _points.length; i++) {
_pointAges.add(0.0);
}
......@@ -125,7 +129,7 @@ class EffectLine extends Node {
// Calculate colors
List<double> stops = _painter.calculatedTextureStops;
List<Color> colors = [];
List<Color> colors = <Color>[];
for (int i = 0; i < stops.length; i++) {
double stop = stops[i];
Color color = _colorSequence.colorAtPosition(stop);
......@@ -143,7 +147,7 @@ class EffectLine extends Node {
_painter.colors = colors;
// Calculate widths
List<double> widths = [];
List<double> widths = <double>[];
for (int i = 0; i < stops.length; i++) {
double stop = stops[i];
double growth = math.max(widthGrowthSpeed * _pointAges[i], 0.0);
......
......@@ -36,7 +36,7 @@ class Label extends Node {
void paint(PaintingCanvas canvas) {
if (_painter == null) {
PlainTextSpan textSpan = new PlainTextSpan(_text);
StyledTextSpan styledTextSpan = new StyledTextSpan(_textStyle, [textSpan]);
StyledTextSpan styledTextSpan = new StyledTextSpan(_textStyle, <TextSpan>[textSpan]);
_painter = new TextPainter(styledTextSpan);
_painter.maxWidth = double.INFINITY;
......
......@@ -19,7 +19,7 @@ class Layer extends Node with SpritePaint {
/// if it is known.
///
/// var myLayer = new Layer();
Layer([Rect this.layerRect = null]);
Layer([this.layerRect = null]);
Paint _cachedPaint = new Paint()
..filterQuality = ui.FilterQuality.low
......
......@@ -61,7 +61,7 @@ class Node {
bool handleMultiplePointers = false;
int _handlingPointer;
List<Node>_children = [];
List<Node> _children = <Node>[];
ActionController _actions;
......@@ -104,9 +104,8 @@ class Node {
/// Creates a new [Node] without any transformation.
///
/// var myNode = new Node();
Node() {
}
/// Node myNode = new Node();
Node();
// Property setters and getters
......@@ -115,7 +114,7 @@ class Node {
/// For most applications it's not necessary to access the [SpriteBox] directly.
///
/// // Get the transformMode of the sprite box
/// var transformMode = myNode.spriteBox.transformMode;
/// SpriteBoxTransformMode transformMode = myNode.spriteBox.transformMode;
SpriteBox get spriteBox => _spriteBox;
/// The parent of this node, or null if it doesn't have a parent.
......@@ -450,7 +449,7 @@ class Node {
child._parent = null;
child._spriteBox = null;
}
_children = [];
_children = <Node>[];
_childrenNeedSorting = false;
if (_spriteBox != null) _spriteBox._deregisterNode(null);
}
......
......@@ -21,8 +21,9 @@ class NodeWithSize extends Node {
/// The default [size] is zero and the default [pivot] point is the origin. Subclasses may change the default values.
///
/// var myNodeWithSize = new NodeWithSize(new Size(1024.0, 1024.0));
NodeWithSize(Size this.size) {
if (size == null) size = Size.zero;
NodeWithSize(this.size) {
if (size == null)
size = Size.zero;
pivot = Point.origin;
}
......
......@@ -359,9 +359,9 @@ class ParticleSystem extends Node {
void paint(PaintingCanvas canvas) {
List<ui.RSTransform> transforms = [];
List<Rect> rects = [];
List<Color> colors = [];
List<ui.RSTransform> transforms = <ui.RSTransform>[];
List<Rect> rects = <Rect>[];
List<Color> colors = <Color>[];
_paint.transferMode = transferMode;
......
......@@ -237,7 +237,7 @@ class PhysicsBody {
box2d.Body _body;
List<PhysicsJoint> _joints = [];
List<PhysicsJoint> _joints = <PhysicsJoint>[];
bool _attached = false;
......@@ -355,8 +355,8 @@ class PhysicsBody {
fixtureDef.isSensor = isSensor;
// Get shapes
List<box2d.Shape> b2Shapes = [];
List<PhysicsShape> physicsShapes = [];
List<box2d.Shape> b2Shapes = <box2d.Shape>[];
List<PhysicsShape> physicsShapes = <PhysicsShape>[];
_addB2Shapes(physicsNode, shape, b2Shapes, physicsShapes);
// Create fixtures
......
......@@ -41,7 +41,7 @@ class PhysicsShapePolygon extends PhysicsShape {
final List<Point> points;
box2d.Shape _createB2Shape(PhysicsWorld node, double scale) {
List<Vector2> vectors = [];
List<Vector2> vectors = <Vector2>[];
for (Point point in points) {
Vector2 vec = new Vector2(
scale * point.x / node.b2WorldToNodeConversionFactor,
......@@ -91,7 +91,7 @@ class PhysicsShapeChain extends PhysicsShape {
final bool loop;
box2d.Shape _createB2Shape(PhysicsWorld node, double scale) {
List<Vector2> vectors = [];
List<Vector2> vectors = <Vector2>[];
for (Point point in points) {
Vector2 vec = new Vector2(
scale * point.x / node.b2WorldToNodeConversionFactor,
......
......@@ -39,11 +39,11 @@ class PhysicsWorld extends Node {
_ContactHandler _contactHandler;
List<PhysicsJoint> _joints = [];
List<PhysicsJoint> _joints = <PhysicsJoint>[];
List<box2d.Body> _bodiesScheduledForDestruction = [];
List<box2d.Body> _bodiesScheduledForDestruction = <box2d.Body>[];
List<PhysicsBody> _bodiesScheduledForUpdate = [];
List<PhysicsBody> _bodiesScheduledForUpdate = <PhysicsBody>[];
_PhysicsDebugDraw _debugDraw;
......@@ -272,7 +272,7 @@ class _ContactHandler extends box2d.ContactListener {
PhysicsWorld physicsNode;
List<_ContactCallbackInfo> callbackInfos = [];
List<_ContactCallbackInfo> callbackInfos = <_ContactCallbackInfo>[];
void addContactCallback(PhysicsContactCallback callback, Object tagA, Object tagB, PhysicsContactType type) {
callbackInfos.add(new _ContactCallbackInfo(callback, tagA, tagB, type));
......@@ -324,7 +324,7 @@ class _ContactHandler extends box2d.ContactListener {
box2d.WorldManifold manifold = new box2d.WorldManifold();
b2Contact.getWorldManifold(manifold);
touchingNormal = new Offset(manifold.normal.x, manifold.normal.y);
touchingPoints = [];
touchingPoints = <Point>[];
for (Vector2 vec in manifold.points) {
touchingPoints.add(new Point(
vec.x * physicsNode.b2WorldToNodeConversionFactor,
......
......@@ -59,10 +59,10 @@ class SoundEffectPlayer {
}
MediaServiceProxy _mediaService;
List<SoundEffectStream> _soundEffectStreams = [];
List<SoundEffectStream> _soundEffectStreams = <SoundEffectStream>[];
// TODO: This should no longer be needed when moving to SoundPool backing
Map<SoundEffect,MediaPlayerProxy> _mediaPlayers = {};
Map<SoundEffect,MediaPlayerProxy> _mediaPlayers = <SoundEffect, MediaPlayerProxy>{};
Future _prepare(SoundEffectStream playingSound) async {
await playingSound._player.ptr.prepare(playingSound.sound._data);
......@@ -133,7 +133,7 @@ class SoundEffectPlayer {
for (SoundEffectStream playingSound in _soundEffectStreams) {
playingSound._player.ptr.pause();
}
_soundEffectStreams = [];
_soundEffectStreams = <SoundEffectStream>[];
}
}
......@@ -154,7 +154,7 @@ class SoundTrack {
SoundTrackPlayer _sharedSoundTrackPlayer;
class SoundTrackPlayer {
List<SoundTrack> _soundTracks = [];
List<SoundTrack> _soundTracks = <SoundTrack>[];
static sharedInstance() {
if (_sharedSoundTrackPlayer == null) {
......
......@@ -18,7 +18,7 @@ enum SoundEventMinimumOverlapPolicy {
class SoundEvent {
SoundEvent(SoundEffect effect) {
effects = [effect];
effects = <SoundEffect>[effect];
}
SoundEvent.withList(this.effects);
......@@ -61,7 +61,7 @@ class SoundManager {
new Timer.periodic(new Duration(milliseconds:10), _update);
}
Map<SoundEvent, List<_PlayingSoundEvent>> _playingEvents = {};
Map<SoundEvent, List<_PlayingSoundEvent>> _playingEvents = <SoundEvent, List<_PlayingSoundEvent>>{};
SoundTrack _backgroundMusicTrack;
SoundEffectPlayer _effectPlayer = SoundEffectPlayer.sharedInstance();
......@@ -75,7 +75,7 @@ class SoundManager {
void playEvent(SoundEvent evt, [double volume = 1.0, double pitch = 1.0, double pan = 0.0]) {
List<_PlayingSoundEvent> playingList = _playingEvents[evt];
if (playingList == null) playingList = [];
if (playingList == null) playingList = <_PlayingSoundEvent>[];
// Check simultaneousLimit
if (evt.simultaneousLimit != 0 && evt.simultaneousLimit >= playingList.length) {
......@@ -131,13 +131,13 @@ class SoundManager {
}
void stopAllEvents([double fadeDuration]) {
for (List<_PlayingSoundEvent> playingList in _playingEvents) {
for (List<_PlayingSoundEvent> playingList in _playingEvents.values) {
for (_PlayingSoundEvent playing in playingList) {
if (fadeDuration > 0.0) {
// Fade out and stop
ActionTween fadeOut = new ActionTween((a) => playing.stream.volume = a, playing.stream.volume, 0.0, fadeDuration);
ActionCallFunction stop = new ActionCallFunction(() { _effectPlayer.stop(playing.stream); });
ActionSequence seq = new ActionSequence([fadeOut, stop]);
ActionSequence seq = new ActionSequence(<Action>[fadeOut, stop]);
actions.run(seq);
}
else {
......@@ -175,7 +175,7 @@ class SoundManager {
} else {
ActionTween fadeOut = new ActionTween((a) => _backgroundMusicTrack.volume = a, _backgroundMusicTrack.volume, 0.0, fadeOutDuration);
ActionCallFunction stop = new ActionCallFunction(() { _trackPlayer.stop(_backgroundMusicTrack); });
ActionSequence seq = new ActionSequence([fadeOut, stop]);
ActionSequence seq = new ActionSequence(<Action>[fadeOut, stop]);
actions.run(seq);
}
} else {
......@@ -190,7 +190,7 @@ class SoundManager {
ActionCallFunction fadeInCall = new ActionCallFunction(() {
_fadeInTrack(track, fadeInDuration);
});
ActionSequence seq = new ActionSequence([delay, fadeInCall]);
ActionSequence seq = new ActionSequence(<Action>[delay, fadeInCall]);
actions.run(seq);
}
}
......@@ -216,7 +216,7 @@ class SoundManager {
ActionCallFunction stopCall = new ActionCallFunction(() {
_trackPlayer.stop(_backgroundMusicTrack);
});
ActionSequence seq = new ActionSequence([fadeOut, stopCall]);
ActionSequence seq = new ActionSequence(<Action>[fadeOut, stopCall]);
actions.run(seq);
}
......
......@@ -196,12 +196,12 @@ class SpriteBox extends RenderBox {
if (event.type == 'pointerdown') {
// Build list of event targets
if (_eventTargets == null) {
_eventTargets = [];
_eventTargets = <Node>[];
_addEventTargets(_rootNode, _eventTargets);
}
// Find the once that are hit by the pointer
List<Node> nodeTargets = [];
List<Node> nodeTargets = <Node>[];
for (int i = _eventTargets.length - 1; i >= 0; i--) {
Node node = _eventTargets[i];
......@@ -393,8 +393,8 @@ class SpriteBox extends RenderBox {
}
void _rebuildActionControllersAndPhysicsNodes() {
_actionControllers = [];
_physicsNodes = [];
_actionControllers = <ActionController>[];
_physicsNodes = <PhysicsWorld>[];
_addActionControllersAndPhysicsNodes(_rootNode);
}
......@@ -429,7 +429,7 @@ class SpriteBox extends RenderBox {
void _callConstraintsPreUpdate(double dt) {
if (_constrainedNodes == null) {
_constrainedNodes = [];
_constrainedNodes = <Node>[];
_addConstrainedNodes(_rootNode, _constrainedNodes);
}
......@@ -442,7 +442,7 @@ class SpriteBox extends RenderBox {
void _callConstraintsConstrain(double dt) {
if (_constrainedNodes == null) {
_constrainedNodes = [];
_constrainedNodes = <Node>[];
_addConstrainedNodes(_rootNode, _constrainedNodes);
}
......@@ -481,7 +481,7 @@ class SpriteBox extends RenderBox {
List<Node> findNodesAtPosition(Point position) {
assert(position != null);
List<Node> nodes = [];
List<Node> nodes = <Node>[];
// Traverse the render tree and find objects at the position
_addNodesAtPosition(_rootNode, position, nodes);
......
......@@ -9,7 +9,7 @@ part of flutter_sprites;
class SpriteSheet {
ui.Image _image;
Map<String, Texture> _textures = new Map();
Map<String, Texture> _textures = new Map<String, Texture>();
/// Creates a new sprite sheet from an [_image] and a sprite sheet [jsonDefinition].
///
......
......@@ -4,6 +4,23 @@ part of flutter_sprites;
///
/// Normally you get a reference to a texture from a [SpriteSheet], but you can also create one from an [Image].
class Texture {
/// Creates a new texture from an [Image] object.
///
/// var myTexture = new Texture(myImage);
Texture(ui.Image image) :
size = new Size(image.width.toDouble(), image.height.toDouble()),
image = image,
trimmed = false,
rotated = false,
frame = new Rect.fromLTRB(0.0, 0.0, image.width.toDouble(), image.height.toDouble()),
spriteSourceSize = new Rect.fromLTRB(0.0, 0.0, image.width.toDouble(), image.height.toDouble()),
pivot = new Point(0.5, 0.5);
Texture._fromSpriteFrame(this.image, this.name, this.size, this.rotated, this.trimmed, this.frame,
this.spriteSourceSize, this.pivot);
/// The image that this texture is a part of.
///
/// var textureImage = myTexture.image;
......@@ -48,23 +65,6 @@ class Texture {
/// myTexture.pivot = new Point(0.5, 0.5);
Point pivot;
/// Creates a new texture from an [Image] object.
///
/// var myTexture = new Texture(myImage);
Texture(ui.Image image) :
size = new Size(image.width.toDouble(), image.height.toDouble()),
image = image,
trimmed = false,
rotated = false,
frame = new Rect.fromLTRB(0.0, 0.0, image.width.toDouble(), image.height.toDouble()),
spriteSourceSize = new Rect.fromLTRB(0.0, 0.0, image.width.toDouble(), image.height.toDouble()),
pivot = new Point(0.5, 0.5);
Texture._fromSpriteFrame(this.image, this.name, this.size, this.rotated, this.trimmed, this.frame,
this.spriteSourceSize, this.pivot) {
}
Texture textureFromRect(Rect rect, [String name = null]) {
assert(rect != null);
assert(!rotated);
......
......@@ -92,15 +92,15 @@ class TexturedLinePainter {
_cachedPaint.transferMode = transferMode;
// Calculate normals
List<Vector2> vectors = [];
List<Vector2> vectors = <Vector2>[];
for (Point pt in _points) {
vectors.add(new Vector2(pt.x, pt.y));
}
List<Vector2> miters = _computeMiterList(vectors, false);
List<Point> vertices = [];
List<int> indicies = [];
List<Color> verticeColors = [];
List<Point> vertices = <Point>[];
List<int> indicies = <int>[];
List<Color> verticeColors = <Color>[];
List<Point> textureCoordinates;
double textureTop;
double textureBottom;
......@@ -121,7 +121,7 @@ class TexturedLinePainter {
// Setup for calculating texture coordinates
textureTop = texture.frame.top;
textureBottom = texture.frame.bottom;
textureCoordinates = [];
textureCoordinates = <Point>[];
// Use correct stops
if (textureStops != null) {
......@@ -150,8 +150,8 @@ class TexturedLinePainter {
int lastIndex1 = (i - 1) * 2 + 1;
int currentIndex0 = i * 2;
int currentIndex1 = i * 2 + 1;
indicies.addAll([lastIndex0, lastIndex1, currentIndex0]);
indicies.addAll([lastIndex1, currentIndex1, currentIndex0]);
indicies.addAll(<int>[lastIndex0, lastIndex1, currentIndex0]);
indicies.addAll(<int>[lastIndex1, currentIndex1, currentIndex0]);
// Add colors
verticeColors.add(colors[i]);
......@@ -209,7 +209,7 @@ class TexturedLinePainter {
}
void _calculateTextureStops() {
List<double> stops = [];
List<double> stops = <double>[];
double length = 0.0;
// Add first stop
......@@ -262,7 +262,7 @@ Vector2 _vectorDirection(Vector2 a, Vector2 b) {
}
List<Vector2> _computeMiterList(List<Vector2> points, bool closed) {
List<Vector2> out = [];
List<Vector2> out = <Vector2>[];
Vector2 curNormal = null;
if (closed) {
......
......@@ -39,7 +39,7 @@ class VirtualJoystick extends NodeWithSize {
else if (event.type == "pointerup" || event.type == "pointercancel") {
_pointerDownAt = null;
_value = Point.origin;
ActionTween moveToCenter = new ActionTween((a) => _handlePos = a, _handlePos, _center, 0.4, elasticOut);
ActionTween moveToCenter = new ActionTween((a) => _handlePos = a, _handlePos, _center, 0.4, Curves.elasticOut);
actions.run(moveToCenter);
_isDown = false;
} else if (event.type == "pointermove") {
......
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