Enable always_specify_types lint
And fix the zillion issues that uncovered.
diff --git a/dev/manual_tests/card_collection.dart b/dev/manual_tests/card_collection.dart
index d6925e3..d0bbd4c 100644
--- a/dev/manual_tests/card_collection.dart
+++ b/dev/manual_tests/card_collection.dart
@@ -26,9 +26,9 @@
const TextStyle(color: Colors.white, fontSize: 18.0, fontWeight: FontWeight.bold);
// TODO(hansmuller): need a local image asset
- static const _sunshineURL = "http://www.walltor.com/images/wallpaper/good-morning-sunshine-58540.jpg";
+ static const String _sunshineURL = "http://www.walltor.com/images/wallpaper/good-morning-sunshine-58540.jpg";
- static const kCardMargins = 8.0;
+ static const double kCardMargins = 8.0;
final TextStyle backgroundTextStyle =
Typography.white.title.copyWith(textAlign: TextAlign.center);
diff --git a/dev/manual_tests/pageable_list.dart b/dev/manual_tests/pageable_list.dart
index 6f0eca1..b6aed7b 100644
--- a/dev/manual_tests/pageable_list.dart
+++ b/dev/manual_tests/pageable_list.dart
@@ -23,7 +23,7 @@
List<Size> cardSizes = [
[100.0, 300.0], [300.0, 100.0], [200.0, 400.0], [400.0, 400.0], [300.0, 400.0]
]
- .map((args) => new Size(args[0], args[1]))
+ .map((List<double> args) => new Size(args[0], args[1]))
.toList();
cardModels = new List<CardModel>.generate(cardSizes.length, (int i) {
diff --git a/examples/layers/services/media_service.dart b/examples/layers/services/media_service.dart
index f7f234d..23d961d 100644
--- a/examples/layers/services/media_service.dart
+++ b/examples/layers/services/media_service.dart
@@ -39,7 +39,7 @@
player.ptr.pause();
}
- Future load(MediaServiceProxy mediaService) async {
+ Future<Null> load(MediaServiceProxy mediaService) async {
try {
mediaService.ptr.createPlayer(player);
UrlResponse response = await fetchUrl(soundUrl);
@@ -61,11 +61,11 @@
new PianoKey(Colors.purple[500], iLoveYou),
];
- Future loadSounds() async {
+ Future<Null> loadSounds() async {
MediaServiceProxy mediaService = new MediaServiceProxy.unbound();
try {
shell.connectToService("mojo:media_service", mediaService);
- List<Future<MediaPlayerPrepareResponseParams>> pending = <Future<MediaPlayerPrepareResponseParams>>[];
+ List<Future<Null>> pending = <Future<Null>>[];
for (PianoKey key in keys)
pending.add(key.load(mediaService));
await Future.wait(pending);
@@ -93,8 +93,8 @@
}
Widget statusBox(Widget child) {
- const mediumGray = const Color(0xff555555);
- const darkGray = const Color(0xff222222);
+ const Color mediumGray = const Color(0xff555555);
+ const Color darkGray = const Color(0xff222222);
return new Center(
child: new Container(
decoration: const BoxDecoration(
@@ -121,7 +121,7 @@
);
}
-Future main() async {
+Future<Null> main() async {
runApp(splashScreen());
PianoApp app = new PianoApp();
diff --git a/examples/material_gallery/lib/demo/buttons_demo.dart b/examples/material_gallery/lib/demo/buttons_demo.dart
index 1aeb29e..fc6ee21 100644
--- a/examples/material_gallery/lib/demo/buttons_demo.dart
+++ b/examples/material_gallery/lib/demo/buttons_demo.dart
@@ -80,7 +80,7 @@
tooltip: 'Open FAB demos',
child: new Icon(icon: Icons.add),
onPressed: () {
- Navigator.push(context, new MaterialPageRoute(
+ Navigator.push(context, new MaterialPageRoute<Null>(
builder: (BuildContext context) => new TabsFabDemo()
));
}
@@ -97,7 +97,7 @@
new RaisedButton(
child: new Text("Launch Demo"),
onPressed: () {
- Navigator.push(context, new MaterialPageRoute(
+ Navigator.push(context, new MaterialPageRoute<Null>(
builder: (BuildContext context) => new SnackBarDemo()
));
}
@@ -127,7 +127,7 @@
new FlatButton(
child: new Text("Launch Demo"),
onPressed: () {
- Navigator.push(context, new MaterialPageRoute(
+ Navigator.push(context, new MaterialPageRoute<Null>(
builder: (_) => new DialogDemo()
));
}
@@ -200,10 +200,10 @@
center: new Text("Buttons"),
tabBar: new TabBar<_ButtonDemo>(
isScrollable: true,
- labels: new Map.fromIterable(demos, value: (_ButtonDemo demo) => demo.tabLabel)
+ labels: new Map<_ButtonDemo, TabLabel>.fromIterable(demos, value: (_ButtonDemo demo) => demo.tabLabel)
)
),
- body: new TabBarView(
+ body: new TabBarView<_ButtonDemo>(
children: demos.map(buildTabView).toList()
)
)
diff --git a/examples/material_gallery/lib/demo/colors_demo.dart b/examples/material_gallery/lib/demo/colors_demo.dart
index 1239807..2e5e9dc 100644
--- a/examples/material_gallery/lib/demo/colors_demo.dart
+++ b/examples/material_gallery/lib/demo/colors_demo.dart
@@ -77,8 +77,8 @@
}
final ColorSwatch swatch;
- final blackTextStyle = Typography.black.body1;
- final whiteTextStyle = Typography.white.body1;
+ final TextStyle blackTextStyle = Typography.black.body1;
+ final TextStyle whiteTextStyle = Typography.white.body1;
Widget build(BuildContext context) {
List<Widget> colorItems = swatch.colors.keys.map((int index) {
@@ -116,12 +116,12 @@
center: new Text("Colors"),
tabBar: new TabBar<ColorSwatch>(
isScrollable: true,
- labels: new Map.fromIterable(colorSwatches, value: (ColorSwatch swatch) {
+ labels: new Map<ColorSwatch, TabLabel>.fromIterable(colorSwatches, value: (ColorSwatch swatch) {
return new TabLabel(text: swatch.name);
})
)
),
- body: new TabBarView(
+ body: new TabBarView<ColorSwatch>(
children: colorSwatches.map((ColorSwatch swatch) {
return new ColorSwatchTabView(swatch: swatch);
})
diff --git a/examples/material_gallery/lib/demo/date_picker_demo.dart b/examples/material_gallery/lib/demo/date_picker_demo.dart
index 9338cc7..7022ad2 100644
--- a/examples/material_gallery/lib/demo/date_picker_demo.dart
+++ b/examples/material_gallery/lib/demo/date_picker_demo.dart
@@ -14,7 +14,7 @@
class _DatePickerDemoState extends State<DatePickerDemo> {
DateTime _selectedDate = new DateTime.now();
- Future _handleSelectDate() async {
+ Future<Null> _handleSelectDate() async {
DateTime picked = await showDatePicker(
context: context,
initialDate: _selectedDate,
diff --git a/examples/material_gallery/lib/demo/dialog_demo.dart b/examples/material_gallery/lib/demo/dialog_demo.dart
index 4c00efd..46ccb73 100644
--- a/examples/material_gallery/lib/demo/dialog_demo.dart
+++ b/examples/material_gallery/lib/demo/dialog_demo.dart
@@ -60,12 +60,12 @@
class DialogDemoState extends State<DialogDemo> {
final GlobalKey<ScaffoldState> scaffoldKey = new GlobalKey<ScaffoldState>();
- void showDemoDialog({ BuildContext context, Dialog dialog }) {
- showDialog(
+ void showDemoDialog/*<T>*/({ BuildContext context, Dialog dialog }) {
+ showDialog/*<T>*/(
context: context,
child: dialog
)
- .then((dynamic value) { // The value passed to Navigator.pop() or null.
+ .then((dynamic/*=T*/ value) { // The value passed to Navigator.pop() or null.
if (value != null) {
scaffoldKey.currentState.showSnackBar(new SnackBar(
content: new Text('You selected: $value')
@@ -89,7 +89,7 @@
new RaisedButton(
child: new Text('ALERT'),
onPressed: () {
- showDemoDialog(
+ showDemoDialog/*<DialogDemoAction>*/(
context: context,
dialog: new Dialog(
content: new Text(
@@ -113,7 +113,7 @@
new RaisedButton(
child: new Text('ALERT WITH TITLE'),
onPressed: () {
- showDemoDialog(
+ showDemoDialog/*<DialogDemoAction>*/(
context: context,
dialog: new Dialog(
title: new Text("Use Google's location service?"),
@@ -138,7 +138,7 @@
new RaisedButton(
child: new Text('SIMPLE'),
onPressed: () {
- showDemoDialog(
+ showDemoDialog/*<String>*/(
context: context,
dialog: new Dialog(
title: new Text('Set backup account'),
@@ -174,7 +174,7 @@
context: context,
initialTime: const TimeOfDay(hour: 15, minute: 30)
)
- .then((value) { // The value passed to Navigator.pop() or null.
+ .then((TimeOfDay value) { // The value passed to Navigator.pop() or null.
if (value != null) {
scaffoldKey.currentState.showSnackBar(new SnackBar(
content: new Text('You selected: $value')
@@ -186,7 +186,7 @@
new RaisedButton(
child: new Text('FULLSCREEN'),
onPressed: () {
- Navigator.push(context, new MaterialPageRoute(
+ Navigator.push(context, new MaterialPageRoute<Null>(
builder: (BuildContext context) => new FullScreenDialogDemo()
));
}
diff --git a/examples/material_gallery/lib/demo/fitness_demo.dart b/examples/material_gallery/lib/demo/fitness_demo.dart
index b64c588..d15682e 100644
--- a/examples/material_gallery/lib/demo/fitness_demo.dart
+++ b/examples/material_gallery/lib/demo/fitness_demo.dart
@@ -33,7 +33,7 @@
class _FitnessDemoContentsState extends State<_FitnessDemoContents> {
- Future _loadAssets(AssetBundle bundle) async {
+ Future<Null> _loadAssets(AssetBundle bundle) async {
_images = new ImageMap(bundle);
await _images.load(<String>[
'packages/flutter_gallery_assets/jumpingjack.png',
@@ -267,9 +267,9 @@
class _ProgressCircle extends NodeWithSize {
_ProgressCircle(Size size, [this.value = 0.0]) : super(size);
- static const _kTwoPI = math.PI * 2.0;
- static const _kEpsilon = .0000001;
- static const _kSweep = _kTwoPI - _kEpsilon;
+ static const double _kTwoPI = math.PI * 2.0;
+ static const double _kEpsilon = .0000001;
+ static const double _kSweep = _kTwoPI - _kEpsilon;
double value;
diff --git a/examples/material_gallery/lib/demo/grid_list_demo.dart b/examples/material_gallery/lib/demo/grid_list_demo.dart
index 169dc66..c3aaea8 100644
--- a/examples/material_gallery/lib/demo/grid_list_demo.dart
+++ b/examples/material_gallery/lib/demo/grid_list_demo.dart
@@ -38,7 +38,7 @@
final GridDemoTileStyle tileStyle;
void showPhoto(BuildContext context) {
- Navigator.push(context, new MaterialPageRoute(
+ Navigator.push(context, new MaterialPageRoute<Null>(
builder: (BuildContext context) {
return new Scaffold(
toolBar: new ToolBar(
@@ -138,7 +138,7 @@
GridDemoTileStyle tileStyle = GridDemoTileStyle.twoLine;
void showTileStyleMenu(BuildContext context) {
- final List<PopupMenuItem> items = <PopupMenuItem<GridDemoTileStyle>>[
+ final List<PopupMenuItem<GridDemoTileStyle>> items = <PopupMenuItem<GridDemoTileStyle>>[
new PopupMenuItem<GridDemoTileStyle>(
value: GridDemoTileStyle.imageOnly,
child: new Text('Image only')
diff --git a/examples/material_gallery/lib/demo/leave_behind_demo.dart b/examples/material_gallery/lib/demo/leave_behind_demo.dart
index c69c01b..a5dbb30 100644
--- a/examples/material_gallery/lib/demo/leave_behind_demo.dart
+++ b/examples/material_gallery/lib/demo/leave_behind_demo.dart
@@ -37,7 +37,7 @@
List<LeaveBehindItem> leaveBehindItems;
void initListItems() {
- leaveBehindItems = new List.generate(16, (int index) {
+ leaveBehindItems = new List<LeaveBehindItem>.generate(16, (int index) {
return new LeaveBehindItem(
index: index,
name: 'Item $index Sender',
@@ -130,7 +130,7 @@
right: <Widget>[
new PopupMenuButton<LeaveBehindDemoAction>(
onSelected: handleDemoAction,
- items: <PopupMenuEntry>[
+ items: <PopupMenuEntry<LeaveBehindDemoAction>>[
new PopupMenuItem<LeaveBehindDemoAction>(
value: LeaveBehindDemoAction.reset,
child: new Text('Reset the list')
diff --git a/examples/material_gallery/lib/demo/list_demo.dart b/examples/material_gallery/lib/demo/list_demo.dart
index 053cb93..4966b98 100644
--- a/examples/material_gallery/lib/demo/list_demo.dart
+++ b/examples/material_gallery/lib/demo/list_demo.dart
@@ -19,7 +19,7 @@
class ListDemoState extends State<ListDemo> {
final GlobalKey<ScaffoldState> scaffoldKey = new GlobalKey<ScaffoldState>();
- ScaffoldFeatureController _bottomSheet;
+ PersistentBottomSheetController<Null> _bottomSheet;
ListDemoItemSize _itemSize = ListDemoItemSize.threeLine;
bool _dense = false;
bool _showAvatars = true;
diff --git a/examples/material_gallery/lib/demo/menu_demo.dart b/examples/material_gallery/lib/demo/menu_demo.dart
index a8d3f9b..b219bfb 100644
--- a/examples/material_gallery/lib/demo/menu_demo.dart
+++ b/examples/material_gallery/lib/demo/menu_demo.dart
@@ -176,7 +176,7 @@
right: new PopupMenuButton<String>(
onSelected: showCheckedMenuSelections,
items: <PopupMenuItem<String>>[
- new CheckedPopupMenuItem(
+ new CheckedPopupMenuItem<String>(
value: _checkedValue1,
checked: isChecked(_checkedValue1),
child: new Text(_checkedValue1)
diff --git a/examples/material_gallery/lib/demo/modal_bottom_sheet_demo.dart b/examples/material_gallery/lib/demo/modal_bottom_sheet_demo.dart
index 687bf35..675c644 100644
--- a/examples/material_gallery/lib/demo/modal_bottom_sheet_demo.dart
+++ b/examples/material_gallery/lib/demo/modal_bottom_sheet_demo.dart
@@ -21,7 +21,7 @@
child: new RaisedButton(
child: new Text('Show the modal bottom sheet', style: textStyle),
onPressed: () {
- showModalBottomSheet(context: context, builder: (_) {
+ showModalBottomSheet/*<Null>*/(context: context, builder: (BuildContext context) {
return new Container(
child: new Padding(
padding: const EdgeDims.all(32.0),
diff --git a/examples/material_gallery/lib/demo/page_selector_demo.dart b/examples/material_gallery/lib/demo/page_selector_demo.dart
index 3d8dceb..31a83da 100644
--- a/examples/material_gallery/lib/demo/page_selector_demo.dart
+++ b/examples/material_gallery/lib/demo/page_selector_demo.dart
@@ -7,7 +7,7 @@
class PageSelectorDemo extends StatelessComponent {
void _handleArrowButtonPress(BuildContext context, int delta) {
- final TabBarSelectionState selection = TabBarSelection.of(context);
+ final TabBarSelectionState<IconData> selection = TabBarSelection.of/*<IconData>*/(context);
if (!selection.valueIsChanging)
selection.value = selection.values[(selection.index + delta).clamp(0, selection.values.length - 1)];
}
@@ -53,7 +53,7 @@
)
),
new Flexible(
- child: new TabBarView(
+ child: new TabBarView<IconData>(
children: icons.map((IconData icon) {
return new Container(
key: new ObjectKey(icon),
diff --git a/examples/material_gallery/lib/demo/scrolling_techniques_demo.dart b/examples/material_gallery/lib/demo/scrolling_techniques_demo.dart
index c2ce5eb..840e5da 100644
--- a/examples/material_gallery/lib/demo/scrolling_techniques_demo.dart
+++ b/examples/material_gallery/lib/demo/scrolling_techniques_demo.dart
@@ -82,7 +82,7 @@
final WidgetBuilder builder;
void showDemo(BuildContext context) {
- Navigator.push(context, new MaterialPageRoute(builder: builder));
+ Navigator.push(context, new MaterialPageRoute<Null>(builder: builder));
}
Widget build(BuildContext context) {
diff --git a/examples/material_gallery/lib/demo/tabs_demo.dart b/examples/material_gallery/lib/demo/tabs_demo.dart
index 7301455..3df5e45 100644
--- a/examples/material_gallery/lib/demo/tabs_demo.dart
+++ b/examples/material_gallery/lib/demo/tabs_demo.dart
@@ -25,20 +25,20 @@
Widget build(BuildContext context) {
final Color iconColor = Theme.of(context).accentColor;
- return new TabBarSelection(
+ return new TabBarSelection<IconData>(
values: icons,
child: new Scaffold(
toolBar: new ToolBar(
center: new Text("Scrollable Tabs"),
- tabBar: new TabBar<String>(
+ tabBar: new TabBar<IconData>(
isScrollable: true,
- labels: new Map.fromIterable(
+ labels: new Map<IconData, TabLabel>.fromIterable(
icons,
value: (IconData icon) => new TabLabel(text: labels[icon], icon: icon)
)
)
),
- body: new TabBarView(
+ body: new TabBarView<IconData>(
children: icons.map((IconData icon) {
return new Container(
key: new ObjectKey(icon),
diff --git a/examples/material_gallery/lib/demo/tabs_fab_demo.dart b/examples/material_gallery/lib/demo/tabs_fab_demo.dart
index 136bd8c..1f13edd 100644
--- a/examples/material_gallery/lib/demo/tabs_fab_demo.dart
+++ b/examples/material_gallery/lib/demo/tabs_fab_demo.dart
@@ -97,7 +97,7 @@
toolBar: new ToolBar(
center: new Text("FAB per Tab"),
tabBar: new TabBar<_Page>(
- labels: new Map.fromIterable(pages, value: (_Page page) => page.tabLabel)
+ labels: new Map<_Page, TabLabel>.fromIterable(pages, value: (_Page page) => page.tabLabel)
)
),
floatingActionButton: !selectedPage.fabDefined ? null : new FloatingActionButton(
@@ -107,7 +107,7 @@
child: selectedPage.fabIcon,
onPressed: _showExplanatoryText
),
- body: new TabBarView(children: pages.map(buildTabView).toList())
+ body: new TabBarView<_Page>(children: pages.map(buildTabView).toList())
)
);
}
diff --git a/examples/material_gallery/lib/demo/time_picker_demo.dart b/examples/material_gallery/lib/demo/time_picker_demo.dart
index dd06afc..1ab5e15 100644
--- a/examples/material_gallery/lib/demo/time_picker_demo.dart
+++ b/examples/material_gallery/lib/demo/time_picker_demo.dart
@@ -13,7 +13,7 @@
class _TimePickerDemoState extends State<TimePickerDemo> {
TimeOfDay _selectedTime = const TimeOfDay(hour: 7, minute: 28);
- Future _handleSelectTime() async {
+ Future<Null> _handleSelectTime() async {
TimeOfDay picked = await showTimePicker(
context: context,
initialTime: _selectedTime
diff --git a/examples/material_gallery/lib/demo/weather_demo.dart b/examples/material_gallery/lib/demo/weather_demo.dart
index c8ddcfd..fb65a9f 100644
--- a/examples/material_gallery/lib/demo/weather_demo.dart
+++ b/examples/material_gallery/lib/demo/weather_demo.dart
@@ -24,7 +24,7 @@
class _WeatherDemoState extends State<WeatherDemo> {
- Future _loadAssets(AssetBundle bundle) async {
+ Future<Null> _loadAssets(AssetBundle bundle) async {
_images = new ImageMap(bundle);
await _images.load(<String>[
'packages/flutter_gallery_assets/clouds-0.png',
diff --git a/examples/material_gallery/lib/gallery/section.dart b/examples/material_gallery/lib/gallery/section.dart
index 2081fb1..e9cd9b8 100644
--- a/examples/material_gallery/lib/gallery/section.dart
+++ b/examples/material_gallery/lib/gallery/section.dart
@@ -16,7 +16,7 @@
final List<GalleryDemo> demos;
void showDemo(GalleryDemo demo, BuildContext context, ThemeData theme) {
- Navigator.push(context, new MaterialPageRoute(
+ Navigator.push(context, new MaterialPageRoute<Null>(
builder: (BuildContext context) {
Widget child = (demo.builder == null) ? null : demo.builder();
return new Theme(data: theme, child: child);
@@ -31,7 +31,7 @@
);
final double appBarHeight = 200.0;
final Key scrollableKey = new ValueKey<String>(title); // assume section titles differ
- Navigator.push(context, new MaterialPageRoute(
+ Navigator.push(context, new MaterialPageRoute<Null>(
builder: (BuildContext context) {
return new Theme(
data: theme,
diff --git a/examples/stocks/lib/main.dart b/examples/stocks/lib/main.dart
index 977a9b7..d29394d 100644
--- a/examples/stocks/lib/main.dart
+++ b/examples/stocks/lib/main.dart
@@ -75,7 +75,7 @@
}
}
- Route _getRoute(RouteSettings settings) {
+ Route<Null> _getRoute(RouteSettings settings) {
List<String> path = settings.name.split('/');
if (path[0] != '')
return null;
@@ -83,7 +83,7 @@
if (path.length != 3)
return null;
if (_stocks.containsKey(path[2])) {
- return new MaterialPageRoute(
+ return new MaterialPageRoute<Null>(
settings: settings,
builder: (BuildContext context) => new StockSymbolPage(stock: _stocks[path[2]])
);
diff --git a/examples/stocks/lib/stock_data.dart b/examples/stocks/lib/stock_data.dart
index ae034d3..386f9a0 100644
--- a/examples/stocks/lib/stock_data.dart
+++ b/examples/stocks/lib/stock_data.dart
@@ -53,7 +53,7 @@
}
typedef void StockDataCallback(StockData data);
-const _kChunkCount = 30;
+const int _kChunkCount = 30;
String _urlToFetch(int chunk) {
return 'https://domokit.github.io/examples/stocks/data/stock_data_$chunk.json';
diff --git a/examples/stocks/lib/stock_home.dart b/examples/stocks/lib/stock_home.dart
index 599d1cd..884cf02 100644
--- a/examples/stocks/lib/stock_home.dart
+++ b/examples/stocks/lib/stock_home.dart
@@ -321,7 +321,7 @@
}
void _handleCreateCompany() {
- showModalBottomSheet(
+ showModalBottomSheet/*<int, double>*/( // XXXXXX DO NOT CHECK IN XXXXXX THIS IS A CHECK OF THE ANALYZER
context: context,
builder: (BuildContext context) => new _CreateCompanySheet()
);
@@ -344,7 +344,7 @@
toolBar: _isSearching ? buildSearchBar() : buildToolBar(),
floatingActionButton: buildFloatingActionButton(),
drawer: _buildDrawer(context),
- body: new TabBarView(
+ body: new TabBarView<StockHomeTab>(
children: <Widget>[
_buildStockTab(context, StockHomeTab.market, config.symbols),
_buildStockTab(context, StockHomeTab.portfolio, portfolioSymbols),
diff --git a/examples/stocks/lib/stock_list.dart b/examples/stocks/lib/stock_list.dart
index 9634180..e94f296 100644
--- a/examples/stocks/lib/stock_list.dart
+++ b/examples/stocks/lib/stock_list.dart
@@ -18,7 +18,7 @@
Widget build(BuildContext context) {
return new ScrollableList(
- key: const ValueKey('stock-list'),
+ key: const ValueKey<String>('stock-list'),
itemExtent: StockRow.kHeight,
children: stocks.map((Stock stock) {
return new StockRow(
diff --git a/examples/stocks/test/locale_test.dart b/examples/stocks/test/locale_test.dart
index 150fe97..4044279 100644
--- a/examples/stocks/test/locale_test.dart
+++ b/examples/stocks/test/locale_test.dart
@@ -17,11 +17,12 @@
tester.async.flushMicrotasks(); // see https://github.com/flutter/flutter/issues/1865
tester.pump();
- Element<Text> tab = tester.findText('MARKET');
+ Element tab = tester.findText('MARKET');
expect(tab, isNotNull);
tester.setLocale("es", "US");
tester.pump();
- expect(tab.widget.data, equals("MERCADO"));
+ Text text = tab.widget;
+ expect(text.data, equals("MERCADO"));
// TODO(abarth): We're leaking an animation. We should track down the leak
// and plug it rather than waiting for the animation to end here.
diff --git a/examples/stocks/test_driver/scroll_perf_test.dart b/examples/stocks/test_driver/scroll_perf_test.dart
index f5ba03a..6165417 100644
--- a/examples/stocks/test_driver/scroll_perf_test.dart
+++ b/examples/stocks/test_driver/scroll_perf_test.dart
@@ -27,13 +27,13 @@
// Scroll down 5 times
for (int i = 0; i < 5; i++) {
await driver.scroll(stockList, 0.0, -300.0, new Duration(milliseconds: 300));
- await new Future.delayed(new Duration(milliseconds: 500));
+ await new Future<Null>.delayed(new Duration(milliseconds: 500));
}
// Scroll up 5 times
for (int i = 0; i < 5; i++) {
await driver.scroll(stockList, 0.0, 300.0, new Duration(milliseconds: 300));
- await new Future.delayed(new Duration(milliseconds: 500));
+ await new Future<Null>.delayed(new Duration(milliseconds: 500));
}
});
});
diff --git a/packages/cassowary/lib/expression.dart b/packages/cassowary/lib/expression.dart
index 37fc5d9..03e23da 100644
--- a/packages/cassowary/lib/expression.dart
+++ b/packages/cassowary/lib/expression.dart
@@ -18,108 +18,121 @@
bool get isConstant => terms.length == 0;
@override
- double get value => terms.fold(constant, (value, term) => value + term.value);
+ double get value => terms.fold(constant, (double value, Term term) => value + term.value);
@override
Expression asExpression() => this;
- Constraint _createConstraint(
- _EquationMember /* rhs */ value, Relation relation) {
+ Constraint _createConstraint(_EquationMember /* rhs */ value, Relation relation) {
if (value is ConstantMember) {
return new Constraint(
- new Expression(new List.from(terms), constant - value.value),
- relation);
+ new Expression(new List<Term>.from(terms), constant - value.value),
+ relation
+ );
}
if (value is Param) {
- var newTerms = new List<Term>.from(terms)
+ List<Term> newTerms = new List<Term>.from(terms)
..add(new Term(value.variable, -1.0));
return new Constraint(new Expression(newTerms, constant), relation);
}
if (value is Term) {
- var newTerms = new List<Term>.from(terms)
+ List<Term> newTerms = new List<Term>.from(terms)
..add(new Term(value.variable, -value.coefficient));
return new Constraint(new Expression(newTerms, constant), relation);
}
if (value is Expression) {
- var newTerms = value.terms.fold(new List<Term>.from(terms),
- (list, t) => list..add(new Term(t.variable, -t.coefficient)));
+ List<Term> newTerms = value.terms.fold(
+ new List<Term>.from(terms),
+ (List<Term> list, Term t) {
+ return list..add(new Term(t.variable, -t.coefficient));
+ }
+ );
return new Constraint(
- new Expression(newTerms, constant - value.constant), relation);
+ new Expression(newTerms, constant - value.constant),
+ relation
+ );
}
-
assert(false);
return null;
}
@override
- Constraint operator >=(_EquationMember value) =>
- _createConstraint(value, Relation.greaterThanOrEqualTo);
+ Constraint operator >=(_EquationMember value) {
+ return _createConstraint(value, Relation.greaterThanOrEqualTo);
+ }
@override
- Constraint operator <=(_EquationMember value) =>
- _createConstraint(value, Relation.lessThanOrEqualTo);
+ Constraint operator <=(_EquationMember value) {
+ return _createConstraint(value, Relation.lessThanOrEqualTo);
+ }
@override
- Constraint equals(_EquationMember value) =>
- _createConstraint(value, Relation.equalTo);
+ Constraint equals(_EquationMember value) {
+ return _createConstraint(value, Relation.equalTo);
+ }
@override
Expression operator +(_EquationMember m) {
- if (m is ConstantMember) {
- return new Expression(new List.from(terms), constant + m.value);
- }
+ if (m is ConstantMember)
+ return new Expression(new List<Term>.from(terms), constant + m.value);
if (m is Param) {
return new Expression(
- new List.from(terms)..add(new Term(m.variable, 1.0)), constant);
+ new List<Term>.from(terms)..add(new Term(m.variable, 1.0)),
+ constant
+ );
}
- if (m is Term) {
- return new Expression(new List.from(terms)..add(m), constant);
- }
+ if (m is Term)
+ return new Expression(new List<Term>.from(terms)..add(m), constant);
if (m is Expression) {
return new Expression(
- new List.from(terms)..addAll(m.terms), constant + m.constant);
+ new List<Term>.from(terms)..addAll(m.terms),
+ constant + m.constant
+ );
}
-
assert(false);
return null;
}
@override
Expression operator -(_EquationMember m) {
- if (m is ConstantMember) {
- return new Expression(new List.from(terms), constant - m.value);
- }
+ if (m is ConstantMember)
+ return new Expression(new List<Term>.from(terms), constant - m.value);
if (m is Param) {
return new Expression(
- new List.from(terms)..add(new Term(m.variable, -1.0)), constant);
+ new List<Term>.from(terms)..add(new Term(m.variable, -1.0)),
+ constant
+ );
}
if (m is Term) {
- return new Expression(new List.from(terms)
+ return new Expression(new List<Term>.from(terms)
..add(new Term(m.variable, -m.coefficient)), constant);
}
if (m is Expression) {
- var copiedTerms = new List<Term>.from(terms);
- m.terms.forEach(
- (t) => copiedTerms.add(new Term(t.variable, -t.coefficient)));
+ List<Term> copiedTerms = new List<Term>.from(terms);
+ for (Term t in m.terms)
+ copiedTerms.add(new Term(t.variable, -t.coefficient));
return new Expression(copiedTerms, constant - m.constant);
}
-
assert(false);
return null;
}
_EquationMember _applyMultiplicand(double m) {
- var newTerms = terms.fold(new List<Term>(), (list, term) => list
- ..add(new Term(term.variable, term.coefficient * m)));
+ List<Term> newTerms = terms.fold(
+ new List<Term>(),
+ (List<Term> list, Term term) {
+ return list..add(new Term(term.variable, term.coefficient * m));
+ }
+ );
return new Expression(newTerms, constant * m);
}
@@ -127,17 +140,14 @@
// At least on of the the two members must be constant for the resulting
// expression to be linear
- if (!this.isConstant && !m.isConstant) {
+ if (!this.isConstant && !m.isConstant)
return null;
- }
- if (this.isConstant) {
- return new _Pair(m.asExpression(), this.value);
- }
+ if (this.isConstant)
+ return new _Pair<Expression, double>(m.asExpression(), this.value);
- if (m.isConstant) {
- return new _Pair(this.asExpression(), m.value);
- }
+ if (m.isConstant)
+ return new _Pair<Expression, double>(this.asExpression(), m.value);
assert(false);
return null;
@@ -148,8 +158,9 @@
if (args == null) {
throw new ParserException(
- 'Could not find constant multiplicand or multiplier', [this, m]);
- return null;
+ 'Could not find constant multiplicand or multiplier',
+ <_EquationMember>[this, m]
+ );
}
return args.first._applyMultiplicand(args.second);
@@ -168,7 +179,7 @@
String toString() {
StringBuffer buffer = new StringBuffer();
- terms.forEach((t) => buffer.write('$t'));
+ terms.forEach((Term t) => buffer.write('$t'));
if (constant != 0.0) {
buffer.write(constant.sign > 0.0 ? '+' : '-');
diff --git a/packages/cassowary/lib/param.dart b/packages/cassowary/lib/param.dart
index 81d3496..cd912f4 100644
--- a/packages/cassowary/lib/param.dart
+++ b/packages/cassowary/lib/param.dart
@@ -5,19 +5,19 @@
part of cassowary;
class Param extends _EquationMember {
- final Variable variable;
- dynamic context;
-
Param([double value = 0.0]) : variable = new Variable(value) {
variable._owner = this;
}
-
- Param.withContext(ctx, [double value = 0.0])
- : variable = new Variable(value),
- context = ctx {
+ Param.withContext(dynamic context, [double value = 0.0])
+ : variable = new Variable(value),
+ context = context {
variable._owner = this;
}
+ final Variable variable;
+
+ dynamic context;
+
bool get isConstant => false;
double get value => variable.value;
@@ -25,5 +25,5 @@
String get name => variable.name;
void set name(String name) { variable.name = name; }
- Expression asExpression() => new Expression([new Term(variable, 1.0)], 0.0);
+ Expression asExpression() => new Expression(<Term>[new Term(variable, 1.0)], 0.0);
}
diff --git a/packages/cassowary/lib/row.dart b/packages/cassowary/lib/row.dart
index 49b8fb9..d9806e9 100644
--- a/packages/cassowary/lib/row.dart
+++ b/packages/cassowary/lib/row.dart
@@ -27,7 +27,7 @@
void insertRow(_Row other, [double coefficient = 1.0]) {
constant += other.constant * coefficient;
- other.cells.forEach((s, v) => insertSymbol(s, v * coefficient));
+ other.cells.forEach((_Symbol s, double v) => insertSymbol(s, v * coefficient));
}
void removeSymbol(_Symbol symbol) {
@@ -36,7 +36,7 @@
void reverseSign() {
constant = -constant;
- cells.forEach((s, v) => cells[s] = -v);
+ cells.forEach((_Symbol s, double v) => cells[s] = -v);
}
void solveForSymbol(_Symbol symbol) {
@@ -44,7 +44,7 @@
double coefficient = -1.0 / cells[symbol];
cells.remove(symbol);
constant *= coefficient;
- cells.forEach((s, v) => cells[s] = v * coefficient);
+ cells.forEach((_Symbol s, double v) => cells[s] = v * coefficient);
}
void solveForSymbols(_Symbol lhs, _Symbol rhs) {
@@ -70,8 +70,9 @@
buffer.write(constant);
- cells.forEach((symbol, value) =>
- buffer.write(" + " + value.toString() + " * " + symbol.toString()));
+ cells.forEach((_Symbol symbol, double value) {
+ buffer.write(" + " + value.toString() + " * " + symbol.toString());
+ });
return buffer.toString();
}
diff --git a/packages/cassowary/lib/solver.dart b/packages/cassowary/lib/solver.dart
index 4e551cf..4688e9f 100644
--- a/packages/cassowary/lib/solver.dart
+++ b/packages/cassowary/lib/solver.dart
@@ -89,7 +89,7 @@
_Symbol leaving = rowPair.first;
row = rowPair.second;
- var removed = _rows.remove(rowPair.first);
+ _Row removed = _rows.remove(rowPair.first);
assert(removed != null);
row.solveForSymbols(leaving, tag.marker);
_substitute(tag.marker, row);
@@ -170,8 +170,8 @@
return _dualOptimize();
}
- Set flushUpdates() {
- Set updates = new HashSet<dynamic>();
+ Set<dynamic> flushUpdates() {
+ Set<dynamic> updates = new HashSet<dynamic>();
for (Variable variable in _vars.keys) {
_Symbol symbol = _vars[variable];
@@ -189,10 +189,12 @@
return updates;
}
- Result _bulkEdit(Iterable items,
- _SolverBulkUpdate applier,
- _SolverBulkUpdate undoer) {
- List applied = new List();
+ Result _bulkEdit(
+ Iterable<dynamic> items,
+ _SolverBulkUpdate applier,
+ _SolverBulkUpdate undoer
+ ) {
+ List<dynamic> applied = <dynamic>[];
bool needsCleanup = false;
Result result = Result.success;
@@ -231,7 +233,7 @@
Expression expr = new Expression.fromExpression(constraint.expression);
_Row row = new _Row(expr.constant);
- expr.terms.forEach((term) {
+ expr.terms.forEach((Term term) {
if (!_nearZero(term.coefficient)) {
_Symbol symbol = _symbolForVariable(term.variable);
@@ -397,9 +399,9 @@
_Pair<_Symbol, _Row> _leavingRowForEnteringSymbol(_Symbol entering) {
double ratio = double.MAX_FINITE;
- _Pair<_Symbol, _Row> result = new _Pair(null, null);
+ _Pair<_Symbol, _Row> result = new _Pair<_Symbol, _Row>(null, null);
- _rows.forEach((symbol, row) {
+ _rows.forEach((_Symbol symbol, _Row row) {
if (symbol.type != _SymbolType.external) {
double temp = row.coefficientForSymbol(entering);
@@ -423,7 +425,7 @@
}
void _substitute(_Symbol symbol, _Row row) {
- _rows.forEach((first, second) {
+ _rows.forEach((_Symbol first, _Row second) {
second.substitute(symbol, row);
if (first.type != _SymbolType.external && second.constant < 0.0) {
_infeasibleRows.add(first);
@@ -470,7 +472,7 @@
_Pair<_Symbol, _Row> first, second, third;
- _rows.forEach((symbol, row) {
+ _rows.forEach((_Symbol symbol, _Row row) {
double c = row.coefficientForSymbol(marker);
if (c == 0.0) {
@@ -478,18 +480,18 @@
}
if (symbol.type == _SymbolType.external) {
- third = new _Pair(symbol, row);
+ third = new _Pair<_Symbol, _Row>(symbol, row);
} else if (c < 0.0) {
double r = -row.constant / c;
if (r < r1) {
r1 = r;
- first = new _Pair(symbol, row);
+ first = new _Pair<_Symbol, _Row>(symbol, row);
}
} else {
double r = row.constant / c;
if (r < r2) {
r2 = r;
- second = new _Pair(symbol, row);
+ second = new _Pair<_Symbol, _Row>(symbol, row);
}
}
});
@@ -596,28 +598,33 @@
// Tableau
buffer.writeln(separator + " Tableau");
- _rows.forEach((symbol, row) {
- buffer.write(symbol.toString());
- buffer.write(" | ");
- buffer.writeln(row.toString());
+ _rows.forEach((_Symbol symbol, _Row row) {
+ buffer.writeln('$symbol | $row');
});
// Infeasible
buffer.writeln(separator + " Infeasible");
- _infeasibleRows.forEach((symbol) => buffer.writeln(symbol.toString()));
+ _infeasibleRows.forEach((_Symbol symbol) {
+ buffer.writeln(symbol);
+ });
// Variables
buffer.writeln(separator + " Variables");
- _vars.forEach((variable, symbol) =>
- buffer.writeln("${variable.toString()} = ${symbol.toString()}"));
+ _vars.forEach((Variable variable, _Symbol symbol) {
+ buffer.writeln('$variable = $symbol');
+ });
// Edit Variables
buffer.writeln(separator + " Edit Variables");
- _edits.forEach((variable, editinfo) => buffer.writeln(variable));
+ _edits.forEach((Variable variable, _EditInfo editinfo) {
+ buffer.writeln(variable);
+ });
// Constraints
buffer.writeln(separator + " Constraints");
- _constraints.forEach((constraint, _) => buffer.writeln(constraint));
+ _constraints.forEach((Constraint constraint, _Tag tag) {
+ buffer.writeln(constraint);
+ });
return buffer.toString();
}
diff --git a/packages/cassowary/test/cassowary_test.dart b/packages/cassowary/test/cassowary_test.dart
index 5a1b99b..145b0ce 100644
--- a/packages/cassowary/test/cassowary_test.dart
+++ b/packages/cassowary/test/cassowary_test.dart
@@ -10,34 +10,34 @@
void main() {
test('variable', () {
- var v = new Param(22.0);
+ Param v = new Param(22.0);
expect(v.value, 22);
});
test('variable1', () {
- var v = new Param(22.0);
+ Param v = new Param(22.0);
expect((v + cm(22.0)).value, 44.0);
expect((v - cm(20.0)).value, 2.0);
});
test('term', () {
- var t = new Term(new Variable(22.0), 2.0);
+ Term t = new Term(new Variable(22.0), 2.0);
expect(t.value, 44);
});
test('expression', () {
- var terms = [
+ List<Term> terms = <Term>[
new Term(new Variable(22.0), 2.0),
new Term(new Variable(1.0), 1.0),
];
- var e = new Expression(terms, 40.0);
+ Expression e = new Expression(terms, 40.0);
expect(e.value, 85.0);
});
test('expression1', () {
- var v1 = new Param(10.0);
- var v2 = new Param(10.0);
- var v3 = new Param(22.0);
+ Param v1 = new Param(10.0);
+ Param v2 = new Param(10.0);
+ Param v3 = new Param(22.0);
expect(v1 is Param, true);
expect(v1 + cm(20.0) is Expression, true);
@@ -51,7 +51,7 @@
});
test('expression2', () {
- var e = new Param(10.0) + cm(5.0);
+ Expression e = new Param(10.0) + cm(5.0);
expect(e.value, 15.0);
expect(e is Expression, true);
@@ -64,7 +64,7 @@
expect(e.value, 15.0);
// Param
- var v = new Param(2.0);
+ Param v = new Param(2.0);
expect((e + v) is Expression, true);
expect((e + v).value, 17.0);
expect((e - v) is Expression, true);
@@ -73,7 +73,7 @@
expect(e.value, 15.0);
// Term
- var t = new Term(v.variable, 2.0);
+ Term t = new Term(v.variable, 2.0);
expect((e + t) is Expression, true);
expect((e + t).value, 19.0);
expect((e - t) is Expression, true);
@@ -82,7 +82,7 @@
expect(e.value, 15.0);
// Expression
- var e2 = new Param(7.0) + new Param(3.0);
+ Expression e2 = new Param(7.0) + new Param(3.0);
expect((e + e2) is Expression, true);
expect((e + e2).value, 25.0);
expect((e - e2) is Expression, true);
@@ -92,31 +92,31 @@
});
test('term2', () {
- var t = new Term(new Variable(12.0), 1.0);
+ Term t = new Term(new Variable(12.0), 1.0);
// Constant
- var c = cm(2.0);
+ ConstantMember c = cm(2.0);
expect((t + c) is Expression, true);
expect((t + c).value, 14.0);
expect((t - c) is Expression, true);
expect((t - c).value, 10.0);
// Variable
- var v = new Param(2.0);
+ Param v = new Param(2.0);
expect((t + v) is Expression, true);
expect((t + v).value, 14.0);
expect((t - v) is Expression, true);
expect((t - v).value, 10.0);
// Term
- var t2 = new Term(new Variable(1.0), 2.0);
+ Term t2 = new Term(new Variable(1.0), 2.0);
expect((t + t2) is Expression, true);
expect((t + t2).value, 14.0);
expect((t - t2) is Expression, true);
expect((t - t2).value, 10.0);
// Expression
- var exp = new Param(1.0) + cm(1.0);
+ Expression exp = new Param(1.0) + cm(1.0);
expect((t + exp) is Expression, true);
expect((t + exp).value, 14.0);
expect((t - exp) is Expression, true);
@@ -124,31 +124,31 @@
});
test('variable3', () {
- var v = new Param(3.0);
+ Param v = new Param(3.0);
// Constant
- var c = cm(2.0);
+ ConstantMember c = cm(2.0);
expect((v + c) is Expression, true);
expect((v + c).value, 5.0);
expect((v - c) is Expression, true);
expect((v - c).value, 1.0);
// Variable
- var v2 = new Param(2.0);
+ Param v2 = new Param(2.0);
expect((v + v2) is Expression, true);
expect((v + v2).value, 5.0);
expect((v - v2) is Expression, true);
expect((v - v2).value, 1.0);
// Term
- var t2 = new Term(new Variable(1.0), 2.0);
+ Term t2 = new Term(new Variable(1.0), 2.0);
expect((v + t2) is Expression, true);
expect((v + t2).value, 5.0);
expect((v - t2) is Expression, true);
expect((v - t2).value, 1.0);
// Expression
- var exp = new Param(1.0) + cm(1.0);
+ Expression exp = new Param(1.0) + cm(1.0);
expect(exp.terms.length, 1);
expect((v + exp) is Expression, true);
@@ -158,31 +158,31 @@
});
test('constantmember', () {
- var c = cm(3.0);
+ ConstantMember c = cm(3.0);
// Constant
- var c2 = cm(2.0);
+ ConstantMember c2 = cm(2.0);
expect((c + c2) is Expression, true);
expect((c + c2).value, 5.0);
expect((c - c2) is Expression, true);
expect((c - c2).value, 1.0);
// Variable
- var v2 = new Param(2.0);
+ Param v2 = new Param(2.0);
expect((c + v2) is Expression, true);
expect((c + v2).value, 5.0);
expect((c - v2) is Expression, true);
expect((c - v2).value, 1.0);
// Term
- var t2 = new Term(new Variable(1.0), 2.0);
+ Term t2 = new Term(new Variable(1.0), 2.0);
expect((c + t2) is Expression, true);
expect((c + t2).value, 5.0);
expect((c - t2) is Expression, true);
expect((c - t2).value, 1.0);
// Expression
- var exp = new Param(1.0) + cm(1.0);
+ Expression exp = new Param(1.0) + cm(1.0);
expect((c + exp) is Expression, true);
expect((c + exp).value, 5.0);
@@ -191,74 +191,74 @@
});
test('constraint2', () {
- var left = new Param(10.0);
- var right = new Param(100.0);
+ Param left = new Param(10.0);
+ Param right = new Param(100.0);
- var c = right - left >= cm(25.0);
+ Constraint c = right - left >= cm(25.0);
expect(c is Constraint, true);
});
test('simple_multiplication', () {
// Constant
- var c = cm(20.0);
+ ConstantMember c = cm(20.0);
expect((c * cm(2.0)).value, 40.0);
// Variable
- var v = new Param(20.0);
+ Param v = new Param(20.0);
expect((v * cm(2.0)).value, 40.0);
// Term
- var t = new Term(v.variable, 1.0);
+ Term t = new Term(v.variable, 1.0);
expect((t * cm(2.0)).value, 40.0);
// Expression
- var e = new Expression([t], 0.0);
+ Expression e = new Expression([t], 0.0);
expect((e * cm(2.0)).value, 40.0);
});
test('simple_division', () {
// Constant
- var c = cm(20.0);
+ ConstantMember c = cm(20.0);
expect((c / cm(2.0)).value, 10.0);
// Variable
- var v = new Param(20.0);
+ Param v = new Param(20.0);
expect((v / cm(2.0)).value, 10.0);
// Term
- var t = new Term(v.variable, 1.0);
+ Term t = new Term(v.variable, 1.0);
expect((t / cm(2.0)).value, 10.0);
// Expression
- var e = new Expression([t], 0.0);
+ Expression e = new Expression([t], 0.0);
expect((e / cm(2.0)).value, 10.0);
});
test('full_constraints_setup', () {
- var left = new Param(2.0);
- var right = new Param(10.0);
+ Param left = new Param(2.0);
+ Param right = new Param(10.0);
- var c1 = right - left >= cm(20.0);
+ Constraint c1 = right - left >= cm(20.0);
expect(c1 is Constraint, true);
expect(c1.expression.constant, -20.0);
expect(c1.relation, Relation.greaterThanOrEqualTo);
- var c2 = (right - left).equals(cm(30.0));
+ Constraint c2 = (right - left).equals(cm(30.0));
expect(c2 is Constraint, true);
expect(c2.expression.constant, -30.0);
expect(c2.relation, Relation.equalTo);
- var c3 = right - left <= cm(30.0);
+ Constraint c3 = right - left <= cm(30.0);
expect(c3 is Constraint, true);
expect(c3.expression.constant, -30.0);
expect(c3.relation, Relation.lessThanOrEqualTo);
});
test('constraint_strength_update', () {
- var left = new Param(2.0);
- var right = new Param(10.0);
+ Param left = new Param(2.0);
+ Param right = new Param(10.0);
- var c = (right - left >= cm(200.0)) | 750.0;
+ Constraint c = (right - left >= cm(200.0)) | 750.0;
expect(c is Constraint, true);
expect(c.expression.terms.length, 2);
expect(c.expression.constant, -200.0);
@@ -266,12 +266,12 @@
});
test('solver', () {
- var s = new Solver();
+ Solver s = new Solver();
- var left = new Param(2.0);
- var right = new Param(100.0);
+ Param left = new Param(2.0);
+ Param right = new Param(100.0);
- var c1 = right - left >= cm(200.0);
+ Constraint c1 = right - left >= cm(200.0);
expect((right >= left) is Constraint, true);
@@ -279,28 +279,28 @@
});
test('constraint_complex', () {
- var e = new Param(200.0) - new Param(100.0);
+ Expression e = new Param(200.0) - new Param(100.0);
// Constant
- var c1 = e >= cm(50.0);
+ Constraint c1 = e >= cm(50.0);
expect(c1 is Constraint, true);
expect(c1.expression.terms.length, 2);
expect(c1.expression.constant, -50.0);
// Variable
- var c2 = e >= new Param(2.0);
+ Constraint c2 = e >= new Param(2.0);
expect(c2 is Constraint, true);
expect(c2.expression.terms.length, 3);
expect(c2.expression.constant, 0.0);
// Term
- var c3 = e >= new Term(new Variable(2.0), 1.0);
+ Constraint c3 = e >= new Term(new Variable(2.0), 1.0);
expect(c3 is Constraint, true);
expect(c3.expression.terms.length, 3);
expect(c3.expression.constant, 0.0);
// Expression
- var c4 = e >= new Expression([new Term(new Variable(2.0), 1.0)], 20.0);
+ Constraint c4 = e >= new Expression([new Term(new Variable(2.0), 1.0)], 20.0);
expect(c4 is Constraint, true);
expect(c4.expression.terms.length, 3);
expect(c4.expression.constant, -20.0);
@@ -308,40 +308,40 @@
test('constraint_complex_non_exprs', () {
// Constant
- var c1 = cm(100.0) >= cm(50.0);
+ Constraint c1 = cm(100.0) >= cm(50.0);
expect(c1 is Constraint, true);
expect(c1.expression.terms.length, 0);
expect(c1.expression.constant, 50.0);
// Variable
- var c2 = new Param(100.0) >= new Param(2.0);
+ Constraint c2 = new Param(100.0) >= new Param(2.0);
expect(c2 is Constraint, true);
expect(c2.expression.terms.length, 2);
expect(c2.expression.constant, 0.0);
// Term
- var t = new Term(new Variable(100.0), 1.0);
- var c3 = t >= new Term(new Variable(2.0), 1.0);
+ Term t = new Term(new Variable(100.0), 1.0);
+ Constraint c3 = t >= new Term(new Variable(2.0), 1.0);
expect(c3 is Constraint, true);
expect(c3.expression.terms.length, 2);
expect(c3.expression.constant, 0.0);
// Expression
- var e = new Expression([t], 0.0);
- var c4 = e >= new Expression([new Term(new Variable(2.0), 1.0)], 20.0);
+ Expression e = new Expression([t], 0.0);
+ Constraint c4 = e >= new Expression([new Term(new Variable(2.0), 1.0)], 20.0);
expect(c4 is Constraint, true);
expect(c4.expression.terms.length, 2);
expect(c4.expression.constant, -20.0);
});
test('constraint_update_in_solver', () {
- var s = new Solver();
+ Solver s = new Solver();
- var left = new Param(2.0);
- var right = new Param(100.0);
+ Param left = new Param(2.0);
+ Param right = new Param(100.0);
- var c1 = right - left >= cm(200.0);
- var c2 = right >= right;
+ Constraint c1 = right - left >= cm(200.0);
+ Constraint c2 = right >= right;
expect(s.addConstraint(c1), Result.success);
expect(s.addConstraint(c1), Result.duplicateConstraint);
@@ -351,10 +351,10 @@
});
test('test_multiplication_division_override', () {
- var c = cm(10.0);
- var v = new Param(c.value);
- var t = new Term(v.variable, 1.0);
- var e = new Expression([t], 0.0);
+ ConstantMember c = cm(10.0);
+ Param v = new Param(c.value);
+ Term t = new Term(v.variable, 1.0);
+ Expression e = new Expression([t], 0.0);
// Constant
expect((c * cm(10.0)).value, 100);
@@ -382,10 +382,10 @@
});
test('test_multiplication_division_exceptions', () {
- var c = cm(10.0);
- var v = new Param(c.value);
- var t = new Term(v.variable, 1.0);
- var e = new Expression([t], 0.0);
+ ConstantMember c = cm(10.0);
+ Param v = new Param(c.value);
+ Term t = new Term(v.variable, 1.0);
+ Expression e = new Expression([t], 0.0);
expect((c * c).value, 100);
expect(() => v * v, throwsA(new isInstanceOf<ParserException>()));
@@ -401,9 +401,9 @@
test('edit_updates', () {
Solver s = new Solver();
- var left = new Param(0.0);
- var right = new Param(100.0);
- var mid = new Param(0.0);
+ Param left = new Param(0.0);
+ Param right = new Param(100.0);
+ Param mid = new Param(0.0);
Constraint c = left + right >= cm(2.0) * mid;
expect(s.addConstraint(c), Result.success);
@@ -416,15 +416,15 @@
});
test('bug1', () {
- var left = new Param(0.0);
- var right = new Param(100.0);
- var mid = new Param(0.0);
+ Param left = new Param(0.0);
+ Param right = new Param(100.0);
+ Param mid = new Param(0.0);
expect(((left + right) >= (cm(2.0) * mid)) is Constraint, true);
});
test('single_item', () {
- var left = new Param(-20.0);
+ Param left = new Param(-20.0);
Solver s = new Solver();
s.addConstraint(left >= cm(0.0));
s.flushUpdates();
@@ -432,9 +432,9 @@
});
test('midpoints', () {
- var left = new Param(0.0)..name = "left";
- var right = new Param(0.0)..name = "right";
- var mid = new Param(0.0)..name = "mid";
+ Param left = new Param(0.0)..name = "left";
+ Param right = new Param(0.0)..name = "right";
+ Param mid = new Param(0.0)..name = "mid";
Solver s = new Solver();
@@ -451,13 +451,13 @@
});
test('addition_of_multiple', () {
- var left = new Param(0.0);
- var right = new Param(0.0);
- var mid = new Param(0.0);
+ Param left = new Param(0.0);
+ Param right = new Param(0.0);
+ Param mid = new Param(0.0);
Solver s = new Solver();
- var c = (left >= cm(0.0));
+ Constraint c = (left >= cm(0.0));
expect(s.addConstraints([
(left + right).equals(cm(2.0) * mid),
@@ -470,9 +470,9 @@
});
test('edit_constraints', () {
- var left = new Param(0.0)..name = "left";
- var right = new Param(0.0)..name = "right";
- var mid = new Param(0.0)..name = "mid";
+ Param left = new Param(0.0)..name = "left";
+ Param right = new Param(0.0)..name = "right";
+ Param mid = new Param(0.0)..name = "mid";
Solver s = new Solver();
@@ -492,11 +492,11 @@
});
test('test_description', () {
- var left = new Param(0.0);
- var right = new Param(100.0);
- var c1 = right >= left;
- var c2 = right <= left;
- var c3 = right.equals(left);
+ Param left = new Param(0.0);
+ Param right = new Param(100.0);
+ Constraint c1 = right >= left;
+ Constraint c2 = right <= left;
+ Constraint c3 = right.equals(left);
Solver s = new Solver();
expect(s.addConstraint(c1), Result.success);
@@ -547,7 +547,7 @@
expect(s.suggestValueForVariable(mid.variable, 50.0), Result.success);
- var updates = s.flushUpdates();
+ Set<dynamic> updates = s.flushUpdates();
expect(updates.length, 2);
@@ -571,7 +571,7 @@
expect(s.suggestValueForVariable(mid.variable, 50.0), Result.success);
- var updates = s.flushUpdates();
+ Set<dynamic> updates = s.flushUpdates();
expect(updates.length, 1);
@@ -581,7 +581,7 @@
});
test('param_context_non_final', () {
- var p = new Param.withContext("a");
+ Param p = new Param.withContext("a");
p.context = "b";
expect(p.context, "b");
});
@@ -596,9 +596,9 @@
test('bulk_add_edit_variables', () {
Solver s = new Solver();
- var left = new Param(0.0);
- var right = new Param(100.0);
- var mid = new Param(0.0);
+ Param left = new Param(0.0);
+ Param right = new Param(100.0);
+ Param mid = new Param(0.0);
expect(s.addEditVariables(
[left.variable, right.variable, mid.variable], 999.0), Result.success);
@@ -607,15 +607,15 @@
test('bulk_remove_constraints_and_variables', () {
Solver s = new Solver();
- var left = new Param(0.0);
- var right = new Param(100.0);
- var mid = new Param(0.0);
+ Param left = new Param(0.0);
+ Param right = new Param(100.0);
+ Param mid = new Param(0.0);
expect(s.addEditVariables(
[left.variable, right.variable, mid.variable], 999.0), Result.success);
- var c1 = left <= mid;
- var c2 = mid <= right;
+ Constraint c1 = left <= mid;
+ Constraint c2 = mid <= right;
expect(s.addConstraints([c1, c2]), Result.success);
diff --git a/packages/flutter/lib/src/animation/animation_controller.dart b/packages/flutter/lib/src/animation/animation_controller.dart
index 205ecd4..4df50f1 100644
--- a/packages/flutter/lib/src/animation/animation_controller.dart
+++ b/packages/flutter/lib/src/animation/animation_controller.dart
@@ -125,7 +125,7 @@
}
/// Starts running this animation forwards (towards the end).
- Future forward({ double from }) {
+ Future<Null> forward({ double from }) {
if (from != null)
value = from;
_direction = _AnimationDirection.forward;
@@ -133,7 +133,7 @@
}
/// Starts running this animation in reverse (towards the beginning).
- Future reverse({ double from }) {
+ Future<Null> reverse({ double from }) {
if (from != null)
value = from;
_direction = _AnimationDirection.reverse;
@@ -141,7 +141,7 @@
}
/// Drives the animation from its current value to target.
- Future animateTo(double target, { Duration duration, Curve curve: Curves.linear }) {
+ Future<Null> animateTo(double target, { Duration duration, Curve curve: Curves.linear }) {
Duration simulationDuration = duration;
if (simulationDuration == null) {
double range = upperBound - lowerBound;
@@ -152,7 +152,7 @@
if (simulationDuration == Duration.ZERO) {
assert(value == target);
_checkStatusChanged();
- return new Future.value();
+ return new Future<Null>.value();
}
assert(simulationDuration > Duration.ZERO);
assert(!isAnimating);
@@ -163,7 +163,7 @@
/// restarts the animation when it completes.
///
/// Defaults to repeating between the lower and upper bounds.
- Future repeat({ double min, double max, Duration period }) {
+ Future<Null> repeat({ double min, double max, Duration period }) {
min ??= lowerBound;
max ??= upperBound;
period ??= duration;
@@ -173,24 +173,24 @@
/// Flings the timeline with an optional force (defaults to a critically
/// damped spring) and initial velocity. If velocity is positive, the
/// animation will complete, otherwise it will dismiss.
- Future fling({ double velocity: 1.0, Force force }) {
+ Future<Null> fling({ double velocity: 1.0, Force force }) {
force ??= kDefaultSpringForce;
_direction = velocity < 0.0 ? _AnimationDirection.reverse : _AnimationDirection.forward;
return animateWith(force.release(value, velocity));
}
/// Drives the animation according to the given simulation.
- Future animateWith(Simulation simulation) {
+ Future<Null> animateWith(Simulation simulation) {
stop();
return _startSimulation(simulation);
}
- Future _startSimulation(Simulation simulation) {
+ Future<Null> _startSimulation(Simulation simulation) {
assert(simulation != null);
assert(!isAnimating);
_simulation = simulation;
_value = simulation.x(0.0).clamp(lowerBound, upperBound);
- Future result = _ticker.start();
+ Future<Null> result = _ticker.start();
_checkStatusChanged();
return result;
}
diff --git a/packages/flutter/lib/src/http/http.dart b/packages/flutter/lib/src/http/http.dart
index 7e3f24d..3d28a3d 100644
--- a/packages/flutter/lib/src/http/http.dart
+++ b/packages/flutter/lib/src/http/http.dart
@@ -145,6 +145,6 @@
return _withClient/*<Uint8List>*/((MojoClient client) => client.readBytes(url, headers: headers));
}
-Future/*<T>*/ _withClient/*<T>*/(Future/*<T>*/ fn(MojoClient client)) {
+Future<dynamic/*=T*/> _withClient/*<T>*/(Future<dynamic/*=T*/> fn(MojoClient client)) {
return fn(new MojoClient());
}
diff --git a/packages/flutter/lib/src/material/app.dart b/packages/flutter/lib/src/material/app.dart
index d958ee7..1d2a48c 100644
--- a/packages/flutter/lib/src/material/app.dart
+++ b/packages/flutter/lib/src/material/app.dart
@@ -45,7 +45,7 @@
onGenerateRoute: (RouteSettings settings) {
RouteBuilder builder = routes[settings.name];
if (builder != null) {
- return new MaterialPageRoute(
+ return new MaterialPageRoute<Null>(
builder: (BuildContext context) {
return builder(new RouteArguments(context: context));
},
diff --git a/packages/flutter/lib/src/material/bottom_sheet.dart b/packages/flutter/lib/src/material/bottom_sheet.dart
index b92e671..c27989e 100644
--- a/packages/flutter/lib/src/material/bottom_sheet.dart
+++ b/packages/flutter/lib/src/material/bottom_sheet.dart
@@ -44,7 +44,7 @@
class _BottomSheetState extends State<BottomSheet> {
- final _childKey = new GlobalKey(debugLabel: 'BottomSheet child');
+ final GlobalKey _childKey = new GlobalKey(debugLabel: 'BottomSheet child');
double get _childHeight {
final RenderBox renderBox = _childKey.currentContext.findRenderObject();
@@ -117,15 +117,15 @@
}
}
-class _ModalBottomSheet extends StatefulComponent {
+class _ModalBottomSheet<T> extends StatefulComponent {
_ModalBottomSheet({ Key key, this.route }) : super(key: key);
- final _ModalBottomSheetRoute route;
+ final _ModalBottomSheetRoute<T> route;
- _ModalBottomSheetState createState() => new _ModalBottomSheetState();
+ _ModalBottomSheetState<T> createState() => new _ModalBottomSheetState<T>();
}
-class _ModalBottomSheetState extends State<_ModalBottomSheet> {
+class _ModalBottomSheetState<T> extends State<_ModalBottomSheet<T>> {
Widget build(BuildContext context) {
return new GestureDetector(
onTap: () => Navigator.pop(context),
@@ -165,15 +165,15 @@
}
Widget buildPage(BuildContext context, Animation<double> animation, Animation<double> forwardAnimation) {
- return new _ModalBottomSheet(route: this);
+ return new _ModalBottomSheet<T>(route: this);
}
}
-Future showModalBottomSheet({ BuildContext context, WidgetBuilder builder }) {
+Future<dynamic/*=T*/> showModalBottomSheet/*<T>*/({ BuildContext context, WidgetBuilder builder }) {
assert(context != null);
assert(builder != null);
- final Completer completer = new Completer();
- Navigator.push(context, new _ModalBottomSheetRoute(
+ final Completer<dynamic/*=T*/> completer = new Completer<dynamic/*=T*/>();
+ Navigator.push(context, new _ModalBottomSheetRoute<dynamic/*=T*/>(
completer: completer,
builder: builder
));
diff --git a/packages/flutter/lib/src/material/colors.dart b/packages/flutter/lib/src/material/colors.dart
index d106b04..102d5f2 100644
--- a/packages/flutter/lib/src/material/colors.dart
+++ b/packages/flutter/lib/src/material/colors.dart
@@ -9,20 +9,20 @@
class Colors {
Colors._();
- static const transparent = const Color(0x00000000);
+ static const Color transparent = const Color(0x00000000);
- static const black = const Color(0xFF000000);
- static const black87 = const Color(0xDD000000);
- static const black54 = const Color(0x8A000000);
- static const black45 = const Color(0x73000000); // mask color
- static const black26 = const Color(0x42000000); // disabled radio buttons and text of disabled flat buttons in light theme
- static const black12 = const Color(0x1F000000); // background of disabled raised buttons in light theme
+ static const Color black = const Color(0xFF000000);
+ static const Color black87 = const Color(0xDD000000);
+ static const Color black54 = const Color(0x8A000000);
+ static const Color black45 = const Color(0x73000000); // mask color
+ static const Color black26 = const Color(0x42000000); // disabled radio buttons and text of disabled flat buttons in light theme
+ static const Color black12 = const Color(0x1F000000); // background of disabled raised buttons in light theme
- static const white = const Color(0xFFFFFFFF);
- static const white70 = const Color(0xB3FFFFFF);
- static const white30 = const Color(0x4DFFFFFF); // disabled radio buttons and text of disabled flat buttons in dark theme
- static const white12 = const Color(0x1FFFFFFF); // background of disabled raised buttons in dark theme
- static const white10 = const Color(0x1AFFFFFF);
+ static const Color white = const Color(0xFFFFFFFF);
+ static const Color white70 = const Color(0xB3FFFFFF);
+ static const Color white30 = const Color(0x4DFFFFFF); // disabled radio buttons and text of disabled flat buttons in dark theme
+ static const Color white12 = const Color(0x1FFFFFFF); // background of disabled raised buttons in dark theme
+ static const Color white10 = const Color(0x1AFFFFFF);
static const Map<int, Color> red = const <int, Color>{
50: const Color(0xFFFFEBEE),
diff --git a/packages/flutter/lib/src/material/dialog.dart b/packages/flutter/lib/src/material/dialog.dart
index 53bda7d..60b3d77 100644
--- a/packages/flutter/lib/src/material/dialog.dart
+++ b/packages/flutter/lib/src/material/dialog.dart
@@ -142,8 +142,8 @@
}
}
-Future showDialog({ BuildContext context, Widget child }) {
- Completer completer = new Completer();
- Navigator.push(context, new _DialogRoute(completer: completer, child: child));
+Future<dynamic/*=T*/> showDialog/*<T>*/({ BuildContext context, Widget child }) {
+ Completer<dynamic/*=T*/> completer = new Completer<int>(); // XXXXXXX MORE ANALYZER CHECKS
+ Navigator.push(context, new _DialogRoute<dynamic/*=T*/>(completer: completer, child: child));
return completer.future;
}
diff --git a/packages/flutter/lib/src/material/drawer.dart b/packages/flutter/lib/src/material/drawer.dart
index 5a01d34..32d2d40 100644
--- a/packages/flutter/lib/src/material/drawer.dart
+++ b/packages/flutter/lib/src/material/drawer.dart
@@ -86,7 +86,7 @@
void _ensureHistoryEntry() {
if (_historyEntry == null) {
- ModalRoute route = ModalRoute.of(context);
+ ModalRoute<dynamic> route = ModalRoute.of(context);
if (route != null) {
_historyEntry = new LocalHistoryEntry(onRemove: _handleHistoryEntryRemoved);
route.addLocalHistoryEntry(_historyEntry);
diff --git a/packages/flutter/lib/src/material/dropdown.dart b/packages/flutter/lib/src/material/dropdown.dart
index cb79e55..82c3b8d 100644
--- a/packages/flutter/lib/src/material/dropdown.dart
+++ b/packages/flutter/lib/src/material/dropdown.dart
@@ -154,7 +154,7 @@
const _DropDownRouteResult(this.result);
final T result;
bool operator ==(dynamic other) {
- if (other is! _DropDownRouteResult)
+ if (other is! _DropDownRouteResult<T>)
return false;
final _DropDownRouteResult<T> typedOther = other;
return result == typedOther.result;
@@ -193,7 +193,7 @@
}
Widget buildPage(BuildContext context, Animation<double> animation, Animation<double> forwardAnimation) {
- return new _DropDownMenu(route: this);
+ return new _DropDownMenu<T>(route: this);
}
}
@@ -269,7 +269,7 @@
void _handleTap() {
final RenderBox renderBox = indexedStackKey.currentContext.findRenderObject();
final Rect rect = renderBox.localToGlobal(Point.origin) & renderBox.size;
- final Completer completer = new Completer<_DropDownRouteResult<T>>();
+ final Completer<_DropDownRouteResult<T>> completer = new Completer<_DropDownRouteResult<T>>();
Navigator.push(context, new _DropDownRoute<T>(
completer: completer,
items: config.items,
diff --git a/packages/flutter/lib/src/material/ink_well.dart b/packages/flutter/lib/src/material/ink_well.dart
index 50393bd..fd72917 100644
--- a/packages/flutter/lib/src/material/ink_well.dart
+++ b/packages/flutter/lib/src/material/ink_well.dart
@@ -44,7 +44,7 @@
final bool containedInWell;
final BoxShape highlightShape;
- _InkResponseState createState() => new _InkResponseState<InkResponse>();
+ _InkResponseState<InkResponse> createState() => new _InkResponseState<InkResponse>();
}
class _InkResponseState<T extends InkResponse> extends State<T> {
diff --git a/packages/flutter/lib/src/material/material.dart b/packages/flutter/lib/src/material/material.dart
index 61801e5..4956be5 100644
--- a/packages/flutter/lib/src/material/material.dart
+++ b/packages/flutter/lib/src/material/material.dart
@@ -477,7 +477,7 @@
super.dispose();
}
- void _paintHighlight(Canvas canvas, Rect rect, paint) {
+ void _paintHighlight(Canvas canvas, Rect rect, Paint paint) {
if (shape == BoxShape.rectangle)
canvas.drawRect(rect, paint);
else
diff --git a/packages/flutter/lib/src/material/page.dart b/packages/flutter/lib/src/material/page.dart
index 1401a3c..b5c3d3b 100644
--- a/packages/flutter/lib/src/material/page.dart
+++ b/packages/flutter/lib/src/material/page.dart
@@ -54,7 +54,7 @@
Duration get transitionDuration => kMaterialPageRouteTransitionDuration;
Color get barrierColor => null;
- bool canTransitionFrom(TransitionRoute nextRoute) => false;
+ bool canTransitionFrom(TransitionRoute<dynamic> nextRoute) => false;
Widget buildPage(BuildContext context, Animation<double> animation, Animation<double> forwardAnimation) {
Widget result = builder(context);
diff --git a/packages/flutter/lib/src/material/popup_menu.dart b/packages/flutter/lib/src/material/popup_menu.dart
index d2699d1..5ba198d 100644
--- a/packages/flutter/lib/src/material/popup_menu.dart
+++ b/packages/flutter/lib/src/material/popup_menu.dart
@@ -65,7 +65,7 @@
_PopupMenuItemState<PopupMenuItem<T>> createState() => new _PopupMenuItemState<PopupMenuItem<T>>();
}
-class _PopupMenuItemState<T extends PopupMenuItem> extends State<T> {
+class _PopupMenuItemState<T extends PopupMenuItem<dynamic>> extends State<T> {
// Override this to put something else in the menu entry.
Widget buildChild() => config.child;
@@ -318,7 +318,7 @@
constraints: new BoxConstraints(maxWidth: screenSize.width, maxHeight: screenSize.height),
child: new CustomOneChildLayout(
delegate: new _PopupMenuRouteLayout(position, selectedItemOffset),
- child: new _PopupMenu(route: this)
+ child: new _PopupMenu<T>(route: this)
)
);
}
@@ -329,17 +329,17 @@
/// and the value of [position] implies where the left, center point of the
/// highlighted item should appear. If [initialValue] is not specified then position
/// implies the menu's origin.
-Future/*<T>*/ showMenu/*<T>*/({
+Future<dynamic/*=T*/> showMenu/*<T>*/({
BuildContext context,
ModalPosition position,
- List<PopupMenuEntry/*<T>*/> items,
+ List<PopupMenuEntry<dynamic/*=T*/>> items,
dynamic/*=T*/ initialValue,
int elevation: 8
}) {
assert(context != null);
assert(items != null && items.length > 0);
- Completer completer = new Completer/*<T>*/();
- Navigator.push(context, new _PopupMenuRoute/*<T>*/(
+ Completer<dynamic/*=T*/> completer = new Completer<dynamic/*=T*/>();
+ Navigator.push(context, new _PopupMenuRoute<dynamic/*=T*/>(
completer: completer,
position: position,
items: items,
diff --git a/packages/flutter/lib/src/material/progress_indicator.dart b/packages/flutter/lib/src/material/progress_indicator.dart
index fc47e1e..5955c8b 100644
--- a/packages/flutter/lib/src/material/progress_indicator.dart
+++ b/packages/flutter/lib/src/material/progress_indicator.dart
@@ -128,11 +128,11 @@
}
class _CircularProgressIndicatorPainter extends CustomPainter {
- static const _kTwoPI = math.PI * 2.0;
- static const _kEpsilon = .001;
+ static const double _kTwoPI = math.PI * 2.0;
+ static const double _kEpsilon = .001;
// Canavs.drawArc(r, 0, 2*PI) doesn't draw anything, so just get close.
- static const _kSweep = _kTwoPI - _kEpsilon;
- static const _kStartAngle = -math.PI / 2.0;
+ static const double _kSweep = _kTwoPI - _kEpsilon;
+ static const double _kStartAngle = -math.PI / 2.0;
const _CircularProgressIndicatorPainter({
this.valueColor,
diff --git a/packages/flutter/lib/src/material/scaffold.dart b/packages/flutter/lib/src/material/scaffold.dart
index 0937b58..25ea3a4 100644
--- a/packages/flutter/lib/src/material/scaffold.dart
+++ b/packages/flutter/lib/src/material/scaffold.dart
@@ -229,24 +229,24 @@
// SNACKBAR API
- Queue<ScaffoldFeatureController<SnackBar>> _snackBars = new Queue<ScaffoldFeatureController<SnackBar>>();
+ Queue<ScaffoldFeatureController<SnackBar, Null>> _snackBars = new Queue<ScaffoldFeatureController<SnackBar, Null>>();
AnimationController _snackBarController;
Timer _snackBarTimer;
- ScaffoldFeatureController showSnackBar(SnackBar snackbar) {
+ ScaffoldFeatureController<SnackBar, Null> showSnackBar(SnackBar snackbar) {
_snackBarController ??= SnackBar.createAnimationController()
..addStatusListener(_handleSnackBarStatusChange);
if (_snackBars.isEmpty) {
assert(_snackBarController.isDismissed);
_snackBarController.forward();
}
- ScaffoldFeatureController<SnackBar> controller;
- controller = new ScaffoldFeatureController<SnackBar>._(
+ ScaffoldFeatureController<SnackBar, Null> controller;
+ controller = new ScaffoldFeatureController<SnackBar, Null>._(
// We provide a fallback key so that if back-to-back snackbars happen to
// match in structure, material ink splashes and highlights don't survive
// from one to the next.
snackbar.withAnimation(_snackBarController, fallbackKey: new UniqueKey()),
- new Completer(),
+ new Completer<Null>(),
() {
assert(_snackBars.first == controller);
_hideSnackBar();
@@ -294,14 +294,14 @@
// PERSISTENT BOTTOM SHEET API
List<Widget> _dismissedBottomSheets;
- ScaffoldFeatureController _currentBottomSheet;
+ PersistentBottomSheetController<Null> _currentBottomSheet;
- ScaffoldFeatureController showBottomSheet(WidgetBuilder builder) {
+ PersistentBottomSheetController<dynamic/*=T*/> showBottomSheet/*<T>*/(WidgetBuilder builder) {
if (_currentBottomSheet != null) {
_currentBottomSheet.close();
assert(_currentBottomSheet == null);
}
- Completer completer = new Completer();
+ Completer<dynamic/*=T*/> completer = new Completer<dynamic/*=T*/>();
GlobalKey<_PersistentBottomSheetState> bottomSheetKey = new GlobalKey<_PersistentBottomSheetState>();
AnimationController controller = BottomSheet.createAnimationController()
..forward();
@@ -334,7 +334,7 @@
);
ModalRoute.of(context).addLocalHistoryEntry(entry);
setState(() {
- _currentBottomSheet = new ScaffoldFeatureController._(
+ _currentBottomSheet = new PersistentBottomSheetController<dynamic/*=T*/>._(
bottomSheet,
completer,
() => entry.remove(),
@@ -447,7 +447,7 @@
} else if (_scrollOffset > appBarHeight) {
// scrolled down, show the "floating" toolbar
_floatingAppBarHeight = (_floatingAppBarHeight + _scrollOffsetDelta).clamp(0.0, toolBarHeight);
- final toolBarOpacity = _toolBarOpacity(_floatingAppBarHeight / toolBarHeight);
+ final double toolBarOpacity = _toolBarOpacity(_floatingAppBarHeight / toolBarHeight);
_appBarController.value = (appBarHeight - _floatingAppBarHeight) / appBarHeight;
appBar = new SizedBox(
height: _floatingAppBarHeight,
@@ -471,7 +471,7 @@
EdgeDims padding = MediaQuery.of(context)?.padding ?? EdgeDims.zero;
if (_snackBars.length > 0) {
- ModalRoute route = ModalRoute.of(context);
+ ModalRoute<dynamic> route = ModalRoute.of(context);
if (route == null || route.isCurrent) {
if (_snackBarController.isCompleted && _snackBarTimer == null)
_snackBarTimer = new Timer(_snackBars.first._widget.duration, _hideSnackBar);
@@ -563,11 +563,11 @@
}
}
-class ScaffoldFeatureController<T extends Widget> {
+class ScaffoldFeatureController<T extends Widget, U> {
const ScaffoldFeatureController._(this._widget, this._completer, this.close, this.setState);
final T _widget;
- final Completer _completer;
- Future get closed => _completer.future;
+ final Completer<U> _completer;
+ Future<U> get closed => _completer.future;
final VoidCallback close; // call this to close the bottom sheet or snack bar
final StateSetter setState;
}
@@ -641,3 +641,15 @@
}
}
+
+/// A [ScaffoldFeatureController] for persistent bottom sheets.
+///
+/// This is the type of objects returned by [Scaffold.showBottomSheet].
+class PersistentBottomSheetController<T> extends ScaffoldFeatureController<_PersistentBottomSheet, T> {
+ const PersistentBottomSheetController._(
+ _PersistentBottomSheet widget,
+ Completer<T> completer,
+ VoidCallback close,
+ StateSetter setState
+ ) : super._(widget, completer, close, setState);
+}
diff --git a/packages/flutter/lib/src/material/scrollbar_painter.dart b/packages/flutter/lib/src/material/scrollbar_painter.dart
index 4eb4858..4b89a46 100644
--- a/packages/flutter/lib/src/material/scrollbar_painter.dart
+++ b/packages/flutter/lib/src/material/scrollbar_painter.dart
@@ -60,7 +60,7 @@
AnimationController _fade;
- Future scrollStarted() {
+ Future<Null> scrollStarted() {
if (_fade == null) {
_fade = new AnimationController(duration: _kScrollbarThumbFadeDuration);
CurvedAnimation curve = new CurvedAnimation(parent: _fade, curve: Curves.ease);
@@ -72,7 +72,7 @@
return _fade.forward();
}
- Future scrollEnded() {
+ Future<Null> scrollEnded() {
return _fade.reverse();
}
diff --git a/packages/flutter/lib/src/material/switch.dart b/packages/flutter/lib/src/material/switch.dart
index 86d0108..4a7461e 100644
--- a/packages/flutter/lib/src/material/switch.dart
+++ b/packages/flutter/lib/src/material/switch.dart
@@ -24,7 +24,7 @@
Widget build(BuildContext context) {
assert(debugCheckHasMaterial(context));
ThemeData themeData = Theme.of(context);
- final isDark = themeData.brightness == ThemeBrightness.dark;
+ final bool isDark = themeData.brightness == ThemeBrightness.dark;
Color activeThumbColor = activeColor ?? themeData.accentColor;
Color activeTrackColor = activeThumbColor.withAlpha(0x80);
diff --git a/packages/flutter/lib/src/material/tabs.dart b/packages/flutter/lib/src/material/tabs.dart
index c2fe9a1..1c323c5 100644
--- a/packages/flutter/lib/src/material/tabs.dart
+++ b/packages/flutter/lib/src/material/tabs.dart
@@ -416,8 +416,8 @@
TabBarSelectionState<T> createState() => new TabBarSelectionState<T>();
- static TabBarSelectionState of(BuildContext context) {
- return context.ancestorStateOfType(const TypeMatcher<TabBarSelectionState>());
+ static TabBarSelectionState<dynamic/*=T*/> of/*<T>*/(BuildContext context) {
+ return context.ancestorStateOfType(const TypeMatcher<TabBarSelectionState<dynamic/*=T*/>>());
}
}
@@ -449,7 +449,7 @@
_initValueToIndex();
}
- void didUpdateConfig(TabBarSelection oldConfig) {
+ void didUpdateConfig(TabBarSelection<T> oldConfig) {
super.didUpdateConfig(oldConfig);
if (values != oldConfig.values)
_initValueToIndex();
@@ -564,12 +564,12 @@
final Map<T, TabLabel> labels;
final bool isScrollable;
- _TabBarState createState() => new _TabBarState();
+ _TabBarState<T> createState() => new _TabBarState<T>();
}
class _TabBarState<T> extends ScrollableState<TabBar<T>> implements TabBarSelectionAnimationListener {
- TabBarSelectionState _selection;
+ TabBarSelectionState<T> _selection;
bool _valueIsChanging = false;
void _initSelection(TabBarSelectionState<T> selection) {
@@ -584,7 +584,7 @@
_initSelection(TabBarSelection.of(context));
}
- void didUpdateConfig(TabBar oldConfig) {
+ void didUpdateConfig(TabBar<T> oldConfig) {
super.didUpdateConfig(oldConfig);
if (!config.isScrollable)
scrollTo(0.0);
@@ -666,7 +666,7 @@
return new Rect.fromLTRB(r.left, r.bottom, r.right, r.bottom + _kTabIndicatorHeight);
}
- ScrollBehavior createScrollBehavior() => new _TabsScrollBehavior();
+ ScrollBehavior<double, double> createScrollBehavior() => new _TabsScrollBehavior();
_TabsScrollBehavior get scrollBehavior => super.scrollBehavior;
double _centeredTabScrollOffset(int tabIndex) {
@@ -795,7 +795,7 @@
}
}
-class TabBarView extends PageableList {
+class TabBarView<T> extends PageableList {
TabBarView({
Key key,
List<Widget> children
@@ -808,12 +808,12 @@
assert(children.length > 1);
}
- _TabBarViewState createState() => new _TabBarViewState();
+ _TabBarViewState<T> createState() => new _TabBarViewState<T>();
}
-class _TabBarViewState extends PageableListState<TabBarView> implements TabBarSelectionAnimationListener {
+class _TabBarViewState<T> extends PageableListState<TabBarView<T>> implements TabBarSelectionAnimationListener {
- TabBarSelectionState _selection;
+ TabBarSelectionState<T> _selection;
List<Widget> _items;
int get _tabCount => config.children.length;
@@ -825,7 +825,7 @@
return _boundedBehavior;
}
- void _initSelection(TabBarSelectionState selection) {
+ void _initSelection(TabBarSelectionState<T> selection) {
_selection = selection;
if (_selection != null) {
_selection.registerAnimationListener(this);
@@ -838,7 +838,7 @@
_initSelection(TabBarSelection.of(context));
}
- void didUpdateConfig(TabBarView oldConfig) {
+ void didUpdateConfig(TabBarView<T> oldConfig) {
super.didUpdateConfig(oldConfig);
if (_selection != null && config.children != oldConfig.children)
_updateItemsForSelectedIndex(_selection.index);
@@ -931,15 +931,15 @@
controller.value = scrollOffset / 2.0;
}
- Future fling(double scrollVelocity) {
+ Future<Null> fling(double scrollVelocity) {
if (_selection == null || _selection.valueIsChanging)
- return new Future.value();
+ return new Future<Null>.value();
if (scrollVelocity.abs() > _kMinFlingVelocity) {
final int selectionDelta = scrollVelocity.sign.truncate();
final int targetIndex = (_selection.index + selectionDelta).clamp(0, _tabCount - 1);
_selection.value = _selection.values[targetIndex];
- return new Future.value();
+ return new Future<Null>.value();
}
final int selectionIndex = _selection.index;
@@ -947,16 +947,16 @@
if (selectionIndex > 0 && settleIndex != 1) {
final int targetIndex = (selectionIndex + (settleIndex == 2 ? 1 : -1)).clamp(0, _tabCount - 1);
_selection.value = _selection.values[targetIndex];
- return new Future.value();
+ return new Future<Null>.value();
} else if (selectionIndex == 0 && settleIndex == 1) {
_selection.value = _selection.values[1];
- return new Future.value();
+ return new Future<Null>.value();
}
return settleScrollOffset();
}
Widget buildContent(BuildContext context) {
- TabBarSelectionState newSelection = TabBarSelection.of(context);
+ TabBarSelectionState<T> newSelection = TabBarSelection.of(context);
if (_selection != newSelection)
_initSelection(newSelection);
return new PageViewport(
@@ -972,7 +972,7 @@
class TabPageSelector<T> extends StatelessComponent {
const TabPageSelector({ Key key }) : super(key: key);
- Widget _buildTabIndicator(TabBarSelectionState<T> selection, T tab, Animation animation, ColorTween selectedColor, ColorTween previousColor) {
+ Widget _buildTabIndicator(TabBarSelectionState<T> selection, T tab, Animation<double> animation, ColorTween selectedColor, ColorTween previousColor) {
Color background;
if (selection.valueIsChanging) {
// The selection's animation is animating from previousValue to value.
@@ -998,7 +998,7 @@
}
Widget build(BuildContext context) {
- final TabBarSelectionState selection = TabBarSelection.of(context);
+ final TabBarSelectionState<T> selection = TabBarSelection.of(context);
final Color color = Theme.of(context).accentColor;
final ColorTween selectedColor = new ColorTween(begin: Colors.transparent, end: color);
final ColorTween previousColor = new ColorTween(begin: color, end: Colors.transparent);
diff --git a/packages/flutter/lib/src/material/theme.dart b/packages/flutter/lib/src/material/theme.dart
index bdd887d..f3c9efe 100644
--- a/packages/flutter/lib/src/material/theme.dart
+++ b/packages/flutter/lib/src/material/theme.dart
@@ -8,7 +8,7 @@
export 'theme_data.dart' show ThemeData, ThemeBrightness;
-const kThemeAnimationDuration = const Duration(milliseconds: 200);
+const Duration kThemeAnimationDuration = const Duration(milliseconds: 200);
/// Applies a theme to descendant widgets.
class Theme extends InheritedWidget {
@@ -73,7 +73,7 @@
class _AnimatedThemeState extends AnimatedWidgetBaseState<AnimatedTheme> {
ThemeDataTween _data;
- void forEachTween(TweenVisitor visitor) {
+ void forEachTween(TweenVisitor<dynamic> visitor) {
// TODO(ianh): Use constructor tear-offs when it becomes possible
_data = visitor(_data, config.data, (dynamic value) => new ThemeDataTween(begin: value));
assert(_data != null);
diff --git a/packages/flutter/lib/src/painting/box_painter.dart b/packages/flutter/lib/src/painting/box_painter.dart
index 440d9f9..7739b01 100644
--- a/packages/flutter/lib/src/painting/box_painter.dart
+++ b/packages/flutter/lib/src/painting/box_painter.dart
@@ -27,7 +27,7 @@
final double width;
/// A black border side of zero width.
- static const none = const BorderSide(width: 0.0);
+ static const BorderSide none = const BorderSide(width: 0.0);
BorderSide copyWith({
Color color,
diff --git a/packages/flutter/lib/src/painting/text_painter.dart b/packages/flutter/lib/src/painting/text_painter.dart
index ab8b69b..248ef9c 100644
--- a/packages/flutter/lib/src/painting/text_painter.dart
+++ b/packages/flutter/lib/src/painting/text_painter.dart
@@ -197,7 +197,7 @@
/// The minimum width at which to layout the text.
double get minWidth => _paragraph.minWidth;
- void set minWidth(value) {
+ void set minWidth(double value) {
if (_paragraph.minWidth == value)
return;
_paragraph.minWidth = value;
@@ -206,7 +206,7 @@
/// The maximum width at which to layout the text.
double get maxWidth => _paragraph.maxWidth;
- void set maxWidth(value) {
+ void set maxWidth(double value) {
if (_paragraph.maxWidth == value)
return;
_paragraph.maxWidth = value;
@@ -215,7 +215,7 @@
/// The minimum height at which to layout the text.
double get minHeight => _paragraph.minHeight;
- void set minHeight(value) {
+ void set minHeight(double value) {
if (_paragraph.minHeight == value)
return;
_paragraph.minHeight = value;
@@ -224,7 +224,7 @@
/// The maximum height at which to layout the text.
double get maxHeight => _paragraph.maxHeight;
- void set maxHeight(value) {
+ void set maxHeight(double value) {
if (_paragraph.maxHeight == value)
return;
_paragraph.maxHeight = value;
diff --git a/packages/flutter/lib/src/rendering/basic_types.dart b/packages/flutter/lib/src/rendering/basic_types.dart
index 2beeee6..5d39c83 100644
--- a/packages/flutter/lib/src/rendering/basic_types.dart
+++ b/packages/flutter/lib/src/rendering/basic_types.dart
@@ -7,9 +7,9 @@
/// A BitField over an enum (or other class whose values implement "index").
/// Only the first 63 values of the enum can be used as indices.
class BitField<T extends dynamic> {
- static const _kSMIBits = 63; // see https://www.dartlang.org/articles/numeric-computation/#smis-and-mints
- static const _kAllZeros = 0;
- static const _kAllOnes = 0x7FFFFFFFFFFFFFFF; // 2^(_kSMIBits+1)-1
+ static const int _kSMIBits = 63; // see https://www.dartlang.org/articles/numeric-computation/#smis-and-mints
+ static const int _kAllZeros = 0;
+ static const int _kAllOnes = 0x7FFFFFFFFFFFFFFF; // 2^(_kSMIBits+1)-1
BitField(this._length) : _bits = _kAllZeros {
assert(_length <= _kSMIBits);
}
diff --git a/packages/flutter/lib/src/rendering/editable_line.dart b/packages/flutter/lib/src/rendering/editable_line.dart
index e9ffd4a..4c07836 100644
--- a/packages/flutter/lib/src/rendering/editable_line.dart
+++ b/packages/flutter/lib/src/rendering/editable_line.dart
@@ -11,9 +11,9 @@
import 'object.dart';
import 'viewport.dart';
-const _kCaretGap = 1.0; // pixels
-const _kCaretHeightOffset = 2.0; // pixels
-const _kCaretWidth = 1.0; // pixels
+const double _kCaretGap = 1.0; // pixels
+const double _kCaretHeightOffset = 2.0; // pixels
+const double _kCaretWidth = 1.0; // pixels
final String _kZeroWidthSpace = new String.fromCharCode(0x200B);
diff --git a/packages/flutter/lib/src/rendering/flex.dart b/packages/flutter/lib/src/rendering/flex.dart
index cfd8896..8012c45 100644
--- a/packages/flutter/lib/src/rendering/flex.dart
+++ b/packages/flutter/lib/src/rendering/flex.dart
@@ -561,7 +561,7 @@
Paint markerPaint = new Paint()..color = const Color(0xE0FF0000);
Paint highlightPaint = new Paint()..color = const Color(0x7FFF0000);
- const kMarkerSize = 0.1;
+ const double kMarkerSize = 0.1;
Rect markerRect, overflowRect;
switch(direction) {
case FlexDirection.horizontal:
diff --git a/packages/flutter/lib/src/rendering/proxy_box.dart b/packages/flutter/lib/src/rendering/proxy_box.dart
index f9c8ed8..70d04cb 100644
--- a/packages/flutter/lib/src/rendering/proxy_box.dart
+++ b/packages/flutter/lib/src/rendering/proxy_box.dart
@@ -756,7 +756,7 @@
Rect getApproximateClipRect(Size size) => Point.origin & size;
/// Returns true if the new instance will result in a different clip
/// than the oldClipper instance.
- bool shouldRepaint(CustomClipper oldClipper);
+ bool shouldRepaint(CustomClipper<T> oldClipper);
}
abstract class _RenderCustomClip<T> extends RenderProxyBox {
@@ -1100,13 +1100,13 @@
}
/// Concatenates a translation by (x, y, z) into the transform.
- void translate(x, [double y = 0.0, double z = 0.0]) {
+ void translate(double x, [double y = 0.0, double z = 0.0]) {
_transform.translate(x, y, z);
markNeedsPaint();
}
/// Concatenates a scale into the transform.
- void scale(x, [double y, double z]) {
+ void scale(double x, [double y, double z]) {
_transform.scale(x, y, z);
markNeedsPaint();
}
diff --git a/packages/flutter/lib/src/rendering/shifted_box.dart b/packages/flutter/lib/src/rendering/shifted_box.dart
index 1eadc59..18f2154 100644
--- a/packages/flutter/lib/src/rendering/shifted_box.dart
+++ b/packages/flutter/lib/src/rendering/shifted_box.dart
@@ -176,7 +176,7 @@
context.canvas.drawPath(path, paint);
paint = new Paint()
..color = debugPaintPaddingInnerEdgeColor;
- const kOutline = 2.0;
+ const double kOutline = 2.0;
path = new Path()
..moveTo(offset.dx + math.max(padding.left - kOutline, 0.0), offset.dy + math.max(padding.top - kOutline, 0.0))
..lineTo(offset.dx + math.min(size.width - padding.right + kOutline, size.width), offset.dy + math.max(padding.top - kOutline, 0.0))
diff --git a/packages/flutter/lib/src/rendering/stack.dart b/packages/flutter/lib/src/rendering/stack.dart
index 0a09f49..8bf2f3e 100644
--- a/packages/flutter/lib/src/rendering/stack.dart
+++ b/packages/flutter/lib/src/rendering/stack.dart
@@ -198,7 +198,7 @@
RenderBoxContainerDefaultsMixin<RenderBox, StackParentData> {
RenderStackBase({
List<RenderBox> children,
- alignment: const FractionalOffset(0.0, 0.0)
+ FractionalOffset alignment: const FractionalOffset(0.0, 0.0)
}) : _alignment = alignment {
addAll(children);
}
@@ -425,7 +425,7 @@
class RenderStack extends RenderStackBase {
RenderStack({
List<RenderBox> children,
- alignment: const FractionalOffset(0.0, 0.0)
+ FractionalOffset alignment: const FractionalOffset(0.0, 0.0)
}) : super(
children: children,
alignment: alignment
@@ -444,7 +444,7 @@
class RenderIndexedStack extends RenderStackBase {
RenderIndexedStack({
List<RenderBox> children,
- alignment: const FractionalOffset(0.0, 0.0),
+ FractionalOffset alignment: const FractionalOffset(0.0, 0.0),
int index: 0
}) : _index = index, super(
children: children,
diff --git a/packages/flutter/lib/src/scheduler/scheduler.dart b/packages/flutter/lib/src/scheduler/scheduler.dart
index 62223fc..4a32f86 100644
--- a/packages/flutter/lib/src/scheduler/scheduler.dart
+++ b/packages/flutter/lib/src/scheduler/scheduler.dart
@@ -106,7 +106,7 @@
// Note that we inverse the priority.
return -e1.priority.compareTo(e2.priority);
}
- final PriorityQueue _taskQueue = new HeapPriorityQueue<_TaskEntry>(_taskSorter);
+ final PriorityQueue<_TaskEntry> _taskQueue = new HeapPriorityQueue<_TaskEntry>(_taskSorter);
/// Whether this scheduler already requested to be called from the event loop.
bool _hasRequestedAnEventLoopCallback = false;
diff --git a/packages/flutter/lib/src/scheduler/ticker.dart b/packages/flutter/lib/src/scheduler/ticker.dart
index 03980cc..e6d453a 100644
--- a/packages/flutter/lib/src/scheduler/ticker.dart
+++ b/packages/flutter/lib/src/scheduler/ticker.dart
@@ -16,17 +16,17 @@
final TickerCallback _onTick;
- Completer _completer;
+ Completer<Null> _completer;
int _animationId;
Duration _startTime;
/// Starts calling onTick once per animation frame.
///
/// The returned future resolves once the ticker stops ticking.
- Future start() {
+ Future<Null> start() {
assert(!isTicking);
assert(_startTime == null);
- _completer = new Completer();
+ _completer = new Completer<Null>();
_scheduleTick();
return _completer.future;
}
@@ -48,7 +48,7 @@
// We take the _completer into a local variable so that isTicking is false
// when we actually complete the future (isTicking uses _completer
// to determine its state).
- Completer localCompleter = _completer;
+ Completer<Null> localCompleter = _completer;
_completer = null;
assert(!isTicking);
localCompleter.complete();
diff --git a/packages/flutter/lib/src/services/asset_bundle.dart b/packages/flutter/lib/src/services/asset_bundle.dart
index 2b82857..43df8f9 100644
--- a/packages/flutter/lib/src/services/asset_bundle.dart
+++ b/packages/flutter/lib/src/services/asset_bundle.dart
@@ -80,7 +80,7 @@
return new MojoAssetBundle(bundle);
}
- static Future _fetchAndUnpackBundle(String relativeUrl, AssetBundleProxy bundle) async {
+ static Future<Null> _fetchAndUnpackBundle(String relativeUrl, AssetBundleProxy bundle) async {
core.MojoDataPipeConsumer bundleData = (await fetchUrl(relativeUrl)).body;
AssetUnpackerProxy unpacker = new AssetUnpackerProxy.unbound();
shell.connectToService("mojo:asset_bundle", unpacker);
diff --git a/packages/flutter/lib/src/services/image_cache.dart b/packages/flutter/lib/src/services/image_cache.dart
index 74a9aff..cf06a5d 100644
--- a/packages/flutter/lib/src/services/image_cache.dart
+++ b/packages/flutter/lib/src/services/image_cache.dart
@@ -36,8 +36,11 @@
);
}
- bool operator ==(other) {
- return other is _UrlFetcher && _url == other._url && _scale == other._scale;
+ bool operator ==(dynamic other) {
+ if (other is! _UrlFetcher)
+ return false;
+ final _UrlFetcher typedOther = other;
+ return _url == typedOther._url && _scale == typedOther._scale;
}
int get hashCode => hashValues(_url, _scale);
diff --git a/packages/flutter/lib/src/services/image_resource.dart b/packages/flutter/lib/src/services/image_resource.dart
index c3a5b59..cc8e008 100644
--- a/packages/flutter/lib/src/services/image_resource.dart
+++ b/packages/flutter/lib/src/services/image_resource.dart
@@ -24,7 +24,12 @@
/// or because the underlying image resource was mutated.
class ImageResource {
ImageResource(this._futureImage) {
- _futureImage.then(_handleImageLoaded, onError: (exception, stack) => _handleImageError('Failed to load image:', exception, stack));
+ _futureImage.then(
+ _handleImageLoaded,
+ onError: (dynamic exception, dynamic stack) {
+ _handleImageError('Failed to load image:', exception, stack);
+ }
+ );
}
bool _resolved = false;
diff --git a/packages/flutter/lib/src/widgets/asset_vendor.dart b/packages/flutter/lib/src/widgets/asset_vendor.dart
index 69febf8..9ff288f 100644
--- a/packages/flutter/lib/src/widgets/asset_vendor.dart
+++ b/packages/flutter/lib/src/widgets/asset_vendor.dart
@@ -86,9 +86,9 @@
// one.
Map<String, List<String>> _assetManifest;
- Future _initializer;
+ Future<Null> _initializer;
- Future _loadManifest() async {
+ Future<Null> _loadManifest() async {
String json = await bundle.loadString("AssetManifest.json");
_assetManifest = JSON.decode(json);
}
diff --git a/packages/flutter/lib/src/widgets/basic.dart b/packages/flutter/lib/src/widgets/basic.dart
index 509bd9d..c127f28 100644
--- a/packages/flutter/lib/src/widgets/basic.dart
+++ b/packages/flutter/lib/src/widgets/basic.dart
@@ -419,7 +419,7 @@
/// Centers its child within itself.
class Center extends Align {
- Center({ Key key, widthFactor, heightFactor, Widget child })
+ Center({ Key key, double widthFactor, double heightFactor, Widget child })
: super(key: key, widthFactor: widthFactor, heightFactor: heightFactor, child: child);
}
@@ -453,7 +453,7 @@
Key key,
Widget child,
Object id
- }) : id = id, super(key: key ?? new ValueKey(id), child: child) {
+ }) : id = id, super(key: key ?? new ValueKey<Object>(id), child: child) {
assert(child != null);
assert(id != null);
}
@@ -1388,9 +1388,9 @@
Row({
Key key,
List<Widget> children: _emptyWidgetList,
- justifyContent: FlexJustifyContent.start,
- alignItems: FlexAlignItems.center,
- textBaseline
+ FlexJustifyContent justifyContent: FlexJustifyContent.start,
+ FlexAlignItems alignItems: FlexAlignItems.center,
+ TextBaseline textBaseline
}) : super(
children: children,
key: key,
@@ -1409,9 +1409,9 @@
Column({
Key key,
List<Widget> children: _emptyWidgetList,
- justifyContent: FlexJustifyContent.start,
- alignItems: FlexAlignItems.center,
- textBaseline
+ FlexJustifyContent justifyContent: FlexJustifyContent.start,
+ FlexAlignItems alignItems: FlexAlignItems.center,
+ TextBaseline textBaseline
}) : super(
children: children,
key: key,
diff --git a/packages/flutter/lib/src/widgets/binding.dart b/packages/flutter/lib/src/widgets/binding.dart
index 8873d14..ac0cf19 100644
--- a/packages/flutter/lib/src/widgets/binding.dart
+++ b/packages/flutter/lib/src/widgets/binding.dart
@@ -222,9 +222,11 @@
class RenderObjectToWidgetElement<T extends RenderObject> extends RenderObjectElement {
RenderObjectToWidgetElement(RenderObjectToWidgetAdapter<T> widget) : super(widget);
+ RenderObjectToWidgetAdapter<T> get widget => super.widget;
+
Element _child;
- static const _rootChildSlot = const Object();
+ static const Object _rootChildSlot = const Object();
void visitChildren(ElementVisitor visitor) {
if (_child != null)
diff --git a/packages/flutter/lib/src/widgets/checked_mode_banner.dart b/packages/flutter/lib/src/widgets/checked_mode_banner.dart
index 2aa8af6..5ec239d 100644
--- a/packages/flutter/lib/src/widgets/checked_mode_banner.dart
+++ b/packages/flutter/lib/src/widgets/checked_mode_banner.dart
@@ -10,12 +10,12 @@
class _CheckedModeBannerPainter extends CustomPainter {
const _CheckedModeBannerPainter();
- static const kColor = const Color(0xA0B71C1C);
- static const kOffset = 40.0; // distance to bottom of banner, at a 45 degree angle inwards from the top right corner
- static const kHeight = 12.0; // height of banner
- static const kTextAlign = const Offset(0.0, -3.0); // offset to move text up
- static const kFontSize = kHeight * 0.85;
- static const kShadowBlur = 4.0; // shadow blur sigma
+ static const Color kColor = const Color(0xA0B71C1C);
+ static const double kOffset = 40.0; // distance to bottom of banner, at a 45 degree angle inwards from the top right corner
+ static const double kHeight = 12.0; // height of banner
+ static const Offset kTextAlign = const Offset(0.0, -3.0); // offset to move text up
+ static const double kFontSize = kHeight * 0.85;
+ static const double kShadowBlur = 4.0; // shadow blur sigma
static final Rect kRect = new Rect.fromLTWH(-kOffset, kOffset-kHeight, kOffset * 2.0, kHeight);
static const TextStyle kTextStyles = const TextStyle(
color: const Color(0xFFFFFFFF),
diff --git a/packages/flutter/lib/src/widgets/drag_target.dart b/packages/flutter/lib/src/widgets/drag_target.dart
index 8f129d0..738fe4b 100644
--- a/packages/flutter/lib/src/widgets/drag_target.dart
+++ b/packages/flutter/lib/src/widgets/drag_target.dart
@@ -80,7 +80,7 @@
/// Should return a new MultiDragGestureRecognizer instance
/// constructed with the given arguments.
- MultiDragGestureRecognizer createRecognizer(GestureMultiDragStartCallback onStart);
+ MultiDragGestureRecognizer<dynamic> createRecognizer(GestureMultiDragStartCallback onStart);
_DraggableState<T> createState() => new _DraggableState<T>();
}
@@ -107,7 +107,7 @@
maxSimultaneousDrags: maxSimultaneousDrags
);
- MultiDragGestureRecognizer createRecognizer(GestureMultiDragStartCallback onStart) {
+ ImmediateMultiDragGestureRecognizer createRecognizer(GestureMultiDragStartCallback onStart) {
return new ImmediateMultiDragGestureRecognizer()..onStart = onStart;
}
}
@@ -135,7 +135,7 @@
maxSimultaneousDrags: maxSimultaneousDrags
);
- MultiDragGestureRecognizer createRecognizer(GestureMultiDragStartCallback onStart) {
+ HorizontalMultiDragGestureRecognizer createRecognizer(GestureMultiDragStartCallback onStart) {
return new HorizontalMultiDragGestureRecognizer()..onStart = onStart;
}
}
@@ -163,7 +163,7 @@
maxSimultaneousDrags: maxSimultaneousDrags
);
- MultiDragGestureRecognizer createRecognizer(GestureMultiDragStartCallback onStart) {
+ VerticalMultiDragGestureRecognizer createRecognizer(GestureMultiDragStartCallback onStart) {
return new VerticalMultiDragGestureRecognizer()..onStart = onStart;
}
}
@@ -190,7 +190,7 @@
maxSimultaneousDrags: maxSimultaneousDrags
);
- MultiDragGestureRecognizer createRecognizer(GestureMultiDragStartCallback onStart) {
+ DelayedMultiDragGestureRecognizer createRecognizer(GestureMultiDragStartCallback onStart) {
return new DelayedMultiDragGestureRecognizer()
..onStart = (Point position) {
Drag result = onStart(position);
@@ -217,7 +217,7 @@
_recognizer.addPointer(event);
}
- _DragAvatar _startDrag(Point position) {
+ _DragAvatar<T> _startDrag(Point position) {
if (config.maxSimultaneousDrags != null && _activeCount >= config.maxSimultaneousDrags)
return null;
Point dragStartPoint;
@@ -361,7 +361,7 @@
final Offset feedbackOffset;
final VoidCallback onDragEnd;
- _DragTargetState _activeTarget;
+ _DragTargetState<T> _activeTarget;
bool _activeTargetWillAcceptDrop = false;
Point _position;
Offset _lastOffset;
@@ -384,7 +384,7 @@
_entry.markNeedsBuild();
HitTestResult result = new HitTestResult();
WidgetFlutterBinding.instance.hitTest(result, globalPosition + feedbackOffset);
- _DragTargetState target = _getDragTarget(result.path);
+ _DragTargetState<T> target = _getDragTarget(result.path);
if (target == _activeTarget)
return;
if (_activeTarget != null)
@@ -393,13 +393,13 @@
_activeTargetWillAcceptDrop = _activeTarget != null && _activeTarget.didEnter(data);
}
- _DragTargetState _getDragTarget(List<HitTestEntry> path) {
+ _DragTargetState<T> _getDragTarget(List<HitTestEntry> path) {
// Look for the RenderBox that corresponds to the hit target (the hit target
// widget builds a RenderMetadata box for us for this purpose).
for (HitTestEntry entry in path) {
if (entry.target is RenderMetaData) {
RenderMetaData renderMetaData = entry.target;
- if (renderMetaData.metaData is _DragTargetState)
+ if (renderMetaData.metaData is _DragTargetState<T>)
return renderMetaData.metaData;
}
}
diff --git a/packages/flutter/lib/src/widgets/editable.dart b/packages/flutter/lib/src/widgets/editable.dart
index 8e833a3..e722cfa 100644
--- a/packages/flutter/lib/src/widgets/editable.dart
+++ b/packages/flutter/lib/src/widgets/editable.dart
@@ -192,7 +192,7 @@
_KeyboardClientImpl _keyboardClient;
KeyboardHandle _keyboardHandle;
- ScrollBehavior createScrollBehavior() => new BoundedBehavior();
+ ScrollBehavior<double, double> createScrollBehavior() => new BoundedBehavior();
BoundedBehavior get scrollBehavior => super.scrollBehavior;
void initState() {
diff --git a/packages/flutter/lib/src/widgets/framework.dart b/packages/flutter/lib/src/widgets/framework.dart
index 8bf1794..70256d7 100644
--- a/packages/flutter/lib/src/widgets/framework.dart
+++ b/packages/flutter/lib/src/widgets/framework.dart
@@ -119,8 +119,8 @@
Widget get currentWidget => _currentElement?.widget;
T get currentState {
Element element = _currentElement;
- if (element is StatefulComponentElement<StatefulComponent, T>) {
- StatefulComponentElement<StatefulComponent, T> statefulElement = element;
+ if (element is StatefulComponentElement) {
+ StatefulComponentElement statefulElement = element;
return statefulElement.state;
}
return null;
@@ -304,7 +304,7 @@
/// Verifies that the State that was created is one that expects to be created
/// for that particular Widget.
- bool _debugTypesAreRight(widget) => widget is T;
+ bool _debugTypesAreRight(Widget widget) => widget is T;
/// Pointer to the owner Element object
StatefulComponentElement _element;
@@ -420,7 +420,7 @@
const ParentDataWidget({ Key key, Widget child })
: super(key: key, child: child);
- ParentDataElement createElement() => new ParentDataElement(this);
+ ParentDataElement<T> createElement() => new ParentDataElement<T>(this);
/// Subclasses should override this function to return true if the given
/// ancestor is a RenderObjectWidget that wraps a RenderObject that can handle
@@ -612,8 +612,8 @@
///
/// Elements can, in principle, have children. Only subclasses of
/// RenderObjectElement are allowed to have more than one child.
-abstract class Element<T extends Widget> implements BuildContext {
- Element(T widget) : _widget = widget {
+abstract class Element implements BuildContext {
+ Element(Widget widget) : _widget = widget {
assert(widget != null);
}
@@ -633,8 +633,8 @@
int _depth;
/// The configuration for this element.
- T get widget => _widget;
- T _widget;
+ Widget get widget => _widget;
+ Widget _widget;
bool _active = false;
@@ -744,7 +744,7 @@
}
/// Called when an Element receives a new configuration widget.
- void update(T newWidget) {
+ void update(Widget newWidget) {
assert(_debugLifecycleState == _ElementLifecycle.active);
assert(widget != null);
assert(newWidget != null);
@@ -1040,8 +1040,8 @@
/// Base class for instantiations of widgets that have builders and can be
/// marked dirty.
-abstract class BuildableElement<T extends Widget> extends Element<T> {
- BuildableElement(T widget) : super(widget);
+abstract class BuildableElement extends Element {
+ BuildableElement(Widget widget) : super(widget);
/// Returns true if the element has been marked as needing rebuilding.
bool get dirty => _dirty;
@@ -1197,8 +1197,8 @@
/// Base class for the instantiation of StatelessComponent, StatefulComponent,
/// and ProxyComponent widgets.
-abstract class ComponentElement<T extends Widget> extends BuildableElement<T> {
- ComponentElement(T widget) : super(widget);
+abstract class ComponentElement extends BuildableElement {
+ ComponentElement(Widget widget) : super(widget);
WidgetBuilder _builder;
Element _child;
@@ -1271,12 +1271,14 @@
}
/// Instantiation of StatelessComponent widgets.
-class StatelessComponentElement<T extends StatelessComponent> extends ComponentElement<T> {
- StatelessComponentElement(T widget) : super(widget) {
+class StatelessComponentElement extends ComponentElement {
+ StatelessComponentElement(StatelessComponent widget) : super(widget) {
_builder = widget.build;
}
- void update(T newWidget) {
+ StatelessComponent get widget => super.widget;
+
+ void update(StatelessComponent newWidget) {
super.update(newWidget);
assert(widget == newWidget);
_builder = widget.build;
@@ -1286,10 +1288,10 @@
}
/// Instantiation of StatefulComponent widgets.
-class StatefulComponentElement<T extends StatefulComponent, U extends State<T>> extends ComponentElement<T> {
- StatefulComponentElement(T widget)
+class StatefulComponentElement extends ComponentElement {
+ StatefulComponentElement(StatefulComponent widget)
: _state = widget.createState(), super(widget) {
- assert(_state._debugTypesAreRight(widget)); // can't use T and U, since normally we don't actually set those
+ assert(_state._debugTypesAreRight(widget));
assert(_state._element == null);
_state._element = this;
assert(_builder == null);
@@ -1299,8 +1301,8 @@
assert(_state._debugLifecycleState == _StateLifecycle.created);
}
- U get state => _state;
- U _state;
+ State<StatefulComponent> get state => _state;
+ State<StatefulComponent> _state;
void _firstBuild() {
assert(_state._debugLifecycleState == _StateLifecycle.created);
@@ -1323,7 +1325,7 @@
super._firstBuild();
}
- void update(T newWidget) {
+ void update(StatefulComponent newWidget) {
super.update(newWidget);
assert(widget == newWidget);
StatefulComponent oldConfig = _state._config;
@@ -1375,15 +1377,17 @@
}
}
-abstract class _ProxyElement<T extends _ProxyComponent> extends ComponentElement<T> {
- _ProxyElement(T widget) : super(widget) {
+abstract class _ProxyElement extends ComponentElement {
+ _ProxyElement(_ProxyComponent widget) : super(widget) {
_builder = _build;
}
+ _ProxyComponent get widget => super.widget;
+
Widget _build(BuildContext context) => widget.child;
- void update(T newWidget) {
- T oldWidget = widget;
+ void update(_ProxyComponent newWidget) {
+ _ProxyComponent oldWidget = widget;
assert(widget != null);
assert(widget != newWidget);
super.update(newWidget);
@@ -1393,18 +1397,20 @@
rebuild();
}
- void notifyDescendants(T oldWidget);
+ void notifyDescendants(_ProxyComponent oldWidget);
}
-class ParentDataElement extends _ProxyElement<ParentDataWidget> {
- ParentDataElement(ParentDataWidget widget) : super(widget);
+class ParentDataElement<T extends RenderObjectWidget> extends _ProxyElement {
+ ParentDataElement(ParentDataWidget<T> widget) : super(widget);
+
+ ParentDataWidget<T> get widget => super.widget;
void mount(Element parent, dynamic slot) {
assert(() {
List<Widget> badAncestors = <Widget>[];
Element ancestor = parent;
while (ancestor != null) {
- if (ancestor is ParentDataElement) {
+ if (ancestor is ParentDataElement<dynamic>) {
badAncestors.add(ancestor.widget);
} else if (ancestor is RenderObjectElement) {
if (widget.debugIsValidAncestor(ancestor.widget))
@@ -1428,12 +1434,14 @@
super.mount(parent, slot);
}
- void notifyDescendants(ParentDataWidget oldWidget) {
+ void notifyDescendants(ParentDataWidget<T> oldWidget) {
void notifyChildren(Element child) {
- if (child is RenderObjectElement)
+ if (child is RenderObjectElement) {
child.updateParentData(widget);
- else if (child is! ParentDataElement)
+ } else {
+ assert(child is! ParentDataElement<dynamic>);
child.visitChildren(notifyChildren);
+ }
}
visitChildren(notifyChildren);
}
@@ -1441,9 +1449,11 @@
-class InheritedElement extends _ProxyElement<InheritedWidget> {
+class InheritedElement extends _ProxyElement {
InheritedElement(InheritedWidget widget) : super(widget);
+ InheritedWidget get widget => super.widget;
+
final Set<Element> _dependants = new HashSet<Element>();
void _updateInheritance() {
@@ -1481,8 +1491,10 @@
}
/// Base class for instantiations of RenderObjectWidget subclasses
-abstract class RenderObjectElement<T extends RenderObjectWidget> extends BuildableElement<T> {
- RenderObjectElement(T widget) : super(widget);
+abstract class RenderObjectElement extends BuildableElement {
+ RenderObjectElement(RenderObjectWidget widget) : super(widget);
+
+ RenderObjectWidget get widget => super.widget;
/// The underlying [RenderObject] for this element
RenderObject get renderObject => _renderObject;
@@ -1497,10 +1509,10 @@
return ancestor;
}
- ParentDataElement _findAncestorParentDataElement() {
+ ParentDataElement<dynamic> _findAncestorParentDataElement() {
Element ancestor = _parent;
while (ancestor != null && ancestor is! RenderObjectElement) {
- if (ancestor is ParentDataElement)
+ if (ancestor is ParentDataElement<dynamic>)
return ancestor;
ancestor = ancestor._parent;
}
@@ -1516,7 +1528,7 @@
_dirty = false;
}
- void update(T newWidget) {
+ void update(RenderObjectWidget newWidget) {
super.update(newWidget);
assert(widget == newWidget);
assert(() { debugUpdateRenderObjectOwner(); return true; });
@@ -1702,7 +1714,7 @@
widget.didUnmountRenderObject(renderObject);
}
- void updateParentData(ParentDataWidget parentData) {
+ void updateParentData(ParentDataWidget<dynamic> parentData) {
parentData.applyParentData(renderObject);
}
@@ -1718,7 +1730,7 @@
_slot = newSlot;
_ancestorRenderObjectElement = _findAncestorRenderObjectElement();
_ancestorRenderObjectElement?.insertChildRenderObject(renderObject, newSlot);
- ParentDataElement parentDataElement = _findAncestorParentDataElement();
+ ParentDataElement<dynamic> parentDataElement = _findAncestorParentDataElement();
if (parentDataElement != null)
updateParentData(parentDataElement.widget);
}
@@ -1743,8 +1755,8 @@
}
/// Instantiation of RenderObjectWidgets that have no children
-class LeafRenderObjectElement<T extends RenderObjectWidget> extends RenderObjectElement<T> {
- LeafRenderObjectElement(T widget): super(widget);
+class LeafRenderObjectElement extends RenderObjectElement {
+ LeafRenderObjectElement(LeafRenderObjectWidget widget): super(widget);
void insertChildRenderObject(RenderObject child, dynamic slot) {
assert(false);
@@ -1760,8 +1772,10 @@
}
/// Instantiation of RenderObjectWidgets that have up to one child
-class OneChildRenderObjectElement<T extends OneChildRenderObjectWidget> extends RenderObjectElement<T> {
- OneChildRenderObjectElement(T widget) : super(widget);
+class OneChildRenderObjectElement extends RenderObjectElement {
+ OneChildRenderObjectElement(OneChildRenderObjectWidget widget) : super(widget);
+
+ OneChildRenderObjectWidget get widget => super.widget;
Element _child;
@@ -1782,14 +1796,14 @@
_child = updateChild(_child, widget.child, null);
}
- void update(T newWidget) {
+ void update(OneChildRenderObjectWidget newWidget) {
super.update(newWidget);
assert(widget == newWidget);
_child = updateChild(_child, widget.child, null);
}
void insertChildRenderObject(RenderObject child, dynamic slot) {
- final RenderObjectWithChildMixin renderObject = this.renderObject;
+ final RenderObjectWithChildMixin<dynamic> renderObject = this.renderObject;
assert(slot == null);
renderObject.child = child;
assert(renderObject == this.renderObject);
@@ -1800,7 +1814,7 @@
}
void removeChildRenderObject(RenderObject child) {
- final RenderObjectWithChildMixin renderObject = this.renderObject;
+ final RenderObjectWithChildMixin<dynamic> renderObject = this.renderObject;
assert(renderObject.child == child);
renderObject.child = null;
assert(renderObject == this.renderObject);
@@ -1808,37 +1822,39 @@
}
/// Instantiation of RenderObjectWidgets that can have a list of children
-class MultiChildRenderObjectElement<T extends MultiChildRenderObjectWidget> extends RenderObjectElement<T> {
- MultiChildRenderObjectElement(T widget) : super(widget) {
+class MultiChildRenderObjectElement extends RenderObjectElement {
+ MultiChildRenderObjectElement(MultiChildRenderObjectWidget widget) : super(widget) {
assert(!_debugHasDuplicateIds());
}
+ MultiChildRenderObjectWidget get widget => super.widget;
+
List<Element> _children;
// We keep a set of detached children to avoid O(n^2) work walking _children
// repeatedly to remove children.
final Set<Element> _detachedChildren = new HashSet<Element>();
void insertChildRenderObject(RenderObject child, Element slot) {
- final ContainerRenderObjectMixin renderObject = this.renderObject;
+ final ContainerRenderObjectMixin<dynamic, dynamic> renderObject = this.renderObject;
renderObject.insert(child, after: slot?.renderObject);
assert(renderObject == this.renderObject);
}
void moveChildRenderObject(RenderObject child, dynamic slot) {
- final ContainerRenderObjectMixin renderObject = this.renderObject;
+ final ContainerRenderObjectMixin<dynamic, dynamic> renderObject = this.renderObject;
renderObject.move(child, after: slot?.renderObject);
assert(renderObject == this.renderObject);
}
void removeChildRenderObject(RenderObject child) {
- final ContainerRenderObjectMixin renderObject = this.renderObject;
+ final ContainerRenderObjectMixin<dynamic, dynamic> renderObject = this.renderObject;
assert(child.parent == renderObject);
renderObject.remove(child);
assert(renderObject == this.renderObject);
}
bool _debugHasDuplicateIds() {
- var idSet = new HashSet<Key>();
+ Set<Key> idSet = new HashSet<Key>();
for (Widget child in widget.children) {
assert(child != null);
if (child.key == null)
@@ -1879,7 +1895,7 @@
}
}
- void update(T newWidget) {
+ void update(MultiChildRenderObjectWidget newWidget) {
super.update(newWidget);
assert(widget == newWidget);
_children = updateChildren(_children, widget.children, detachedChildren: _detachedChildren);
diff --git a/packages/flutter/lib/src/widgets/heroes.dart b/packages/flutter/lib/src/widgets/heroes.dart
index 69ffc8b..1f06e98 100644
--- a/packages/flutter/lib/src/widgets/heroes.dart
+++ b/packages/flutter/lib/src/widgets/heroes.dart
@@ -104,10 +104,11 @@
Map<Object, Map<Key, HeroState>> heroes = <Object, Map<Key, HeroState>>{};
void visitor(Element element) {
if (element.widget is Hero) {
- StatefulComponentElement<Hero, HeroState> hero = element;
- Object tag = hero.widget.tag;
+ StatefulComponentElement hero = element;
+ Hero heroWidget = element.widget;
+ Object tag = heroWidget.tag;
assert(tag != null);
- Key key = hero.widget.key;
+ Key key = heroWidget.key;
final Map<Key, HeroState> tagHeroes = heroes.putIfAbsent(tag, () => <Key, HeroState>{});
assert(() {
if (tagHeroes.containsKey(key)) {
@@ -395,17 +396,17 @@
HeroParty _party;
Animation<double> _animation;
- PageRoute _from;
- PageRoute _to;
+ PageRoute<dynamic> _from;
+ PageRoute<dynamic> _to;
final List<OverlayEntry> _overlayEntries = new List<OverlayEntry>();
- void didPush(Route route, Route previousRoute) {
+ void didPush(Route<dynamic> route, Route<dynamic> previousRoute) {
assert(navigator != null);
assert(route != null);
- if (route is PageRoute) {
+ if (route is PageRoute<dynamic>) {
assert(route.animation != null);
- if (previousRoute is PageRoute) // could be null
+ if (previousRoute is PageRoute<dynamic>) // could be null
_from = previousRoute;
_to = route;
_animation = route.animation;
@@ -413,12 +414,12 @@
}
}
- void didPop(Route route, Route previousRoute) {
+ void didPop(Route<dynamic> route, Route<dynamic> previousRoute) {
assert(navigator != null);
assert(route != null);
- if (route is PageRoute) {
+ if (route is PageRoute<dynamic>) {
assert(route.animation != null);
- if (previousRoute is PageRoute) {
+ if (previousRoute is PageRoute<dynamic>) {
_to = previousRoute;
_from = route;
_animation = route.animation;
diff --git a/packages/flutter/lib/src/widgets/implicit_animations.dart b/packages/flutter/lib/src/widgets/implicit_animations.dart
index fb72162..dca532d 100644
--- a/packages/flutter/lib/src/widgets/implicit_animations.dart
+++ b/packages/flutter/lib/src/widgets/implicit_animations.dart
@@ -68,7 +68,7 @@
/// The duration over which to animate the parameters of this container.
final Duration duration;
- AnimatedWidgetBaseState createState();
+ AnimatedWidgetBaseState<AnimatedWidgetBase> createState();
void debugFillDescription(List<String> description) {
super.debugFillDescription(description);
@@ -105,7 +105,7 @@
_updateCurve();
_controller.duration = config.duration;
if (_constructTweens()) {
- forEachTween((Tween tween, dynamic targetValue, TweenConstructor<T> constructor) {
+ forEachTween((Tween<dynamic> tween, dynamic targetValue, TweenConstructor<dynamic> constructor) {
_updateTween(tween, targetValue);
return tween;
});
@@ -131,11 +131,11 @@
setState(() { });
}
- bool _shouldAnimateTween(Tween tween, dynamic targetValue) {
+ bool _shouldAnimateTween(Tween<dynamic> tween, dynamic targetValue) {
return targetValue != (tween.end ?? tween.begin);
}
- void _updateTween(Tween tween, dynamic targetValue) {
+ void _updateTween(Tween<dynamic> tween, dynamic targetValue) {
if (tween == null)
return;
tween
@@ -145,7 +145,7 @@
bool _constructTweens() {
bool shouldStartAnimation = false;
- forEachTween((Tween tween, dynamic targetValue, TweenConstructor<T> constructor) {
+ forEachTween((Tween<dynamic> tween, dynamic targetValue, TweenConstructor<T> constructor) {
if (targetValue != null) {
tween ??= constructor(targetValue);
if (_shouldAnimateTween(tween, targetValue))
@@ -173,7 +173,7 @@
/// 2. Take the value returned from the callback, and store it. This is the
/// value to use as the current value the next time that the forEachTween()
/// method is called.
- void forEachTween(TweenVisitor visitor);
+ void forEachTween(TweenVisitor<dynamic> visitor);
}
/// A container that gradually changes its values over a period of time.
@@ -262,7 +262,7 @@
Tween<double> _width;
Tween<double> _height;
- void forEachTween(TweenVisitor visitor) {
+ void forEachTween(TweenVisitor<dynamic> visitor) {
// TODO(ianh): Use constructor tear-offs when it becomes possible
_constraints = visitor(_constraints, config.constraints, (dynamic value) => new BoxConstraintsTween(begin: value));
_decoration = visitor(_decoration, config.decoration, (dynamic value) => new DecorationTween(begin: value));
@@ -381,7 +381,7 @@
Tween<double> _width;
Tween<double> _height;
- void forEachTween(TweenVisitor visitor) {
+ void forEachTween(TweenVisitor<dynamic> visitor) {
// TODO(ianh): Use constructor tear-offs when it becomes possible
_left = visitor(_left, config.left, (dynamic value) => new Tween<double>(begin: value));
_top = visitor(_top, config.top, (dynamic value) => new Tween<double>(begin: value));
diff --git a/packages/flutter/lib/src/widgets/locale_query.dart b/packages/flutter/lib/src/widgets/locale_query.dart
index 5e34e68..b45f0b5 100644
--- a/packages/flutter/lib/src/widgets/locale_query.dart
+++ b/packages/flutter/lib/src/widgets/locale_query.dart
@@ -5,10 +5,10 @@
import 'framework.dart';
/// Superclass for locale-specific data provided by the application.
-class LocaleQueryData { }
+class LocaleQueryData { } // TODO(ianh): We need a better type here. This doesn't really make sense.
/// Establishes a subtree in which locale queries resolve to the given data.
-class LocaleQuery<T extends LocaleQueryData> extends InheritedWidget {
+class LocaleQuery extends InheritedWidget {
LocaleQuery({
Key key,
this.data,
@@ -18,7 +18,7 @@
}
/// The locale data for this subtree.
- final T data;
+ final LocaleQueryData data;
/// The data from the closest instance of this class that encloses the given context.
static LocaleQueryData of(BuildContext context) {
diff --git a/packages/flutter/lib/src/widgets/mimic.dart b/packages/flutter/lib/src/widgets/mimic.dart
index 38fb204..5c00f13 100644
--- a/packages/flutter/lib/src/widgets/mimic.dart
+++ b/packages/flutter/lib/src/widgets/mimic.dart
@@ -48,7 +48,7 @@
/// given curve.
///
/// This function can only be called once per overlay entry.
- Future animateTo({
+ Future<Null> animateTo({
GlobalKey targetKey,
Duration duration,
Curve curve: Curves.linear
diff --git a/packages/flutter/lib/src/widgets/mixed_viewport.dart b/packages/flutter/lib/src/widgets/mixed_viewport.dart
index 6ba504a..9ae013f 100644
--- a/packages/flutter/lib/src/widgets/mixed_viewport.dart
+++ b/packages/flutter/lib/src/widgets/mixed_viewport.dart
@@ -68,12 +68,14 @@
String toString() => "_ChildKey(type: $type, key: $key)";
}
-class _MixedViewportElement extends RenderObjectElement<MixedViewport> {
+class _MixedViewportElement extends RenderObjectElement {
_MixedViewportElement(MixedViewport widget) : super(widget) {
if (widget.onInvalidatorAvailable != null)
widget.onInvalidatorAvailable(invalidate);
}
+ MixedViewport get widget => super.widget;
+
/// _childExtents contains the extents of each child from the top of the list
/// up to the last one we've ever created.
final List<double> _childExtents = <double>[];
diff --git a/packages/flutter/lib/src/widgets/navigator.dart b/packages/flutter/lib/src/widgets/navigator.dart
index a394126..ea06393 100644
--- a/packages/flutter/lib/src/widgets/navigator.dart
+++ b/packages/flutter/lib/src/widgets/navigator.dart
@@ -33,7 +33,7 @@
void didPush() { }
/// Called after install() when the route replaced another in the navigator.
- void didReplace(Route oldRoute) { }
+ void didReplace(Route<dynamic> oldRoute) { }
/// A request was made to pop this route. If the route can handle it
/// internally (e.g. because it has its own stack of internal state) then
@@ -49,13 +49,13 @@
/// The given route, which came after this one, has been popped off the
/// navigator.
- void didPopNext(Route nextRoute) { }
+ void didPopNext(Route<dynamic> nextRoute) { }
/// This route's next route has changed to the given new route. This is called
/// on a route whenever the next route changes for any reason, except for
/// cases when didPopNext() would be called, so long as it is in the history.
/// nextRoute will be null if there's no next route.
- void didChangeNext(Route nextRoute) { }
+ void didChangeNext(Route<dynamic> nextRoute) { }
/// The route should remove its overlays and free any other resources.
///
@@ -109,7 +109,7 @@
}
/// Creates a route for the given route settings.
-typedef Route RouteFactory(RouteSettings settings);
+typedef Route<dynamic> RouteFactory(RouteSettings settings);
/// A callback in during which you can perform a number of navigator operations (e.g., pop, push) that happen atomically.
typedef void NavigatorTransactionCallback(NavigatorTransaction transaction);
@@ -121,10 +121,10 @@
NavigatorState _navigator;
/// The [Navigator] pushed the given route.
- void didPush(Route route, Route previousRoute) { }
+ void didPush(Route<dynamic> route, Route<dynamic> previousRoute) { }
/// THe [Navigator] popped the given route.
- void didPop(Route route, Route previousRoute) { }
+ void didPop(Route<dynamic> route, Route<dynamic> previousRoute) { }
}
/// Manages a set of child widgets with a stack discipline.
@@ -189,7 +189,7 @@
/// Navigator observer, if any, will have didPush() called on it.
///
/// Uses [openTransaction()]. Only one transaction will be executed per frame.
- static void push(BuildContext context, Route route) {
+ static void push(BuildContext context, Route<dynamic> route) {
openTransaction(context, (NavigatorTransaction transaction) {
transaction.push(route);
});
@@ -224,7 +224,7 @@
/// If it is already the current route, nothing happens.
///
/// Uses [openTransaction()]. Only one transaction will be executed per frame.
- static void popUntil(BuildContext context, Route targetRoute) {
+ static void popUntil(BuildContext context, Route<dynamic> targetRoute) {
openTransaction(context, (NavigatorTransaction transaction) {
transaction.popUntil(targetRoute);
});
@@ -277,7 +277,7 @@
/// The state for a [Navigator] widget.
class NavigatorState extends State<Navigator> {
final GlobalKey<OverlayState> _overlayKey = new GlobalKey<OverlayState>();
- final List<Route> _history = new List<Route>();
+ final List<Route<dynamic>> _history = new List<Route<dynamic>>();
void initState() {
super.initState();
@@ -301,7 +301,7 @@
assert(!_debugLocked);
assert(() { _debugLocked = true; return true; });
config.observer?._navigator = null;
- for (Route route in _history) {
+ for (Route<dynamic> route in _history) {
route.dispose();
route._navigator = null;
}
@@ -313,7 +313,7 @@
OverlayState get overlay => _overlayKey.currentState;
OverlayEntry get _currentOverlayEntry {
- for (Route route in _history.reversed) {
+ for (Route<dynamic> route in _history.reversed) {
if (route.overlayEntries.isNotEmpty)
return route.overlayEntries.last;
}
@@ -329,7 +329,7 @@
name: name,
mostValuableKeys: mostValuableKeys
);
- Route route = config.onGenerateRoute(settings);
+ Route<dynamic> route = config.onGenerateRoute(settings);
if (route == null) {
assert(config.onUnknownRoute != null);
route = config.onUnknownRoute(settings);
@@ -338,13 +338,13 @@
_push(route);
}
- void _push(Route route) {
+ void _push(Route<dynamic> route) {
assert(!_debugLocked);
assert(() { _debugLocked = true; return true; });
assert(route != null);
assert(route._navigator == null);
setState(() {
- Route oldRoute = _history.isNotEmpty ? _history.last : null;
+ Route<dynamic> oldRoute = _history.isNotEmpty ? _history.last : null;
route._navigator = this;
route.install(_currentOverlayEntry);
_history.add(route);
@@ -357,7 +357,7 @@
assert(() { _debugLocked = false; return true; });
}
- void _replace({ Route oldRoute, Route newRoute }) {
+ void _replace({ Route<dynamic> oldRoute, Route<dynamic> newRoute }) {
assert(!_debugLocked);
assert(oldRoute != null);
assert(newRoute != null);
@@ -388,25 +388,25 @@
assert(() { _debugLocked = false; return true; });
}
- void _replaceRouteBefore({ Route anchorRoute, Route newRoute }) {
+ void _replaceRouteBefore({ Route<dynamic> anchorRoute, Route<dynamic> newRoute }) {
assert(anchorRoute != null);
assert(anchorRoute._navigator == this);
assert(_history.indexOf(anchorRoute) > 0);
_replace(oldRoute: _history[_history.indexOf(anchorRoute)-1], newRoute: newRoute);
}
- void _removeRouteBefore(Route anchorRoute) {
+ void _removeRouteBefore(Route<dynamic> anchorRoute) {
assert(!_debugLocked);
assert(() { _debugLocked = true; return true; });
assert(anchorRoute._navigator == this);
int index = _history.indexOf(anchorRoute) - 1;
assert(index >= 0);
- Route targetRoute = _history[index];
+ Route<dynamic> targetRoute = _history[index];
assert(targetRoute._navigator == this);
assert(targetRoute.overlayEntries.isEmpty || !overlay.debugIsVisible(targetRoute.overlayEntries.last));
setState(() {
_history.removeAt(index);
- Route newRoute = index < _history.length ? _history[index] : null;
+ Route<dynamic> newRoute = index < _history.length ? _history[index] : null;
if (index > 0)
_history[index - 1].didChangeNext(newRoute);
targetRoute.dispose();
@@ -418,7 +418,7 @@
bool _pop([dynamic result]) {
assert(!_debugLocked);
assert(() { _debugLocked = true; return true; });
- Route route = _history.last;
+ Route<dynamic> route = _history.last;
assert(route._navigator == this);
bool debugPredictedWouldPop;
assert(() { debugPredictedWouldPop = !route.willHandlePopInternally; return true; });
@@ -445,7 +445,7 @@
return true;
}
- void _popUntil(Route targetRoute) {
+ void _popUntil(Route<dynamic> targetRoute) {
assert(_history.contains(targetRoute));
while (!targetRoute.isCurrent)
_pop();
@@ -512,7 +512,7 @@
/// The route will have didPush() and didChangeNext() called on it; the
/// previous route, if any, will have didChangeNext() called on it; and the
/// Navigator observer, if any, will have didPush() called on it.
- void push(Route route) {
+ void push(Route<dynamic> route) {
assert(_debugOpen);
_navigator._push(route);
}
@@ -528,7 +528,7 @@
///
/// It is safe to call this redundantly (replacing a route with itself). Such
/// calls are ignored.
- void replace({ Route oldRoute, Route newRoute }) {
+ void replace({ Route<dynamic> oldRoute, Route<dynamic> newRoute }) {
assert(_debugOpen);
_navigator._replace(oldRoute: oldRoute, newRoute: newRoute);
}
@@ -541,14 +541,14 @@
///
/// The conditions described for [replace()] apply; for instance, the route
/// before anchorRoute must have overlay entries.
- void replaceRouteBefore({ Route anchorRoute, Route newRoute }) {
+ void replaceRouteBefore({ Route<dynamic> anchorRoute, Route<dynamic> newRoute }) {
assert(_debugOpen);
_navigator._replaceRouteBefore(anchorRoute: anchorRoute, newRoute: newRoute);
}
/// Removes the route prior to the given anchorRoute, and calls didChangeNext
/// on the route prior to that one, if any. The observer is not notified.
- void removeRouteBefore(Route anchorRoute) {
+ void removeRouteBefore(Route<dynamic> anchorRoute) {
assert(_debugOpen);
_navigator._removeRouteBefore(anchorRoute);
}
@@ -573,7 +573,7 @@
/// Calls pop() repeatedly until the given route is the current route.
/// If it is already the current route, nothing happens.
- void popUntil(Route targetRoute) {
+ void popUntil(Route<dynamic> targetRoute) {
assert(_debugOpen);
_navigator._popUntil(targetRoute);
}
diff --git a/packages/flutter/lib/src/widgets/notification_listener.dart b/packages/flutter/lib/src/widgets/notification_listener.dart
index 021a4e3..9f2a83f 100644
--- a/packages/flutter/lib/src/widgets/notification_listener.dart
+++ b/packages/flutter/lib/src/widgets/notification_listener.dart
@@ -13,9 +13,9 @@
void dispatch(BuildContext target) {
target.visitAncestorElements((Element element) {
if (element is StatelessComponentElement &&
- element.widget is NotificationListener) {
- final NotificationListener widget = element.widget;
- if (widget._dispatch(this))
+ element.widget is NotificationListener<dynamic>) {
+ final NotificationListener<dynamic> widget = element.widget;
+ if (widget._dispatch(this)) // that function checks the type dynamically
return false;
}
return true;
diff --git a/packages/flutter/lib/src/widgets/pageable_list.dart b/packages/flutter/lib/src/widgets/pageable_list.dart
index 987c8e2..a740e80 100644
--- a/packages/flutter/lib/src/widgets/pageable_list.dart
+++ b/packages/flutter/lib/src/widgets/pageable_list.dart
@@ -71,7 +71,7 @@
/// The list of pages themselves.
final Iterable<Widget> children;
- PageableListState createState() => new PageableListState();
+ PageableListState<PageableList> createState() => new PageableListState<PageableList>();
}
/// State for a [PageableList] widget.
@@ -185,7 +185,7 @@
return _overscrollBehavior;
}
- ScrollBehavior createScrollBehavior() => scrollBehavior;
+ ScrollBehavior<double, double> createScrollBehavior() => scrollBehavior;
bool get shouldSnapScrollOffset => config.itemsSnapAlignment == ItemsSnapAlignment.item;
@@ -196,14 +196,14 @@
.clamp(scrollBehavior.minScrollOffset, scrollBehavior.maxScrollOffset);
}
- Future _flingToAdjacentItem(double scrollVelocity) {
+ Future<Null> _flingToAdjacentItem(double scrollVelocity) {
final double newScrollOffset = snapScrollOffset(scrollOffset + scrollVelocity.sign)
.clamp(snapScrollOffset(scrollOffset - 0.5), snapScrollOffset(scrollOffset + 0.5));
return scrollTo(newScrollOffset, duration: config.duration, curve: config.curve)
.then(_notifyPageChanged);
}
- Future fling(double scrollVelocity) {
+ Future<Null> fling(double scrollVelocity) {
switch(config.itemsSnapAlignment) {
case ItemsSnapAlignment.adjacentItem:
return _flingToAdjacentItem(scrollVelocity);
@@ -212,7 +212,7 @@
}
}
- Future settleScrollOffset() {
+ Future<Null> settleScrollOffset() {
return scrollTo(snapScrollOffset(scrollOffset), duration: config.duration, curve: config.curve)
.then(_notifyPageChanged);
}
@@ -247,9 +247,11 @@
_PageViewportElement createElement() => new _PageViewportElement(this);
}
-class _PageViewportElement extends VirtualViewportElement<PageViewport> {
+class _PageViewportElement extends VirtualViewportElement {
_PageViewportElement(PageViewport widget) : super(widget);
+ PageViewport get widget => super.widget;
+
RenderList get renderObject => super.renderObject;
int get materializedChildBase => _materializedChildBase;
diff --git a/packages/flutter/lib/src/widgets/pages.dart b/packages/flutter/lib/src/widgets/pages.dart
index edbe3bc..f0abba4 100644
--- a/packages/flutter/lib/src/widgets/pages.dart
+++ b/packages/flutter/lib/src/widgets/pages.dart
@@ -17,8 +17,8 @@
}) : super(completer: completer, settings: settings);
bool get opaque => true;
bool get barrierDismissable => false;
- bool canTransitionTo(TransitionRoute nextRoute) => nextRoute is PageRoute;
- bool canTransitionFrom(TransitionRoute nextRoute) => nextRoute is PageRoute;
+ bool canTransitionTo(TransitionRoute<dynamic> nextRoute) => nextRoute is PageRoute<dynamic>;
+ bool canTransitionFrom(TransitionRoute<dynamic> nextRoute) => nextRoute is PageRoute<dynamic>;
AnimationController createAnimationController() {
AnimationController controller = super.createAnimationController();
diff --git a/packages/flutter/lib/src/widgets/routes.dart b/packages/flutter/lib/src/widgets/routes.dart
index e412fa0..4e4a8ac 100644
--- a/packages/flutter/lib/src/widgets/routes.dart
+++ b/packages/flutter/lib/src/widgets/routes.dart
@@ -13,7 +13,7 @@
import 'page_storage.dart';
import 'pages.dart';
-const _kTransparent = const Color(0x00000000);
+const Color _kTransparent = const Color(0x00000000);
/// A route that displays widgets in the [Navigator]'s [Overlay].
abstract class OverlayRoute<T> extends Route<T> {
@@ -159,8 +159,8 @@
super.didPush();
}
- void didReplace(Route oldRoute) {
- if (oldRoute is TransitionRoute)
+ void didReplace(Route<dynamic> oldRoute) {
+ if (oldRoute is TransitionRoute<dynamic>)
_controller.value = oldRoute._controller.value;
_animation.addStatusListener(_handleStatusChanged);
super.didReplace(oldRoute);
@@ -173,18 +173,18 @@
return true;
}
- void didPopNext(Route nextRoute) {
+ void didPopNext(Route<dynamic> nextRoute) {
_updateForwardAnimation(nextRoute);
super.didPopNext(nextRoute);
}
- void didChangeNext(Route nextRoute) {
+ void didChangeNext(Route<dynamic> nextRoute) {
_updateForwardAnimation(nextRoute);
super.didChangeNext(nextRoute);
}
- void _updateForwardAnimation(Route nextRoute) {
- if (nextRoute is TransitionRoute && canTransitionTo(nextRoute) && nextRoute.canTransitionFrom(this)) {
+ void _updateForwardAnimation(Route<dynamic> nextRoute) {
+ if (nextRoute is TransitionRoute<dynamic> && canTransitionTo(nextRoute) && nextRoute.canTransitionFrom(this)) {
Animation<double> current = _forwardAnimation.parent;
if (current != null) {
if (current is TrainHoppingAnimation) {
@@ -216,13 +216,13 @@
///
/// Subclasses can override this function to restrict the set of routes they
/// need to coordinate transitions with.
- bool canTransitionTo(TransitionRoute nextRoute) => true;
+ bool canTransitionTo(TransitionRoute<dynamic> nextRoute) => true;
/// Whether this route can perform a transition from the given route.
///
/// Subclasses can override this function to restrict the set of routes they
/// need to coordinate transitions with.
- bool canTransitionFrom(TransitionRoute nextRoute) => true;
+ bool canTransitionFrom(TransitionRoute<dynamic> nextRoute) => true;
void finished() {
super.finished();
@@ -245,7 +245,7 @@
/// Called when this entry is removed from the history of its associated [LocalHistoryRoute].
final VoidCallback onRemove;
- LocalHistoryRoute _owner;
+ LocalHistoryRoute<dynamic> _owner;
/// Remove this entry from the history of its associated [LocalHistoryRoute].
void remove() {
@@ -323,7 +323,7 @@
}
final bool isCurrent;
- final Route route;
+ final Route<dynamic> route;
bool updateShouldNotify(_ModalScopeStatus old) {
return isCurrent != old.isCurrent ||
@@ -342,7 +342,7 @@
this.route
}) : super(key: key);
- final ModalRoute route;
+ final ModalRoute<dynamic> route;
_ModalScopeState createState() => new _ModalScopeState();
}
@@ -444,7 +444,7 @@
/// Returns the modal route most closely associated with the given context.
///
/// Returns null if the given context is not associated with a modal route.
- static ModalRoute of(BuildContext context) {
+ static ModalRoute<dynamic> of(BuildContext context) {
_ModalScopeStatus widget = context.inheritFromWidgetOfExactType(_ModalScopeStatus);
return widget?.route;
}
@@ -581,8 +581,8 @@
abstract class PopupRoute<T> extends ModalRoute<T> {
PopupRoute({ Completer<T> completer }) : super(completer: completer);
bool get opaque => false;
- void didChangeNext(Route nextRoute) {
- assert(nextRoute is! PageRoute);
+ void didChangeNext(Route<dynamic> nextRoute) {
+ assert(nextRoute is! PageRoute<dynamic>);
super.didChangeNext(nextRoute);
}
}
diff --git a/packages/flutter/lib/src/widgets/scrollable.dart b/packages/flutter/lib/src/widgets/scrollable.dart
index 2ecbc81..bb52511 100644
--- a/packages/flutter/lib/src/widgets/scrollable.dart
+++ b/packages/flutter/lib/src/widgets/scrollable.dart
@@ -112,13 +112,13 @@
}
/// Scrolls the closest enclosing scrollable to make the given context visible.
- static Future ensureVisible(BuildContext context, { Duration duration, Curve curve: Curves.ease }) {
+ static Future<Null> ensureVisible(BuildContext context, { Duration duration, Curve curve: Curves.ease }) {
assert(context.findRenderObject() is RenderBox);
// TODO(abarth): This function doesn't handle nested scrollable widgets.
ScrollableState scrollable = Scrollable.of(context);
if (scrollable == null)
- return new Future.value();
+ return new Future<Null>.value();
RenderBox targetBox = context.findRenderObject();
assert(targetBox.attached);
@@ -162,7 +162,7 @@
} else if (targetMax > scrollableMax) {
scrollOffsetDelta = targetMax - scrollableMax;
} else {
- return new Future.value();
+ return new Future<Null>.value();
}
ExtentScrollBehavior scrollBehavior = scrollable.scrollBehavior;
@@ -172,13 +172,14 @@
if (scrollOffset != scrollable.scrollOffset)
return scrollable.scrollTo(scrollOffset, duration: duration, curve: curve);
- return new Future.value();
+ return new Future<Null>.value();
}
ScrollableState createState();
}
-/// Contains the state for common scrolling widgets.
+/// Contains the state for common scrolling widgets that scroll only
+/// along one axis.
///
/// Widgets that subclass [Scrollable] typically use state objects
/// that subclass [ScrollableState].
@@ -299,14 +300,14 @@
/// Scroll behaviors control where the boundaries of the scrollable are placed
/// and how the scrolling physics should behave near those boundaries and
/// after the user stops directly manipulating the scrollable.
- ScrollBehavior get scrollBehavior {
+ ScrollBehavior<double, double> get scrollBehavior {
return _scrollBehavior ??= createScrollBehavior();
}
- ScrollBehavior _scrollBehavior;
+ ScrollBehavior<double, double> _scrollBehavior;
/// Subclasses should override this function to create the [ScrollBehavior]
/// they desire.
- ScrollBehavior createScrollBehavior();
+ ScrollBehavior<double, double> createScrollBehavior();
bool _scrollOffsetIsInBounds(double scrollOffset) {
if (scrollBehavior is! ExtentScrollBehavior)
@@ -336,7 +337,7 @@
///
/// If a non-null [duration] is provided, the widget will animate to the new
/// scroll offset over the given duration with the given curve.
- Future scrollBy(double scrollDelta, { Duration duration, Curve curve: Curves.ease }) {
+ Future<Null> scrollBy(double scrollDelta, { Duration duration, Curve curve: Curves.ease }) {
double newScrollOffset = scrollBehavior.applyCurve(_scrollOffset, scrollDelta);
return scrollTo(newScrollOffset, duration: duration, curve: curve);
}
@@ -349,21 +350,21 @@
/// This function does not accept a zero duration. To jump-scroll to
/// the new offset, do not provide a duration, rather than providing
/// a zero duration.
- Future scrollTo(double newScrollOffset, { Duration duration, Curve curve: Curves.ease }) {
+ Future<Null> scrollTo(double newScrollOffset, { Duration duration, Curve curve: Curves.ease }) {
if (newScrollOffset == _scrollOffset)
- return new Future.value();
+ return new Future<Null>.value();
if (duration == null) {
_controller.stop();
_setScrollOffset(newScrollOffset);
- return new Future.value();
+ return new Future<Null>.value();
}
assert(duration > Duration.ZERO);
return _animateTo(newScrollOffset, duration, curve);
}
- Future _animateTo(double newScrollOffset, Duration duration, Curve curve) {
+ Future<Null> _animateTo(double newScrollOffset, Duration duration, Curve curve) {
_controller.stop();
_controller.value = scrollOffset;
_startScroll();
@@ -375,10 +376,10 @@
/// Calling this function starts a physics-based animation of the scroll
/// offset with the given value as the initial velocity. The physics
/// simulation used is determined by the scroll behavior.
- Future fling(double scrollVelocity) {
+ Future<Null> fling(double scrollVelocity) {
if (scrollVelocity != 0.0 || !_controller.isAnimating)
return _startToEndAnimation(scrollVelocity);
- return new Future.value();
+ return new Future<Null>.value();
}
/// Animate the scroll offset to a value with a local minima of energy.
@@ -386,15 +387,15 @@
/// Calling this function starts a physics-based animation of the scroll
/// offset either to a snap point or to within the scrolling bounds. The
/// physics simulation used is determined by the scroll behavior.
- Future settleScrollOffset() {
+ Future<Null> settleScrollOffset() {
return _startToEndAnimation(0.0);
}
- Future _startToEndAnimation(double scrollVelocity) {
+ Future<Null> _startToEndAnimation(double scrollVelocity) {
_controller.stop();
Simulation simulation = _createSnapSimulation(scrollVelocity) ?? _createFlingSimulation(scrollVelocity);
if (simulation == null)
- return new Future.value();
+ return new Future<Null>.value();
_startScroll();
return _controller.animateWith(simulation).then(_endScroll);
}
@@ -493,7 +494,7 @@
scrollBy(pixelOffsetToScrollOffset(delta));
}
- Future _handleDragEnd(Velocity velocity) {
+ Future<Null> _handleDragEnd(Velocity velocity) {
double scrollVelocity = pixelDeltaToScrollOffset(velocity.pixelsPerSecond) / Duration.MILLISECONDS_PER_SECOND;
// The gesture velocity properties are pixels/second, config min,max limits are pixels/ms
return fling(scrollVelocity.clamp(-kMaxFlingVelocity, kMaxFlingVelocity)).then(_endScroll);
@@ -631,7 +632,7 @@
}
class _ScrollableViewportState extends ScrollableState<ScrollableViewport> {
- ScrollBehavior createScrollBehavior() => new OverscrollWhenScrollableBehavior();
+ ScrollBehavior<double, double> createScrollBehavior() => new OverscrollWhenScrollableBehavior();
OverscrollWhenScrollableBehavior get scrollBehavior => super.scrollBehavior;
double _viewportSize = 0.0;
@@ -745,13 +746,13 @@
/// Called when a scroll starts. Subclasses may override this method to
/// initialize some state or to play an animation. The returned Future should
/// complete when the computation triggered by this method has finished.
- Future scrollStarted() => new Future.value();
+ Future<Null> scrollStarted() => new Future<Null>.value();
/// Similar to scrollStarted(). Called when a scroll ends. For fling scrolls
/// "ended" means that the scroll animation either stopped of its own accord
/// or was canceled by the user.
- Future scrollEnded() => new Future.value();
+ Future<Null> scrollEnded() => new Future<Null>.value();
}
/// A general scrollable list for a large number of children that might not all
@@ -793,7 +794,7 @@
);
}
- ScrollBehavior createScrollBehavior() => new OverscrollBehavior();
+ ScrollBehavior<double, double> createScrollBehavior() => new OverscrollBehavior();
OverscrollBehavior get scrollBehavior => super.scrollBehavior;
Offset _handlePaintOffsetUpdateNeeded(ViewportDimensions dimensions) {
diff --git a/packages/flutter/lib/src/widgets/scrollable_grid.dart b/packages/flutter/lib/src/widgets/scrollable_grid.dart
index 8833307..5b12a9d 100644
--- a/packages/flutter/lib/src/widgets/scrollable_grid.dart
+++ b/packages/flutter/lib/src/widgets/scrollable_grid.dart
@@ -41,7 +41,7 @@
}
class _ScrollableGridState extends ScrollableState<ScrollableGrid> {
- ScrollBehavior createScrollBehavior() => new OverscrollBehavior();
+ ScrollBehavior<double, double> createScrollBehavior() => new OverscrollBehavior();
ExtentScrollBehavior get scrollBehavior => super.scrollBehavior;
void _handleExtentsChanged(double contentExtent, double containerExtent) {
@@ -85,9 +85,11 @@
_GridViewportElement createElement() => new _GridViewportElement(this);
}
-class _GridViewportElement extends VirtualViewportElement<GridViewport> {
+class _GridViewportElement extends VirtualViewportElement {
_GridViewportElement(GridViewport widget) : super(widget);
+ GridViewport get widget => super.widget;
+
RenderGrid get renderObject => super.renderObject;
int get materializedChildBase => _materializedChildBase;
diff --git a/packages/flutter/lib/src/widgets/scrollable_list.dart b/packages/flutter/lib/src/widgets/scrollable_list.dart
index bc55ed5..6e73eb6 100644
--- a/packages/flutter/lib/src/widgets/scrollable_list.dart
+++ b/packages/flutter/lib/src/widgets/scrollable_list.dart
@@ -45,7 +45,7 @@
}
class _ScrollableListState extends ScrollableState<ScrollableList> {
- ScrollBehavior createScrollBehavior() => new OverscrollBehavior();
+ ScrollBehavior<double, double> createScrollBehavior() => new OverscrollBehavior();
ExtentScrollBehavior get scrollBehavior => super.scrollBehavior;
void _handleExtentsChanged(double contentExtent, double containerExtent) {
@@ -145,9 +145,11 @@
_VirtualListViewportElement createElement() => new _VirtualListViewportElement(this);
}
-class _VirtualListViewportElement extends VirtualViewportElement<_VirtualListViewport> {
+class _VirtualListViewportElement extends VirtualViewportElement {
_VirtualListViewportElement(VirtualViewport widget) : super(widget);
+ _VirtualListViewport get widget => super.widget;
+
RenderList get renderObject => super.renderObject;
int get materializedChildBase => _materializedChildBase;
@@ -306,7 +308,7 @@
}
class _ScrollableLazyListState extends ScrollableState<ScrollableLazyList> {
- ScrollBehavior createScrollBehavior() => new OverscrollBehavior();
+ ScrollBehavior<double, double> createScrollBehavior() => new OverscrollBehavior();
ExtentScrollBehavior get scrollBehavior => super.scrollBehavior;
void _handleExtentsChanged(double contentExtent, double containerExtent) {
diff --git a/packages/flutter/lib/src/widgets/semantics_debugger.dart b/packages/flutter/lib/src/widgets/semantics_debugger.dart
index 8183b36..66e1cb5 100644
--- a/packages/flutter/lib/src/widgets/semantics_debugger.dart
+++ b/packages/flutter/lib/src/widgets/semantics_debugger.dart
@@ -296,12 +296,12 @@
}
entry.updateMessage();
if (node.children != null) {
- Set oldChildren = new Set<_SemanticsDebuggerEntry>.from(entry.children ?? const <_SemanticsDebuggerEntry>[]);
+ Set<_SemanticsDebuggerEntry> oldChildren = new Set<_SemanticsDebuggerEntry>.from(entry.children ?? const <_SemanticsDebuggerEntry>[]);
entry.children?.clear();
entry.children ??= new List<_SemanticsDebuggerEntry>();
for (mojom.SemanticsNode child in node.children)
entry.children.add(_updateNode(child));
- Set newChildren = new Set<_SemanticsDebuggerEntry>.from(entry.children);
+ Set<_SemanticsDebuggerEntry> newChildren = new Set<_SemanticsDebuggerEntry>.from(entry.children);
Set<_SemanticsDebuggerEntry> removedChildren = oldChildren.difference(newChildren);
for (_SemanticsDebuggerEntry oldChild in removedChildren)
nodes.remove(oldChild.id);
diff --git a/packages/flutter/lib/src/widgets/virtual_viewport.dart b/packages/flutter/lib/src/widgets/virtual_viewport.dart
index af672f1..07a5ecd 100644
--- a/packages/flutter/lib/src/widgets/virtual_viewport.dart
+++ b/packages/flutter/lib/src/widgets/virtual_viewport.dart
@@ -31,8 +31,10 @@
/// This class is a building block for building a widget that has more children
/// than it wishes to display at any given time. For example, [ScrollableList]
/// uses this element to materialize only those children that are visible.
-abstract class VirtualViewportElement<T extends VirtualViewport> extends RenderObjectElement<T> {
- VirtualViewportElement(T widget) : super(widget);
+abstract class VirtualViewportElement extends RenderObjectElement {
+ VirtualViewportElement(VirtualViewport widget) : super(widget);
+
+ VirtualViewport get widget => super.widget;
/// The index of the first child to materialize.
int get materializedChildBase;
@@ -70,7 +72,7 @@
List<Element> _materializedChildren = const <Element>[];
- RenderVirtualViewport get renderObject => super.renderObject;
+ RenderVirtualViewport<dynamic> get renderObject => super.renderObject;
void visitChildren(ElementVisitor visitor) {
if (_materializedChildren == null)
@@ -94,8 +96,8 @@
super.unmount();
}
- void update(T newWidget) {
- T oldWidget = widget;
+ void update(VirtualViewport newWidget) {
+ VirtualViewport oldWidget = widget;
_widgetProvider.didUpdateWidget(oldWidget, newWidget);
super.update(newWidget);
updateRenderObject(oldWidget);
@@ -107,7 +109,7 @@
renderObject.paintOffset = scrollOffsetToPixelDelta(widget.startOffset - startOffsetBase);
}
- void updateRenderObject(T oldWidget) {
+ void updateRenderObject(VirtualViewport oldWidget) {
renderObject.virtualChildCount = _widgetProvider.virtualChildCount;
if (startOffsetBase != null) {
@@ -161,7 +163,7 @@
for (int i = 0; i < count; ++i) {
int childIndex = base + i;
Widget child = _widgetProvider.getChild(childIndex);
- Key key = new ValueKey(child.key ?? childIndex);
+ Key key = new ValueKey<Key>(child.key) ?? new ValueKey<int>(childIndex);
newWidgets[i] = new RepaintBoundary(key: key, child: child);
}
_materializedChildren = updateChildren(_materializedChildren, newWidgets);
diff --git a/packages/flutter/test/rendering/box_test.dart b/packages/flutter/test/rendering/box_test.dart
index 7c42c4c..e9db8be 100644
--- a/packages/flutter/test/rendering/box_test.dart
+++ b/packages/flutter/test/rendering/box_test.dart
@@ -64,10 +64,10 @@
});
test("should not have a 0 sized colored Box", () {
- var coloredBox = new RenderDecoratedBox(
+ RenderBox coloredBox = new RenderDecoratedBox(
decoration: new BoxDecoration()
);
- var paddingBox = new RenderPadding(padding: const EdgeDims.all(10.0),
+ RenderBox paddingBox = new RenderPadding(padding: const EdgeDims.all(10.0),
child: coloredBox);
RenderBox root = new RenderDecoratedBox(
decoration: new BoxDecoration(),
diff --git a/packages/flutter/test/widget/asset_vendor_test.dart b/packages/flutter/test/widget/asset_vendor_test.dart
index a25a0e5..009f636 100644
--- a/packages/flutter/test/widget/asset_vendor_test.dart
+++ b/packages/flutter/test/widget/asset_vendor_test.dart
@@ -107,11 +107,11 @@
);
}
-RenderImage getRenderImage(tester, Key key) {
+RenderImage getRenderImage(WidgetTester tester, Key key) {
return tester.findElementByKey(key).renderObject;
}
-TestImage getTestImage(tester, Key key) {
+TestImage getTestImage(WidgetTester tester, Key key) {
return getRenderImage(tester, key).image;
}
diff --git a/packages/flutter/test/widget/bottom_sheet_rebuild_test.dart b/packages/flutter/test/widget/bottom_sheet_rebuild_test.dart
index b5f2a5a..21ce1d8 100644
--- a/packages/flutter/test/widget/bottom_sheet_rebuild_test.dart
+++ b/packages/flutter/test/widget/bottom_sheet_rebuild_test.dart
@@ -10,7 +10,7 @@
test('Verify that a BottomSheet can be rebuilt with ScaffoldFeatureController.setState()', () {
testWidgets((WidgetTester tester) {
final GlobalKey<ScaffoldState> scaffoldKey = new GlobalKey<ScaffoldState>();
- ScaffoldFeatureController bottomSheet;
+ PersistentBottomSheetController<Null> bottomSheet;
int buildCount = 0;
tester.pumpWidget(new MaterialApp(
@@ -24,7 +24,7 @@
}
));
- bottomSheet = scaffoldKey.currentState.showBottomSheet((_) {
+ bottomSheet = scaffoldKey.currentState.showBottomSheet/*<Null>*/((_) {
return new Builder(
builder: (_) {
buildCount += 1;
diff --git a/packages/flutter/test/widget/bottom_sheet_test.dart b/packages/flutter/test/widget/bottom_sheet_test.dart
index 5aed8bc..a2da8db 100644
--- a/packages/flutter/test/widget/bottom_sheet_test.dart
+++ b/packages/flutter/test/widget/bottom_sheet_test.dart
@@ -25,10 +25,11 @@
tester.pump();
expect(tester.findText('BottomSheet'), isNull);
- showModalBottomSheet(
+ showModalBottomSheet/*<Null>*/(
context: context,
builder: (BuildContext context) => new Text('BottomSheet')
- ).then((_) {
+ ).then((Null result) {
+ expect(result, isNull);
showBottomSheetThenCalled = true;
});
@@ -45,7 +46,7 @@
tester.pump(new Duration(seconds: 1)); // frame after the animation (sheet has been removed)
expect(tester.findText('BottomSheet'), isNull);
- showModalBottomSheet(context: context, builder: (BuildContext context) => new Text('BottomSheet'));
+ showModalBottomSheet/*<Null>*/(context: context, builder: (BuildContext context) => new Text('BottomSheet'));
tester.pump(); // bottom sheet show animation starts
tester.pump(new Duration(seconds: 1)); // animation done
expect(tester.findText('BottomSheet'), isNotNull);
diff --git a/packages/flutter/test/widget/custom_one_child_layout_test.dart b/packages/flutter/test/widget/custom_one_child_layout_test.dart
index ecf7506..086831f 100644
--- a/packages/flutter/test/widget/custom_one_child_layout_test.dart
+++ b/packages/flutter/test/widget/custom_one_child_layout_test.dart
@@ -46,7 +46,7 @@
}
}
-Widget buildFrame(delegate) {
+Widget buildFrame(OneChildLayoutDelegate delegate) {
return new Center(child: new CustomOneChildLayout(delegate: delegate, child: new Container()));
}
diff --git a/packages/flutter/test/widget/draggable_test.dart b/packages/flutter/test/widget/draggable_test.dart
index 603b326..cd417d6 100644
--- a/packages/flutter/test/widget/draggable_test.dart
+++ b/packages/flutter/test/widget/draggable_test.dart
@@ -15,19 +15,19 @@
routes: <String, RouteBuilder>{
'/': (RouteArguments args) { return new Column(
children: <Widget>[
- new Draggable(
+ new Draggable<int>(
data: 1,
child: new Text('Source'),
feedback: new Text('Dragging')
),
- new DragTarget(
- builder: (context, data, rejects) {
+ new DragTarget<int>(
+ builder: (BuildContext context, List<int> data, List<dynamic> rejects) {
return new Container(
height: 100.0,
child: new Text('Target')
);
},
- onAccept: (data) {
+ onAccept: (int data) {
accepted.add(data);
}
),
@@ -78,7 +78,7 @@
routes: <String, RouteBuilder>{
'/': (RouteArguments args) { return new Column(
children: <Widget>[
- new Draggable(
+ new Draggable<int>(
data: 1,
child: new Text('Source'),
feedback: new Text('Dragging')
@@ -94,15 +94,15 @@
child: new Text('Button')
)
),
- new DragTarget(
- builder: (context, data, rejects) {
+ new DragTarget<int>(
+ builder: (BuildContext context, List<int> data, List<dynamic> rejects) {
return new IgnorePointer(
child: new Container(
child: new Text('Target')
)
);
},
- onAccept: (data) {
+ onAccept: (int data) {
events.add('drop');
}
),
@@ -176,7 +176,7 @@
routes: <String, RouteBuilder>{
'/': (RouteArguments args) { return new Column(
children: <Widget>[
- new Draggable(
+ new Draggable<int>(
data: 1,
child: new GestureDetector(
behavior: HitTestBehavior.opaque,
@@ -189,11 +189,11 @@
),
feedback: new Text('Dragging')
),
- new DragTarget(
- builder: (context, data, rejects) {
+ new DragTarget<int>(
+ builder: (BuildContext context, List<int> data, List<dynamic> rejects) {
return new Text('Target');
},
- onAccept: (data) {
+ onAccept: (int data) {
events.add('drop');
}
),
@@ -237,16 +237,16 @@
routes: <String, RouteBuilder>{
'/': (RouteArguments args) { return new Column(
children: <Widget>[
- new LongPressDraggable(
+ new LongPressDraggable<int>(
data: 1,
child: new Text('Source'),
feedback: new Text('Dragging')
),
- new DragTarget(
- builder: (context, data, rejects) {
+ new DragTarget<int>(
+ builder: (BuildContext context, List<int> data, List<dynamic> rejects) {
return new Text('Target');
},
- onAccept: (data) {
+ onAccept: (int data) {
events.add('drop');
}
),
@@ -288,16 +288,16 @@
routes: <String, RouteBuilder>{
'/': (RouteArguments args) { return new Column(
children: <Widget>[
- new Draggable(
+ new Draggable<int>(
data: 1,
child: new Text('Source'),
feedback: new Text('Dragging')
),
- new DragTarget(
- builder: (context, data, rejects) {
+ new DragTarget<int>(
+ builder: (BuildContext context, List<int> data, List<dynamic> rejects) {
return new Text('Target');
},
- onAccept: (data) {
+ onAccept: (int data) {
events.add('drop');
}
),
@@ -341,21 +341,21 @@
'/': (RouteArguments args) {
return new Block(
children: <Widget>[
- new DragTarget(
- builder: (context, data, rejects) {
+ new DragTarget<int>(
+ builder: (BuildContext context, List<int> data, List<dynamic> rejects) {
return new Text('Target');
},
- onAccept: (data) {
+ onAccept: (int data) {
events.add('drop $data');
}
),
new Container(height: 400.0),
- new HorizontalDraggable(
+ new HorizontalDraggable<int>(
data: 1,
child: new Text('H'),
feedback: new Text('Dragging')
),
- new VerticalDraggable(
+ new VerticalDraggable<int>(
data: 2,
child: new Text('V'),
feedback: new Text('Dragging')
@@ -453,21 +453,21 @@
return new Block(
scrollDirection: Axis.horizontal,
children: <Widget>[
- new DragTarget(
- builder: (context, data, rejects) {
+ new DragTarget<int>(
+ builder: (BuildContext context, List<int> data, List<dynamic> rejects) {
return new Text('Target');
},
- onAccept: (data) {
+ onAccept: (int data) {
events.add('drop $data');
}
),
new Container(width: 400.0),
- new HorizontalDraggable(
+ new HorizontalDraggable<int>(
data: 1,
child: new Text('H'),
feedback: new Text('Dragging')
),
- new VerticalDraggable(
+ new VerticalDraggable<int>(
data: 2,
child: new Text('V'),
feedback: new Text('Dragging')
diff --git a/packages/flutter/test/widget/heroes_test.dart b/packages/flutter/test/widget/heroes_test.dart
index deefffa..3771893 100644
--- a/packages/flutter/test/widget/heroes_test.dart
+++ b/packages/flutter/test/widget/heroes_test.dart
@@ -31,7 +31,7 @@
),
};
-class ThreeRoute extends MaterialPageRoute {
+class ThreeRoute extends MaterialPageRoute<Null> {
ThreeRoute() : super(builder: (BuildContext context) {
return new Material(
child: new Block(children: <Widget>[
diff --git a/packages/flutter/test/widget/modal_barrier_test.dart b/packages/flutter/test/widget/modal_barrier_test.dart
index fa7627d..904f865 100644
--- a/packages/flutter/test/widget/modal_barrier_test.dart
+++ b/packages/flutter/test/widget/modal_barrier_test.dart
@@ -69,7 +69,7 @@
tester.pumpWidget(new MaterialApp(routes: routes));
// Initially the barrier is not visible
- expect(tester.findElementByKey(const ValueKey('barrier')), isNull);
+ expect(tester.findElementByKey(const ValueKey<String>('barrier')), isNull);
// Tapping on X routes to the barrier
tester.tap(tester.findText('X'));
@@ -77,11 +77,11 @@
tester.pump(const Duration(seconds: 1)); // end transition
// Tap on the barrier to dismiss it
- tester.tap(tester.findElementByKey(const ValueKey('barrier')));
+ tester.tap(tester.findElementByKey(const ValueKey<String>('barrier')));
tester.pump(); // begin transition
tester.pump(const Duration(seconds: 1)); // end transition
- expect(tester.findElementByKey(const ValueKey('barrier')), isNull,
+ expect(tester.findElementByKey(const ValueKey<String>('barrier')), isNull,
reason: 'because the barrier was dismissed');
});
});
@@ -103,7 +103,7 @@
class SecondComponent extends StatelessComponent {
Widget build(BuildContext context) {
return new ModalBarrier(
- key: const ValueKey('barrier'),
+ key: const ValueKey<String>('barrier'),
dismissable: true
);
}
diff --git a/packages/flutter/test/widget/navigator_test.dart b/packages/flutter/test/widget/navigator_test.dart
index b441f6e..80c6dc1 100644
--- a/packages/flutter/test/widget/navigator_test.dart
+++ b/packages/flutter/test/widget/navigator_test.dart
@@ -40,7 +40,7 @@
}
}
-typedef void ExceptionCallback(exception);
+typedef void ExceptionCallback(dynamic exception);
class ThirdComponent extends StatelessComponent {
ThirdComponent({ this.targetKey, this.onException });
@@ -103,7 +103,7 @@
dynamic exception;
Widget widget = new ThirdComponent(
targetKey: targetKey,
- onException: (e) {
+ onException: (dynamic e) {
exception = e;
}
);
diff --git a/packages/flutter/test/widget/page_forward_transitions_test.dart b/packages/flutter/test/widget/page_forward_transitions_test.dart
index 98e7a38..7b3bf5d 100644
--- a/packages/flutter/test/widget/page_forward_transitions_test.dart
+++ b/packages/flutter/test/widget/page_forward_transitions_test.dart
@@ -70,12 +70,12 @@
onGenerateRoute: (RouteSettings settings) {
switch (settings.name) {
case '/':
- return new TestRoute(
+ return new TestRoute<Null>(
settings: settings,
child: new Builder(
key: insideKey,
builder: (BuildContext context) {
- PageRoute route = ModalRoute.of(context);
+ PageRoute<Null> route = ModalRoute.of(context);
return new Column(
children: <Widget>[
new TestTransition(
@@ -93,9 +93,9 @@
}
)
);
- case '/2': return new TestRoute(settings: settings, child: new Text('E'));
- case '/3': return new TestRoute(settings: settings, child: new Text('F'));
- case '/4': return new TestRoute(settings: settings, child: new Text('G'));
+ case '/2': return new TestRoute<Null>(settings: settings, child: new Text('E'));
+ case '/3': return new TestRoute<Null> (settings: settings, child: new Text('F'));
+ case '/4': return new TestRoute<Null> (settings: settings, child: new Text('G'));
}
}
)
diff --git a/packages/flutter/test/widget/page_transitions_test.dart b/packages/flutter/test/widget/page_transitions_test.dart
index 02ac7e0..8480dff 100644
--- a/packages/flutter/test/widget/page_transitions_test.dart
+++ b/packages/flutter/test/widget/page_transitions_test.dart
@@ -8,7 +8,7 @@
import 'test_matchers.dart';
-class TestOverlayRoute extends OverlayRoute {
+class TestOverlayRoute extends OverlayRoute<Null> {
List<WidgetBuilder> get builders => <WidgetBuilder>[ _build ];
Widget _build(BuildContext context) => new Text('Overlay');
}
diff --git a/packages/flutter/test/widget/remember_scroll_position_test.dart b/packages/flutter/test/widget/remember_scroll_position_test.dart
index 720e8de..4c166f3 100644
--- a/packages/flutter/test/widget/remember_scroll_position_test.dart
+++ b/packages/flutter/test/widget/remember_scroll_position_test.dart
@@ -28,9 +28,9 @@
key: navigatorKey,
onGenerateRoute: (RouteSettings settings) {
if (settings.name == '/')
- return new MaterialPageRoute(builder: (_) => new Container(child: new ThePositiveNumbers()));
+ return new MaterialPageRoute<Null>(builder: (_) => new Container(child: new ThePositiveNumbers()));
else if (settings.name == '/second')
- return new MaterialPageRoute(builder: (_) => new Container(child: new ThePositiveNumbers()));
+ return new MaterialPageRoute<Null>(builder: (_) => new Container(child: new ThePositiveNumbers()));
return null;
}
));
@@ -47,9 +47,10 @@
expect(tester.findText('10'), isNull);
expect(tester.findText('100'), isNull);
- StatefulComponentElement<ScrollableLazyList, ScrollableState<ScrollableLazyList>> target =
+ StatefulComponentElement target =
tester.findElement((Element element) => element.widget is ScrollableLazyList);
- target.state.scrollTo(1000.0);
+ ScrollableState targetState = target.state;
+ targetState.scrollTo(1000.0);
tester.pump(new Duration(seconds: 1));
// we're 600 pixels high, each item is 100 pixels high, scroll position is
diff --git a/packages/flutter/test/widget/snack_bar_test.dart b/packages/flutter/test/widget/snack_bar_test.dart
index bfd9c67..eedafef 100644
--- a/packages/flutter/test/widget/snack_bar_test.dart
+++ b/packages/flutter/test/widget/snack_bar_test.dart
@@ -144,7 +144,7 @@
int snackBarCount = 0;
Key tapTarget = new Key('tap-target');
int time;
- ScaffoldFeatureController<SnackBar> lastController;
+ ScaffoldFeatureController<SnackBar, Null> lastController;
tester.pumpWidget(new MaterialApp(
routes: <String, RouteBuilder>{
'/': (RouteArguments args) {
@@ -176,7 +176,7 @@
expect(tester.findText('bar2'), isNull);
time = 1000;
tester.tap(tester.findElementByKey(tapTarget)); // queue bar1
- ScaffoldFeatureController<SnackBar> firstController = lastController;
+ ScaffoldFeatureController<SnackBar, Null> firstController = lastController;
time = 2;
tester.tap(tester.findElementByKey(tapTarget)); // queue bar2
expect(tester.findText('bar1'), isNull);
diff --git a/packages/flutter/test/widget/snap_scrolling_test.dart b/packages/flutter/test/widget/snap_scrolling_test.dart
index 413c047..01984f1 100644
--- a/packages/flutter/test/widget/snap_scrolling_test.dart
+++ b/packages/flutter/test/widget/snap_scrolling_test.dart
@@ -47,7 +47,7 @@
scrollableState.scrollTo(value);
}
-Future fling(double velocity) {
+Future<Null> fling(double velocity) {
return scrollableState.fling(velocity);
}
diff --git a/packages/flutter/test/widget/stack_test.dart b/packages/flutter/test/widget/stack_test.dart
index 954f891..dfb109b 100644
--- a/packages/flutter/test/widget/stack_test.dart
+++ b/packages/flutter/test/widget/stack_test.dart
@@ -155,7 +155,7 @@
Widget buildFrame(int index) {
itemsPainted = <int>[];
- List<Widget> items = new List<Widget>.generate(itemCount, (i) {
+ List<Widget> items = new List<Widget>.generate(itemCount, (int i) {
return new CustomPaint(
child: new Text('$i'),
painter: new TestCallbackPainter(
@@ -188,7 +188,7 @@
Widget buildFrame(int index) {
itemsTapped = <int>[];
- List<Widget> items = new List<Widget>.generate(itemCount, (i) {
+ List<Widget> items = new List<Widget>.generate(itemCount, (int i) {
return new GestureDetector(child: new Text('$i'), onTap: () { itemsTapped.add(i); });
});
return new Center(child: new IndexedStack(children: items, key: key, index: index));
diff --git a/packages/flutter/test/widget/test_matchers.dart b/packages/flutter/test/widget/test_matchers.dart
index 5797347..2b395fa 100644
--- a/packages/flutter/test/widget/test_matchers.dart
+++ b/packages/flutter/test/widget/test_matchers.dart
@@ -20,25 +20,25 @@
class _IsOnStage extends Matcher {
const _IsOnStage();
- bool matches(item, Map matchState) => !_hasAncestorOfType(item, OffStage);
+ bool matches(Element item, Map<dynamic, dynamic> matchState) => !_hasAncestorOfType(item, OffStage);
Description describe(Description description) => description.add('onstage');
}
class _IsOffStage extends Matcher {
const _IsOffStage();
- bool matches(item, Map matchState) => _hasAncestorOfType(item, OffStage);
+ bool matches(Element item, Map<dynamic, dynamic> matchState) => _hasAncestorOfType(item, OffStage);
Description describe(Description description) => description.add('offstage');
}
class _IsInCard extends Matcher {
const _IsInCard();
- bool matches(item, Map matchState) => _hasAncestorOfType(item, Card);
+ bool matches(Element item, Map<dynamic, dynamic> matchState) => _hasAncestorOfType(item, Card);
Description describe(Description description) => description.add('in card');
}
class _IsNotInCard extends Matcher {
const _IsNotInCard();
- bool matches(item, Map matchState) => !_hasAncestorOfType(item, Card);
+ bool matches(Element item, Map<dynamic, dynamic> matchState) => !_hasAncestorOfType(item, Card);
Description describe(Description description) => description.add('not in card');
}
diff --git a/packages/flutter_driver/lib/src/driver.dart b/packages/flutter_driver/lib/src/driver.dart
index 0a7a148..39625af 100644
--- a/packages/flutter_driver/lib/src/driver.dart
+++ b/packages/flutter_driver/lib/src/driver.dart
@@ -55,7 +55,7 @@
//
// See: https://github.com/dart-lang/sdk/issues/25902
if (isolate.pauseEvent is VMResumeEvent) {
- await new Future.delayed(new Duration(milliseconds: 300));
+ await new Future<Null>.delayed(new Duration(milliseconds: 300));
isolate = await vm.isolates.first.loadRunnable();
}
@@ -64,10 +64,10 @@
// Attempts to resume the isolate, but does not crash if it fails because
// the isolate is already resumed. There could be a race with other tools,
// such as a debugger, any of which could have resumed the isolate.
- Future resumeLeniently() {
+ Future<Null> resumeLeniently() {
_log.trace('Attempting to resume isolate');
- return isolate.resume().catchError((e) {
- const vmMustBePausedCode = 101;
+ return isolate.resume().catchError((dynamic e) {
+ const int vmMustBePausedCode = 101;
if (e is rpc.RpcException && e.code == vmMustBePausedCode) {
// No biggie; something else must have resumed the isolate
_log.warning(
@@ -87,7 +87,7 @@
_log.trace('Isolate is paused at start.');
// Waits for a signal from the VM service that the extension is registered
- Future waitForServiceExtension() {
+ Future<Null> waitForServiceExtension() {
return isolate.onExtensionAdded.firstWhere((String extension) {
return extension == _kFlutterExtensionMethod;
});
@@ -96,8 +96,8 @@
// If the isolate is paused at the start, e.g. via the --start-paused
// option, then the VM service extension is not registered yet. Wait for
// it to be registered.
- Future whenResumed = resumeLeniently();
- Future whenServiceExtensionReady = Future.any(<Future>[
+ Future<Null> whenResumed = resumeLeniently();
+ Future<Null> whenServiceExtensionReady = Future.any(<Future<dynamic>>[
waitForServiceExtension(),
// We will never receive the extension event if the user does not
// register it. If that happens time out.
@@ -150,7 +150,7 @@
Map<String, String> parameters = <String, String>{'command': command.kind}
..addAll(command.serialize());
return _appIsolate.invokeExtension(_kFlutterExtensionMethod, parameters)
- .then((Map<String, dynamic> result) => result, onError: (error, stackTrace) {
+ .then((Map<String, dynamic> result) => result, onError: (dynamic error, dynamic stackTrace) {
throw new DriverError(
'Failed to fulfill ${command.runtimeType} due to remote error',
error,
@@ -217,7 +217,7 @@
dynamic value = await evaluator();
MatchResult matchResult = match(value, matcher);
if (!matchResult.hasMatched) {
- return new Future.error(matchResult.mismatchDescription);
+ return new Future<Null>.error(matchResult.mismatchDescription);
}
return value;
}, timeout, pauseBetweenRetries);
@@ -227,7 +227,7 @@
///
/// Returns a [Future] that fires once the connection has been closed.
// TODO(yjbanov): cleanup object references
- Future close() => _serviceClient.close().then((_) {
+ Future<Null> close() => _serviceClient.close().then((_) {
// Don't leak vm_service_client-specific objects, if any
return null;
});
@@ -255,10 +255,10 @@
Stopwatch timer = new Stopwatch();
Future<VMServiceClient> attemptConnection() {
return VMServiceClient.connect(url)
- .catchError((e) async {
+ .catchError((dynamic e) async {
if (timer.elapsed < const Duration(seconds: 30)) {
_log.info('Waiting for application to start');
- await new Future.delayed(const Duration(seconds: 1));
+ await new Future<Null>.delayed(const Duration(seconds: 1));
return attemptConnection();
} else {
_log.critical(
diff --git a/packages/flutter_driver/lib/src/matcher_util.dart b/packages/flutter_driver/lib/src/matcher_util.dart
index e92acbc..12ab680 100644
--- a/packages/flutter_driver/lib/src/matcher_util.dart
+++ b/packages/flutter_driver/lib/src/matcher_util.dart
@@ -49,7 +49,7 @@
return this;
}
- Description addDescriptionOf(value) {
+ Description addDescriptionOf(dynamic value) {
if (value is Matcher) {
value.describe(this);
return this;
@@ -58,7 +58,7 @@
}
}
- Description addAll(String start, String separator, String end, Iterable list) {
+ Description addAll(String start, String separator, String end, Iterable<dynamic> list) {
add(start);
if (list.isNotEmpty) {
addDescriptionOf(list.first);
diff --git a/packages/flutter_driver/lib/src/retry.dart b/packages/flutter_driver/lib/src/retry.dart
index d0d80b4..bd0cccc 100644
--- a/packages/flutter_driver/lib/src/retry.dart
+++ b/packages/flutter_driver/lib/src/retry.dart
@@ -48,9 +48,9 @@
if (success)
return result;
else if (lastError != null)
- return new Future.error(lastError, lastStackTrace);
+ return new Future<Null>.error(lastError, lastStackTrace);
else
- return new Future.error('Retry timed out');
+ return new Future<Null>.error('Retry timed out');
}
/// A function that produces a [Stopwatch].
diff --git a/packages/flutter_sprites/lib/src/action.dart b/packages/flutter_sprites/lib/src/action.dart
index 6e6a117..d0b6cf9 100644
--- a/packages/flutter_sprites/lib/src/action.dart
+++ b/packages/flutter_sprites/lib/src/action.dart
@@ -424,7 +424,7 @@
}
void update(double t) {
- var newVal;
+ dynamic newVal;
if (startVal is Point) {
// Point
diff --git a/packages/flutter_sprites/lib/src/physics_body.dart b/packages/flutter_sprites/lib/src/physics_body.dart
index 3a8fa47..d32fdac 100644
--- a/packages/flutter_sprites/lib/src/physics_body.dart
+++ b/packages/flutter_sprites/lib/src/physics_body.dart
@@ -35,8 +35,8 @@
bool bullet: false,
bool active: true,
this.gravityScale: 1.0,
- collisionCategory: "Default",
- collisionMask: null
+ String collisionCategory: "Default",
+ List<Object> collisionMask
}) {
this.density = density;
this.friction = friction;
diff --git a/packages/flutter_sprites/lib/src/physics_world.dart b/packages/flutter_sprites/lib/src/physics_world.dart
index f975fac..df974e9 100644
--- a/packages/flutter_sprites/lib/src/physics_world.dart
+++ b/packages/flutter_sprites/lib/src/physics_world.dart
@@ -314,7 +314,7 @@
final PhysicsShape shapeB;
/// True if the two nodes are touching.
- final isTouching;
+ final bool isTouching;
/// To ignore the collision to take place, you can set isEnabled to false
/// during the preSolve phase.
diff --git a/packages/flutter_sprites/lib/src/sprite_box.dart b/packages/flutter_sprites/lib/src/sprite_box.dart
index bbff60b..8595d80 100644
--- a/packages/flutter_sprites/lib/src/sprite_box.dart
+++ b/packages/flutter_sprites/lib/src/sprite_box.dart
@@ -164,7 +164,7 @@
// Event handling
void _addEventTargets(Node node, List<Node> eventTargets) {
- List children = node.children;
+ List<Node> children = node.children;
int i = 0;
// Add childrens that are behind this node
diff --git a/packages/flutter_sprites/lib/src/spritesheet.dart b/packages/flutter_sprites/lib/src/spritesheet.dart
index a428502..638c4a6 100644
--- a/packages/flutter_sprites/lib/src/spritesheet.dart
+++ b/packages/flutter_sprites/lib/src/spritesheet.dart
@@ -19,12 +19,12 @@
assert(jsonDefinition != null);
JsonDecoder decoder = new JsonDecoder();
- Map file = decoder.convert(jsonDefinition);
+ Map<dynamic, dynamic> file = decoder.convert(jsonDefinition);
assert(file != null);
- List frames = file["frames"];
+ List<dynamic> frames = file["frames"];
- for (Map frameInfo in frames) {
+ for (Map<dynamic, dynamic> frameInfo in frames) {
String fileName = frameInfo["filename"];
Rect frame = _readJsonRect(frameInfo["frame"]);
bool rotated = frameInfo["rotated"];
@@ -33,13 +33,13 @@
Size sourceSize = _readJsonSize(frameInfo["sourceSize"]);
Point pivot = _readJsonPoint(frameInfo["pivot"]);
- var texture = new Texture._fromSpriteFrame(_image, fileName, sourceSize, rotated, trimmed, frame,
+ Texture texture = new Texture._fromSpriteFrame(_image, fileName, sourceSize, rotated, trimmed, frame,
spriteSourceSize, pivot);
_textures[fileName] = texture;
}
}
- Rect _readJsonRect(Map data) {
+ Rect _readJsonRect(Map<dynamic, dynamic> data) {
num x = data["x"];
num y = data["y"];
num w = data["w"];
@@ -48,14 +48,14 @@
return new Rect.fromLTRB(x.toDouble(), y.toDouble(), (x + w).toDouble(), (y + h).toDouble());
}
- Size _readJsonSize(Map data) {
+ Size _readJsonSize(Map<dynamic, dynamic> data) {
num w = data["w"];
num h = data["h"];
return new Size(w.toDouble(), h.toDouble());
}
- Point _readJsonPoint(Map data) {
+ Point _readJsonPoint(Map<dynamic, dynamic> data) {
num x = data["x"];
num y = data["y"];
diff --git a/packages/flutter_sprites/lib/src/virtual_joystick.dart b/packages/flutter_sprites/lib/src/virtual_joystick.dart
index a9cbc97..d4a2695 100644
--- a/packages/flutter_sprites/lib/src/virtual_joystick.dart
+++ b/packages/flutter_sprites/lib/src/virtual_joystick.dart
@@ -39,7 +39,7 @@
else if (event.type == PointerUpEvent || event.type == PointerCancelEvent) {
_pointerDownAt = null;
_value = Point.origin;
- ActionTween moveToCenter = new ActionTween((a) => _handlePos = a, _handlePos, _center, 0.4, Curves.elasticOut);
+ ActionTween moveToCenter = new ActionTween((Point a) => _handlePos = a, _handlePos, _center, 0.4, Curves.elasticOut);
actions.run(moveToCenter);
_isDown = false;
} else if (event.type == PointerMoveEvent) {
diff --git a/packages/flutter_test/lib/src/instrumentation.dart b/packages/flutter_test/lib/src/instrumentation.dart
index 24f3909..f415545 100644
--- a/packages/flutter_test/lib/src/instrumentation.dart
+++ b/packages/flutter_test/lib/src/instrumentation.dart
@@ -72,7 +72,10 @@
/// element.
Element findText(String text) {
return findElement((Element element) {
- return element.widget is Text && element.widget.data == text;
+ if (element.widget is! Text)
+ return false;
+ Text textWidget = element.widget;
+ return textWidget.data == text;
});
}
diff --git a/packages/flutter_tools/lib/executable.dart b/packages/flutter_tools/lib/executable.dart
index 7ed6a6d..c7959ea 100644
--- a/packages/flutter_tools/lib/executable.dart
+++ b/packages/flutter_tools/lib/executable.dart
@@ -37,7 +37,7 @@
/// Main entry point for commands.
///
/// This function is intended to be used from the [flutter] command line tool.
-Future main(List<String> args) async {
+Future<Null> main(List<String> args) async {
bool help = args.contains('-h') || args.contains('--help');
bool verbose = args.contains('-v') || args.contains('--verbose');
bool verboseHelp = help && verbose;
@@ -73,7 +73,7 @@
if (result is int)
exit(result);
- }, onError: (error, Chain chain) {
+ }, onError: (dynamic error, Chain chain) {
if (error is UsageException) {
stderr.writeln(error);
// Argument error exit code.
diff --git a/packages/flutter_tools/lib/src/commands/analyze.dart b/packages/flutter_tools/lib/src/commands/analyze.dart
index 1fd9739..2060246 100644
--- a/packages/flutter_tools/lib/src/commands/analyze.dart
+++ b/packages/flutter_tools/lib/src/commands/analyze.dart
@@ -336,6 +336,7 @@
RegExp generalPattern = new RegExp(r'^\[(error|warning|hint|lint)\] (.+) \(([^(),]+), line ([0-9]+), col ([0-9]+)\)$');
RegExp allowedIdentifiersPattern = new RegExp(r'_?([A-Z]|_+)\b');
+ RegExp classesWithOptionalTypeArgumentsPattern = new RegExp(r'\b(GlobalKey|State|ScrollableState|Element|StatelessComponentElement|TypeMatcher)\b');
RegExp constructorTearOffsPattern = new RegExp('.+#.+// analyzer doesn\'t like constructor tear-offs');
RegExp conflictingNamesPattern = new RegExp('^The imported libraries \'([^\']+)\' and \'([^\']+)\' cannot have the same name \'([^\']+)\'\$');
RegExp missingFilePattern = new RegExp('^Target of URI does not exist: \'([^\')]+)\'\$');
@@ -388,6 +389,11 @@
} else if (level == 'lint' && errorMessage == 'Name non-constant identifiers using lowerCamelCase.') {
if (allowedIdentifiersPattern.matchAsPrefix(sourceLine, colNumber-1) != null)
shouldIgnore = true;
+ } else if (level == 'lint' && errorMessage == 'Specify type annotations.') {
+ // we want the type annotations on certain classes to be optional.
+ // see https://github.com/dart-lang/linter/issues/196
+ if (classesWithOptionalTypeArgumentsPattern.matchAsPrefix(sourceLine, colNumber-1) != null)
+ shouldIgnore = true;
} else if (constructorTearOffsPattern.allMatches(sourceLine).isNotEmpty) {
shouldIgnore = true;
}
diff --git a/packages/newton/test/newton_test.dart b/packages/newton/test/newton_test.dart
index 20efa21..cacc584 100644
--- a/packages/newton/test/newton_test.dart
+++ b/packages/newton/test/newton_test.dart
@@ -10,7 +10,7 @@
void main() {
test('test_friction', () {
- var friction = new FrictionSimulation(0.3, 100.0, 400.0);
+ FrictionSimulation friction = new FrictionSimulation(0.3, 100.0, 400.0);
friction.tolerance = const Tolerance(velocity: 1.0);
@@ -32,18 +32,18 @@
test('test_friction_through', () {
// Use a normal FrictionSimulation to generate start and end
// velocity and positions with drag = 0.025.
- var startPosition = 10.0;
- var startVelocity = 600.0;
- var f = new FrictionSimulation(0.025, startPosition, startVelocity);
- var endPosition = f.x(1.0);
- var endVelocity = f.dx(1.0);
+ double startPosition = 10.0;
+ double startVelocity = 600.0;
+ FrictionSimulation f = new FrictionSimulation(0.025, startPosition, startVelocity);
+ double endPosition = f.x(1.0);
+ double endVelocity = f.dx(1.0);
expect(endPosition, greaterThan(startPosition));
expect(endVelocity, lessThan(startVelocity));
// Verify that that the "through" FrictionSimulation ends up at
// endPosition and endVelocity; implies that it computed the right
// value for _drag.
- var friction = new FrictionSimulation.through(
+ FrictionSimulation friction = new FrictionSimulation.through(
startPosition, endPosition, startVelocity, endVelocity);
expect(friction.isDone(0.0), false);
expect(friction.x(0.0), 10.0);
@@ -72,7 +72,7 @@
});
test('test_gravity', () {
- var gravity = new GravitySimulation(200.0, 100.0, 600.0, 0.0);
+ GravitySimulation gravity = new GravitySimulation(200.0, 100.0, 600.0, 0.0);
expect(gravity.isDone(0.0), false);
expect(gravity.x(0.0), 100.0);
@@ -102,7 +102,7 @@
});
test('spring_types', () {
- var crit = new SpringSimulation(new SpringDescription.withDampingRatio(
+ SpringSimulation crit = new SpringSimulation(new SpringDescription.withDampingRatio(
mass: 1.0, springConstant: 100.0), 0.0, 300.0, 0.0);
expect(crit.type, SpringType.criticallyDamped);
@@ -110,23 +110,23 @@
mass: 1.0, springConstant: 100.0, ratio: 1.0), 0.0, 300.0, 0.0);
expect(crit.type, SpringType.criticallyDamped);
- var under = new SpringSimulation(new SpringDescription.withDampingRatio(
+ SpringSimulation under = new SpringSimulation(new SpringDescription.withDampingRatio(
mass: 1.0, springConstant: 100.0, ratio: 0.75), 0.0, 300.0, 0.0);
expect(under.type, SpringType.underDamped);
- var over = new SpringSimulation(new SpringDescription.withDampingRatio(
+ SpringSimulation over = new SpringSimulation(new SpringDescription.withDampingRatio(
mass: 1.0, springConstant: 100.0, ratio: 1.25), 0.0, 300.0, 0.0);
expect(over.type, SpringType.overDamped);
// Just so we don't forget how to create a desc without the ratio.
- var other = new SpringSimulation(
+ SpringSimulation other = new SpringSimulation(
new SpringDescription(mass: 1.0, springConstant: 100.0, damping: 20.0),
0.0, 20.0, 20.0);
expect(other.type, SpringType.criticallyDamped);
});
test('crit_spring', () {
- var crit = new SpringSimulation(new SpringDescription.withDampingRatio(
+ SpringSimulation crit = new SpringSimulation(new SpringDescription.withDampingRatio(
mass: 1.0, springConstant: 100.0, ratio: 1.0), 0.0, 500.0, 0.0);
crit.tolerance = const Tolerance(distance: 0.01, velocity: 0.01);
@@ -151,7 +151,7 @@
});
test('overdamped_spring', () {
- var over = new SpringSimulation(new SpringDescription.withDampingRatio(
+ SpringSimulation over = new SpringSimulation(new SpringDescription.withDampingRatio(
mass: 1.0, springConstant: 100.0, ratio: 1.25), 0.0, 500.0, 0.0);
over.tolerance = const Tolerance(distance: 0.01, velocity: 0.01);
@@ -173,7 +173,7 @@
});
test('underdamped_spring', () {
- var under = new SpringSimulation(new SpringDescription.withDampingRatio(
+ SpringSimulation under = new SpringSimulation(new SpringDescription.withDampingRatio(
mass: 1.0, springConstant: 100.0, ratio: 0.25), 0.0, 300.0, 0.0);
expect(under.type, SpringType.underDamped);
@@ -190,16 +190,16 @@
});
test('test_kinetic_scroll', () {
- var spring = new SpringDescription.withDampingRatio(
+ SpringDescription spring = new SpringDescription.withDampingRatio(
mass: 1.0, springConstant: 50.0, ratio: 0.5);
- var scroll = new ScrollSimulation(100.0, 800.0, 0.0, 300.0, spring, 0.3);
+ ScrollSimulation scroll = new ScrollSimulation(100.0, 800.0, 0.0, 300.0, spring, 0.3);
scroll.tolerance = const Tolerance(velocity: 0.5, distance: 0.1);
expect(scroll.isDone(0.0), false);
expect(scroll.isDone(0.5), false); // switch from friction to spring
expect(scroll.isDone(3.5), true);
- var scroll2 = new ScrollSimulation(100.0, -800.0, 0.0, 300.0, spring, 0.3);
+ ScrollSimulation scroll2 = new ScrollSimulation(100.0, -800.0, 0.0, 300.0, spring, 0.3);
scroll2.tolerance = const Tolerance(velocity: 0.5, distance: 0.1);
expect(scroll2.isDone(0.0), false);
expect(scroll2.isDone(0.5), false); // switch from friction to spring
@@ -207,10 +207,10 @@
});
test('scroll_with_inf_edge_ends', () {
- var spring = new SpringDescription.withDampingRatio(
+ SpringDescription spring = new SpringDescription.withDampingRatio(
mass: 1.0, springConstant: 50.0, ratio: 0.5);
- var scroll =
+ ScrollSimulation scroll =
new ScrollSimulation(100.0, 400.0, 0.0, double.INFINITY, spring, 0.3);
scroll.tolerance = const Tolerance(velocity: 1.0);
@@ -233,8 +233,8 @@
});
test('over/under scroll spring', () {
- var spring = new SpringDescription.withDampingRatio(mass: 1.0, springConstant: 170.0, ratio: 1.1);
- var scroll = new ScrollSimulation(500.0, -7500.0, 0.0, 1000.0, spring, 0.025);
+ SpringDescription spring = new SpringDescription.withDampingRatio(mass: 1.0, springConstant: 170.0, ratio: 1.1);
+ ScrollSimulation scroll = new ScrollSimulation(500.0, -7500.0, 0.0, 1000.0, spring, 0.025);
scroll.tolerance = new Tolerance(velocity: 45.0, distance: 1.5);
expect(scroll.isDone(0.0), false);