Add @override annotations to flutter framework

This commit is contained in:
Hixie 2016-03-14 13:31:43 -07:00
parent 9bc6d281fe
commit 797e27edd3
322 changed files with 2544 additions and 9 deletions

View File

@ -17,6 +17,7 @@ class CardModel {
}
class CardCollection extends StatefulWidget {
@override
CardCollectionState createState() => new CardCollectionState();
}
@ -72,6 +73,7 @@ class CardCollectionState extends State<CardCollection> {
_initVariableSizedCardModels();
}
@override
void initState() {
super.initState();
_initCardModels();
@ -403,6 +405,7 @@ class CardCollectionState extends State<CardCollection> {
.createShader(bounds);
}
@override
Widget build(BuildContext context) {
Widget cardCollection;
if (_fixedSizeCards) {

View File

@ -7,6 +7,7 @@ import 'dart:math' as math;
import 'package:flutter/material.dart';
class ExampleDragTarget extends StatefulWidget {
@override
ExampleDragTargetState createState() => new ExampleDragTargetState();
}
@ -19,6 +20,7 @@ class ExampleDragTargetState extends State<ExampleDragTarget> {
});
}
@override
Widget build(BuildContext context) {
return new DragTarget<Color>(
onAccept: _handleAccept,
@ -41,14 +43,19 @@ class ExampleDragTargetState extends State<ExampleDragTarget> {
class Dot extends StatefulWidget {
Dot({ Key key, this.color, this.size, this.child, this.tappable: false }) : super(key: key);
final Color color;
final double size;
final Widget child;
final bool tappable;
@override
DotState createState() => new DotState();
}
class DotState extends State<Dot> {
int taps = 0;
@override
Widget build(BuildContext context) {
return new GestureDetector(
onTap: config.tappable ? () { setState(() { taps += 1; }); } : null,
@ -84,6 +91,7 @@ class ExampleDragSource extends StatelessWidget {
static const double kHeavyMultiplier = 1.5;
static const double kFingerSize = 50.0;
@override
Widget build(BuildContext context) {
double size = kDotSize;
if (heavy)
@ -146,6 +154,7 @@ class DashOutlineCirclePainter extends CustomPainter {
static const double segmentArc = deltaTheta / 2.0; // radians
static const double startOffset = 1.0; // radians
@override
void paint(Canvas canvas, Size size) {
final double radius = size.shortestSide / 2.0;
final Paint paint = new Paint()
@ -159,6 +168,7 @@ class DashOutlineCirclePainter extends CustomPainter {
canvas.drawPath(path, paint);
}
@override
bool shouldRepaint(DashOutlineCirclePainter oldPainter) => false;
}
@ -172,6 +182,7 @@ class MovableBall extends StatelessWidget {
static final GlobalKey kBallKey = new GlobalKey();
static const double kBallSize = 50.0;
@override
Widget build(BuildContext context) {
Widget ball = new DefaultTextStyle(
style: Theme.of(context).textTheme.body1.copyWith(
@ -213,14 +224,18 @@ class MovableBall extends StatelessWidget {
}
class DragAndDropApp extends StatefulWidget {
@override
DragAndDropAppState createState() => new DragAndDropAppState();
}
class DragAndDropAppState extends State<DragAndDropApp> {
int position = 1;
void moveBall(int newPosition) {
setState(() { position = newPosition; });
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(

View File

@ -46,6 +46,7 @@ class WindowDecoration extends StatelessWidget {
final GestureTapCallback onTap;
final GesturePanUpdateCallback onPanUpdate;
@override
Widget build(BuildContext context) {
double top, right, bottom, left, width, height;
@ -93,6 +94,7 @@ class Window extends StatefulWidget {
final ChildViewConnection child;
final ValueChanged<ChildViewConnection> onClose;
@override
_WindowState createState() => new _WindowState();
}
@ -119,6 +121,7 @@ class _WindowState extends State<Window> {
config.onClose(config.child);
}
@override
Widget build(BuildContext context) {
return new Positioned(
left: _offset.dx,
@ -167,6 +170,7 @@ class LauncherItem extends StatelessWidget {
final Widget child;
final ValueChanged<ChildViewConnection> onLaunch;
@override
Widget build(BuildContext context) {
return new RaisedButton(
onPressed: () { onLaunch(new ChildViewConnection(url: url)); },
@ -180,6 +184,7 @@ class Launcher extends StatelessWidget {
final List<Widget> items;
@override
Widget build(BuildContext context) {
return new Row(
mainAxisAlignment: MainAxisAlignment.center,
@ -189,6 +194,7 @@ class Launcher extends StatelessWidget {
}
class WindowManager extends StatefulWidget {
@override
_WindowManagerState createState() => new _WindowManagerState();
}
@ -207,6 +213,7 @@ class _WindowManagerState extends State<WindowManager> {
});
}
@override
Widget build(BuildContext context) {
return new Material(
child: new Stack(

View File

@ -27,6 +27,7 @@ class _MarkerPainter extends CustomPainter {
final double size;
final MarkerType type;
@override
void paint(Canvas canvas, _) {
Paint paint = new Paint()..color = const Color(0x8000FF00);
double r = size / 2.0;
@ -46,6 +47,7 @@ class _MarkerPainter extends CustomPainter {
}
}
@override
bool shouldRepaint(_MarkerPainter oldPainter) {
return oldPainter.size != size
|| oldPainter.type != type;
@ -64,6 +66,7 @@ class Marker extends StatelessWidget {
final double size;
final MarkerType type;
@override
Widget build(BuildContext context) {
return new Positioned(
left: position.x - size / 2.0,
@ -83,6 +86,7 @@ class Marker extends StatelessWidget {
}
class OverlayGeometryApp extends StatefulWidget {
@override
OverlayGeometryAppState createState() => new OverlayGeometryAppState();
}
@ -96,6 +100,7 @@ class OverlayGeometryAppState extends State<OverlayGeometryApp> {
double markersScrollOffset;
ScrollListener scrollListener;
@override
void initState() {
super.initState();
List<double> cardHeights = <double>[
@ -151,6 +156,7 @@ class OverlayGeometryAppState extends State<OverlayGeometryApp> {
);
}
@override
Widget build(BuildContext context) {
List<Widget> layers = <Widget>[
new Scaffold(

View File

@ -14,10 +14,12 @@ class CardModel {
}
class PageableListApp extends StatefulWidget {
@override
PageableListAppState createState() => new PageableListAppState();
}
class PageableListAppState extends State<PageableListApp> {
@override
void initState() {
super.initState();
List<Size> cardSizes = [
@ -122,6 +124,7 @@ class PageableListAppState extends State<PageableListApp> {
);
}
@override
Widget build(BuildContext context) {
return new IconTheme(
data: const IconThemeData(color: Colors.white),

View File

@ -33,6 +33,7 @@ void main() {
class RawKeyboardDemo extends StatefulWidget {
RawKeyboardDemo({ GlobalKey key }) : super(key: key);
@override
_HardwareKeyDemoState createState() => new _HardwareKeyDemoState();
}
@ -45,6 +46,7 @@ class _HardwareKeyDemoState extends State<RawKeyboardDemo> {
});
}
@override
Widget build(BuildContext context) {
bool focused = Focus.at(context);
Widget child;

View File

@ -14,6 +14,7 @@ class _MyAutoLayoutDelegate extends AutoLayoutDelegate {
AutoLayoutRect p3 = new AutoLayoutRect();
AutoLayoutRect p4 = new AutoLayoutRect();
@override
List<al.Constraint> getConstraints(AutoLayoutRect parent) {
return <al.Constraint>[
// Sum of widths of each box must be equal to that of the container
@ -44,6 +45,7 @@ class _MyAutoLayoutDelegate extends AutoLayoutDelegate {
];
}
@override
bool shouldUpdateConstraints(AutoLayoutDelegate oldDelegate) => true;
}

View File

@ -36,9 +36,13 @@ class SectorConstraints extends Constraints {
return deltaTheta.clamp(minDeltaTheta, maxDeltaTheta);
}
@override
bool get isTight => minDeltaTheta >= maxDeltaTheta && minDeltaTheta >= maxDeltaTheta;
@override
bool get isNormalized => minDeltaRadius <= maxDeltaRadius && minDeltaTheta <= maxDeltaTheta;
@override
bool get debugAssertIsNormalized {
assert(isNormalized);
return isNormalized;
@ -69,6 +73,7 @@ class SectorParentData extends ParentData {
abstract class RenderSector extends RenderObject {
@override
void setupParentData(RenderObject child) {
if (child.parentData is! SectorParentData)
child.parentData = new SectorParentData();
@ -76,13 +81,17 @@ abstract class RenderSector extends RenderObject {
// RenderSectors always use SectorParentData subclasses, as they need to be
// able to read their position information for painting and hit testing.
@override
SectorParentData get parentData => super.parentData;
SectorDimensions getIntrinsicDimensions(SectorConstraints constraints, double radius) {
return new SectorDimensions.withConstraints(constraints);
}
@override
SectorConstraints get constraints => super.constraints;
@override
void debugAssertDoesMeetConstraints() {
assert(constraints != null);
assert(deltaRadius != null);
@ -94,11 +103,15 @@ abstract class RenderSector extends RenderObject {
assert(constraints.minDeltaTheta <= deltaTheta);
assert(deltaTheta <= math.max(constraints.minDeltaTheta, constraints.maxDeltaTheta));
}
@override
void performResize() {
// default behavior for subclasses that have sizedByParent = true
deltaRadius = constraints.constrainDeltaRadius(0.0);
deltaTheta = constraints.constrainDeltaTheta(0.0);
}
@override
void performLayout() {
// descendants have to either override performLayout() to set both
// the dimensions and lay out children, or, set sizedByParent to
@ -106,7 +119,10 @@ abstract class RenderSector extends RenderObject {
assert(sizedByParent);
}
@override
Rect get paintBounds => new Rect.fromLTWH(0.0, 0.0, 2.0 * deltaRadius, 2.0 * deltaRadius);
@override
Rect get semanticBounds => new Rect.fromLTWH(-deltaRadius, -deltaRadius, 2.0 * deltaRadius, 2.0 * deltaRadius);
bool hitTest(HitTestResult result, { double radius, double theta }) {
@ -137,6 +153,7 @@ abstract class RenderDecoratedSector extends RenderSector {
}
// offset must point to the center of the circle
@override
void paint(PaintingContext context, Offset offset) {
assert(deltaRadius != null);
assert(deltaTheta != null);
@ -167,6 +184,7 @@ class SectorChildListParentData extends SectorParentData with ContainerParentDat
class RenderSectorWithChildren extends RenderDecoratedSector with ContainerRenderObjectMixin<RenderSector, SectorChildListParentData> {
RenderSectorWithChildren(BoxDecoration decoration) : super(decoration);
@override
void hitTestChildren(HitTestResult result, { double radius, double theta }) {
RenderSector child = lastChild;
while (child != null) {
@ -177,6 +195,7 @@ class RenderSectorWithChildren extends RenderDecoratedSector with ContainerRende
}
}
@override
void visitChildren(RenderObjectVisitor visitor) {
RenderSector child = lastChild;
while (child != null) {
@ -217,12 +236,14 @@ class RenderSectorRing extends RenderSectorWithChildren {
}
}
@override
void setupParentData(RenderObject child) {
// TODO(ianh): avoid code duplication
if (child.parentData is! SectorChildListParentData)
child.parentData = new SectorChildListParentData();
}
@override
SectorDimensions getIntrinsicDimensions(SectorConstraints constraints, double radius) {
double outerDeltaRadius = constraints.constrainDeltaRadius(desiredDeltaRadius);
double innerDeltaRadius = outerDeltaRadius - padding * 2.0;
@ -251,6 +272,7 @@ class RenderSectorRing extends RenderSectorWithChildren {
deltaTheta: innerTheta);
}
@override
void performLayout() {
assert(this.parentData is SectorParentData);
deltaRadius = constraints.constrainDeltaRadius(desiredDeltaRadius);
@ -284,6 +306,7 @@ class RenderSectorRing extends RenderSectorWithChildren {
// offset must point to the center of our circle
// each sector then knows how to paint itself at its location
@override
void paint(PaintingContext context, Offset offset) {
// TODO(ianh): avoid code duplication
super.paint(context, offset);
@ -327,12 +350,14 @@ class RenderSectorSlice extends RenderSectorWithChildren {
}
}
@override
void setupParentData(RenderObject child) {
// TODO(ianh): avoid code duplication
if (child.parentData is! SectorChildListParentData)
child.parentData = new SectorChildListParentData();
}
@override
SectorDimensions getIntrinsicDimensions(SectorConstraints constraints, double radius) {
assert(this.parentData is SectorParentData);
double paddingTheta = math.atan(padding / this.parentData.radius);
@ -359,6 +384,7 @@ class RenderSectorSlice extends RenderSectorWithChildren {
deltaTheta: outerDeltaTheta);
}
@override
void performLayout() {
assert(this.parentData is SectorParentData);
deltaTheta = constraints.constrainDeltaTheta(desiredDeltaTheta);
@ -389,6 +415,7 @@ class RenderSectorSlice extends RenderSectorWithChildren {
// offset must point to the center of our circle
// each sector then knows how to paint itself at its location
@override
void paint(PaintingContext context, Offset offset) {
// TODO(ianh): avoid code duplication
super.paint(context, offset);
@ -417,29 +444,34 @@ class RenderBoxToRenderSectorAdapter extends RenderBox with RenderObjectWithChil
markNeedsLayout();
}
@override
void setupParentData(RenderObject child) {
if (child.parentData is! SectorParentData)
child.parentData = new SectorParentData();
}
@override
double getMinIntrinsicWidth(BoxConstraints constraints) {
if (child == null)
return super.getMinIntrinsicWidth(constraints);
return getIntrinsicDimensions(constraints).width;
}
@override
double getMaxIntrinsicWidth(BoxConstraints constraints) {
if (child == null)
return super.getMaxIntrinsicWidth(constraints);
return getIntrinsicDimensions(constraints).width;
}
@override
double getMinIntrinsicHeight(BoxConstraints constraints) {
if (child == null)
return super.getMinIntrinsicHeight(constraints);
return getIntrinsicDimensions(constraints).height;
}
@override
double getMaxIntrinsicHeight(BoxConstraints constraints) {
if (child == null)
return super.getMaxIntrinsicHeight(constraints);
@ -456,6 +488,7 @@ class RenderBoxToRenderSectorAdapter extends RenderBox with RenderObjectWithChil
return constraints.constrain(new Size(dimension, dimension));
}
@override
void performLayout() {
if (child == null) {
size = constraints.constrain(Size.zero);
@ -472,6 +505,7 @@ class RenderBoxToRenderSectorAdapter extends RenderBox with RenderObjectWithChil
}
}
@override
void paint(PaintingContext context, Offset offset) {
super.paint(context, offset);
if (child != null) {
@ -481,6 +515,7 @@ class RenderBoxToRenderSectorAdapter extends RenderBox with RenderObjectWithChil
}
}
@override
bool hitTest(HitTestResult result, { Point position }) {
if (child == null)
return false;
@ -516,15 +551,18 @@ class RenderSolidColor extends RenderDecoratedSector {
double desiredDeltaTheta;
final Color backgroundColor;
@override
SectorDimensions getIntrinsicDimensions(SectorConstraints constraints, double radius) {
return new SectorDimensions.withConstraints(constraints, deltaTheta: desiredDeltaTheta);
}
@override
void performLayout() {
deltaRadius = constraints.constrainDeltaRadius(desiredDeltaRadius);
deltaTheta = constraints.constrainDeltaTheta(desiredDeltaTheta);
}
@override
void handleEvent(PointerEvent event, HitTestEntry entry) {
if (event is PointerDownEvent) {
decoration = new BoxDecoration(backgroundColor: const Color(0xFFFF0000));

View File

@ -13,34 +13,40 @@ class RenderSolidColorBox extends RenderDecoratedBox {
: backgroundColor = backgroundColor,
super(decoration: new BoxDecoration(backgroundColor: backgroundColor));
@override
double getMinIntrinsicWidth(BoxConstraints constraints) {
return constraints.constrainHeight(
this.desiredSize == Size.infinite ? 0.0 : desiredSize.width
);
}
@override
double getMaxIntrinsicWidth(BoxConstraints constraints) {
return constraints.constrainWidth(
this.desiredSize == Size.infinite ? 0.0 : desiredSize.width
);
}
@override
double getMinIntrinsicHeight(BoxConstraints constraints) {
return constraints.constrainHeight(
this.desiredSize == Size.infinite ? 0.0 : desiredSize.height
);
}
@override
double getMaxIntrinsicHeight(BoxConstraints constraints) {
return constraints.constrainHeight(
this.desiredSize == Size.infinite ? 0.0 : desiredSize.height
);
}
@override
void performLayout() {
size = constraints.constrain(desiredSize);
}
@override
void handleEvent(PointerEvent event, BoxHitTestEntry entry) {
if (event is PointerDownEvent) {
decoration = new BoxDecoration(backgroundColor: const Color(0xFFFF0000));

View File

@ -45,20 +45,24 @@ class RenderDots extends RenderBox {
/// Indicates that the size of this render object depends only on the
/// layout constraints provided by the parent.
@override
bool get sizedByParent => true;
/// By selecting the biggest value permitted by the incomming constraints
/// during layout, this function makes this render object as large as
/// possible (i.e., fills the entire screen).
@override
void performResize() {
size = constraints.biggest;
}
/// Makes this render object hittable so that it receives pointer events.
@override
bool hitTestSelf(Point position) => true;
/// Processes pointer events by mutating state and invalidating its previous
/// painting commands.
@override
void handleEvent(PointerEvent event, BoxHitTestEntry entry) {
if (event is PointerDownEvent) {
Color color = _kColors[event.pointer.remainder(_kColors.length)];
@ -78,6 +82,7 @@ class RenderDots extends RenderBox {
}
/// Issues new painting commands.
@override
void paint(PaintingContext context, Offset offset) {
final Canvas canvas = context.canvas;
// The "size" property indicates the size of that this render box was

View File

@ -74,6 +74,7 @@ class PianoApp extends StatelessWidget {
}
}
@override
Widget build(BuildContext context) {
List<Widget> children = <Widget>[];
for (PianoKey key in keys) {

View File

@ -13,6 +13,7 @@ class _MyAutoLayoutDelegate extends AutoLayoutDelegate {
AutoLayoutRect p3 = new AutoLayoutRect();
AutoLayoutRect p4 = new AutoLayoutRect();
@override
List<al.Constraint> getConstraints(AutoLayoutRect parent) {
return <al.Constraint>[
// Sum of widths of each box must be equal to that of the container
@ -43,16 +44,19 @@ class _MyAutoLayoutDelegate extends AutoLayoutDelegate {
];
}
@override
bool shouldUpdateConstraints(_MyAutoLayoutDelegate oldDelegate) => true;
}
class ColoredBoxes extends StatefulWidget {
@override
_ColoredBoxesState createState() => new _ColoredBoxesState();
}
class _ColoredBoxesState extends State<ColoredBoxes> {
final _MyAutoLayoutDelegate delegate = new _MyAutoLayoutDelegate();
@override
Widget build(BuildContext context) {
return new AutoLayout(
delegate: delegate,

View File

@ -9,10 +9,12 @@ class RenderDots extends RenderConstrainedBox {
RenderDots() : super(additionalConstraints: const BoxConstraints.expand());
// Makes this render box hittable so that we'll get pointer events.
@override
bool hitTestSelf(Point position) => true;
final Map<int, Point> _dots = <int, Point>{};
@override
void handleEvent(PointerEvent event, BoxHitTestEntry entry) {
if (event is PointerDownEvent || event is PointerMoveEvent) {
_dots[event.pointer] = event.position;
@ -23,6 +25,7 @@ class RenderDots extends RenderConstrainedBox {
}
}
@override
void paint(PaintingContext context, Offset offset) {
final Canvas canvas = context.canvas;
canvas.drawRect(offset & size, new Paint()..color = new Color(0xFF0000FF));
@ -37,6 +40,8 @@ class RenderDots extends RenderConstrainedBox {
class Dots extends SingleChildRenderObjectWidget {
Dots({ Key key, Widget child }) : super(key: key, child: child);
@override
RenderDots createRenderObject(BuildContext context) => new RenderDots();
}

View File

@ -25,6 +25,7 @@ class _GesturePainter extends CustomPainter {
final bool doubleTapEnabled;
final bool longPressEnabled;
@override
void paint(Canvas canvas, Size size) {
Point center = (size.center(Point.origin).toOffset() * zoom + offset).toPoint();
double radius = size.width / 2.0 * zoom;
@ -42,6 +43,7 @@ class _GesturePainter extends CustomPainter {
canvas.drawCircle(center, radius, paint);
}
@override
bool shouldRepaint(_GesturePainter oldPainter) {
return oldPainter.zoom != zoom
|| oldPainter.offset != offset
@ -55,6 +57,7 @@ class _GesturePainter extends CustomPainter {
}
class GestureDemo extends StatefulWidget {
@override
_GestureDemoState createState() => new _GestureDemoState();
}
@ -134,6 +137,7 @@ class _GestureDemoState extends State<GestureDemo> {
});
}
@override
Widget build(BuildContext context) {
return new Stack(
children: <Widget>[

View File

@ -9,6 +9,7 @@ class AdaptedListItem extends StatelessWidget {
final String name;
@override
Widget build(BuildContext context) {
return new Row(
children: <Widget>[
@ -31,6 +32,7 @@ class AdaptedGridItem extends StatelessWidget {
final String name;
@override
Widget build(BuildContext context) {
return new Card(
child: new Column(
@ -70,6 +72,7 @@ class AdaptiveContainer extends StatelessWidget {
final List<String> names;
@override
Widget build(BuildContext context) {
if (MediaQuery.of(context).size.width < _kGridViewBreakpoint) {
return new ScrollableList(

View File

@ -17,6 +17,7 @@ RenderBox initCircle() {
}
class SectorApp extends StatefulWidget {
@override
SectorAppState createState() => new SectorAppState();
}
@ -147,6 +148,7 @@ class SectorAppState extends State<SectorApp> {
);
}
@override
Widget build(BuildContext context) {
return new MaterialApp(
theme: new ThemeData.light(),

View File

@ -18,7 +18,10 @@ void addFlexChildSolidColor(RenderFlex parent, Color backgroundColor, { int flex
// Solid colour, Widget version
class Rectangle extends StatelessWidget {
Rectangle(this.color, { Key key }) : super(key: key);
final Color color;
@override
Widget build(BuildContext context) {
return new Flexible(
child: new Container(

View File

@ -5,12 +5,14 @@
import 'package:flutter/widgets.dart';
class SpinningSquare extends StatefulWidget {
@override
_SpinningSquareState createState() => new _SpinningSquareState();
}
class _SpinningSquareState extends State<SpinningSquare> {
AnimationController _animation;
@override
void initState() {
super.initState();
// We use 3600 milliseconds instead of 1800 milliseconds because 0.0 -> 1.0
@ -21,6 +23,7 @@ class _SpinningSquareState extends State<SpinningSquare> {
)..repeat();
}
@override
Widget build(BuildContext context) {
return new RotationTransition(
turns: _animation,

View File

@ -58,6 +58,7 @@ Widget toStyledText(String name, String text) {
Widget toPlainText(String name, String text) => new Text(name + ":" + text);
class SpeakerSeparator extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new Container(
constraints: const BoxConstraints.expand(height: 0.0),
@ -72,10 +73,12 @@ class SpeakerSeparator extends StatelessWidget {
}
class StyledTextDemo extends StatefulWidget {
@override
_StyledTextDemoState createState() => new _StyledTextDemoState();
}
class _StyledTextDemoState extends State<StyledTextDemo> {
@override
void initState() {
super.initState();
_toText = toStyledText;
@ -89,6 +92,7 @@ class _StyledTextDemoState extends State<StyledTextDemo> {
});
}
@override
Widget build(BuildContext context) {
List<Widget> lines = _kNameLines
.map((List<String> nameAndText) => Function.apply(_toText, nameAndText))

View File

@ -45,6 +45,7 @@ class _ButtonDemo {
// to recover this demo's selected tab. To enable it to compare restored
// _ButtonDemo objects with new ones, define hashCode and operator== .
@override
bool operator==(Object other) {
if (other.runtimeType != runtimeType)
return false;
@ -52,16 +53,19 @@ class _ButtonDemo {
return typedOther.title == title && typedOther.text == text;
}
@override
int get hashCode => hashValues(title.hashCode, text.hashCode);
}
class ButtonsDemo extends StatefulWidget {
@override
_ButtonsDemoState createState() => new _ButtonsDemoState();
}
class _ButtonsDemoState extends State<ButtonsDemo> {
List<_ButtonDemo> demos;
@override
void initState() {
super.initState();
demos = <_ButtonDemo>[
@ -192,6 +196,7 @@ class _ButtonsDemoState extends State<ButtonsDemo> {
);
}
@override
Widget build(BuildContext context) {
return new TabBarSelection<_ButtonDemo>(
values: demos,

View File

@ -43,6 +43,7 @@ class TravelDestinationItem extends StatelessWidget {
final TravelDestination destination;
@override
Widget build(BuildContext context) {
ThemeData theme = Theme.of(context);
TextStyle titleStyle = theme.textTheme.headline.copyWith(color: Colors.white);
@ -115,6 +116,7 @@ class TravelDestinationItem extends StatelessWidget {
}
class CardsDemo extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(

View File

@ -5,6 +5,7 @@
import 'package:flutter/material.dart';
class ChipDemo extends StatefulWidget {
@override
_ChipDemoState createState() => new _ChipDemoState();
}
@ -17,6 +18,7 @@ class _ChipDemoState extends State<ChipDemo> {
});
}
@override
Widget build(BuildContext context) {
List<Widget> chips = <Widget>[
new Chip(

View File

@ -54,6 +54,7 @@ class ColorItem extends StatelessWidget {
String colorString() => "#${color.value.toRadixString(16).padLeft(8, '0').toUpperCase()}";
@override
Widget build(BuildContext context) {
return new Container(
height: kColorItemHeight,
@ -80,6 +81,7 @@ class ColorSwatchTabView extends StatelessWidget {
final TextStyle blackTextStyle = Typography.black.body1;
final TextStyle whiteTextStyle = Typography.white.body1;
@override
Widget build(BuildContext context) {
List<Widget> colorItems = swatch.colors.keys.map((int index) {
return new DefaultTextStyle(
@ -107,6 +109,7 @@ class ColorSwatchTabView extends StatelessWidget {
}
class ColorsDemo extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new TabBarSelection<ColorSwatch>(
values: colorSwatches,

View File

@ -8,6 +8,7 @@ import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
class DatePickerDemo extends StatefulWidget {
@override
_DatePickerDemoState createState() => new _DatePickerDemoState();
}
@ -28,6 +29,7 @@ class _DatePickerDemoState extends State<DatePickerDemo> {
}
}
@override
Widget build(BuildContext context) {
return
new Scaffold(

View File

@ -28,6 +28,7 @@ class DialogDemoItem extends StatelessWidget {
final String text;
final VoidCallback onPressed;
@override
Widget build(BuildContext context) {
return new InkWell(
onTap: onPressed,
@ -54,6 +55,7 @@ class DialogDemoItem extends StatelessWidget {
}
class DialogDemo extends StatefulWidget {
@override
DialogDemoState createState() => new DialogDemoState();
}
@ -74,6 +76,7 @@ class DialogDemoState extends State<DialogDemo> {
});
}
@override
Widget build(BuildContext context) {
final ThemeData theme = Theme.of(context);
final TextStyle dialogTextStyle = theme.textTheme.subhead.copyWith(color: theme.textTheme.caption.color);

View File

@ -5,6 +5,7 @@
import 'package:flutter/material.dart';
class DropDownDemo extends StatefulWidget {
@override
_DropDownDemoState createState() => new _DropDownDemoState();
}
@ -18,6 +19,7 @@ class _DropDownDemoState extends State<DropDownDemo> {
.toList();
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(title: new Text("Dropdown Button")),

View File

@ -16,6 +16,7 @@ SpriteSheet _sprites;
class FitnessDemo extends StatelessWidget {
FitnessDemo({ Key key }) : super(key: key);
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
@ -28,6 +29,8 @@ class FitnessDemo extends StatelessWidget {
class _FitnessDemoContents extends StatefulWidget {
_FitnessDemoContents({ Key key }) : super(key: key);
@override
_FitnessDemoContentsState createState() => new _FitnessDemoContentsState();
}
@ -43,6 +46,7 @@ class _FitnessDemoContentsState extends State<_FitnessDemoContents> {
_sprites = new SpriteSheet(_images['packages/flutter_gallery_assets/jumpingjack.png'], json);
}
@override
void initState() {
super.initState();
@ -73,6 +77,7 @@ class _FitnessDemoContentsState extends State<_FitnessDemoContents> {
_WorkoutAnimationNode workoutAnimation;
@override
Widget build(BuildContext context) {
if (!assetsLoaded)
return new Container();
@ -248,6 +253,7 @@ class _WorkoutAnimationNode extends NodeWithSize {
_jumpingJack.neutralPose();
}
@override
void update(double dt) {
if (workingOut) {
int millis = new DateTime.now().millisecondsSinceEpoch - _startTimeMillis;
@ -273,6 +279,7 @@ class _ProgressCircle extends NodeWithSize {
double value;
@override
void paint(Canvas canvas) {
applyTransformForPivot(canvas);
@ -513,10 +520,12 @@ class _JumpingJackPart extends Sprite {
class _Fireworks extends StatefulWidget {
_Fireworks({ Key key }) : super(key: key);
@override
_FireworksState createState() => new _FireworksState();
}
class _FireworksState extends State<_Fireworks> {
@override
void initState() {
super.initState();
fireworks = new _FireworksNode();
@ -524,6 +533,7 @@ class _FireworksState extends State<_Fireworks> {
_FireworksNode fireworks;
@override
Widget build(BuildContext context) {
return new SpriteWidget(fireworks);
}
@ -533,6 +543,7 @@ class _FireworksNode extends NodeWithSize {
_FireworksNode() : super(const Size(1024.0, 1024.0));
double _countDown = 0.0;
@override
void update(double dt) {
if (_countDown <= 0.0) {
_addExplosion();

View File

@ -11,6 +11,7 @@ class _ContactCategory extends StatelessWidget {
final IconData icon;
final List<Widget> children;
@override
Widget build(BuildContext context) {
return new Container(
padding: const EdgeInsets.symmetric(vertical: 16.0),
@ -41,6 +42,7 @@ class _ContactItem extends StatelessWidget {
final IconData icon;
final List<String> lines;
@override
Widget build(BuildContext context) {
List<Widget> columnChildren = lines.sublist(0, lines.length - 1).map((String line) => new Text(line)).toList();
columnChildren.add(new Text(lines.last, style: Theme.of(context).textTheme.caption));
@ -68,6 +70,7 @@ class _ContactItem extends StatelessWidget {
}
class FlexibleSpaceDemo extends StatefulWidget {
@override
FlexibleSpaceDemoState createState() => new FlexibleSpaceDemoState();
}
@ -77,6 +80,7 @@ class FlexibleSpaceDemoState extends State<FlexibleSpaceDemo> {
final Key scrollableKey = new UniqueKey();
AppBarBehavior _appBarBehavior = AppBarBehavior.scroll;
@override
Widget build(BuildContext context) {
return new Theme(
data: new ThemeData(

View File

@ -27,6 +27,7 @@ class DateTimeItem extends StatelessWidget {
final TimeOfDay time;
final ValueChanged<DateTime> onChanged;
@override
Widget build(BuildContext context) {
final ThemeData theme = Theme.of(context);
@ -93,6 +94,7 @@ class DateTimeItem extends StatelessWidget {
}
class FullScreenDialogDemo extends StatefulWidget {
@override
FullScreenDialogDemoState createState() => new FullScreenDialogDemoState();
}
@ -137,6 +139,7 @@ class FullScreenDialogDemoState extends State<FullScreenDialogDemo> {
);
}
@override
Widget build(BuildContext context) {
final ThemeData theme = Theme.of(context);

View File

@ -55,6 +55,7 @@ class GridDemoPhotoItem extends StatelessWidget {
));
}
@override
Widget build(BuildContext context) {
final Widget image = new GestureDetector(
onTap: () { showPhoto(context); },
@ -104,9 +105,12 @@ class GridListDemoGridDelegate extends FixedColumnCountGridDelegate {
assert(tileHeightFactor != null && tileHeightFactor > 0.0);
}
@override
final int columnCount;
final double tileHeightFactor;
@override
GridSpecification getGridSpecification(BoxConstraints constraints, int childCount) {
assert(constraints.maxWidth < double.INFINITY);
assert(constraints.maxHeight < double.INFINITY);
@ -121,6 +125,7 @@ class GridListDemoGridDelegate extends FixedColumnCountGridDelegate {
);
}
@override
bool shouldRelayout(GridListDemoGridDelegate oldDelegate) {
return columnCount != oldDelegate.columnCount
|| tileHeightFactor != oldDelegate.tileHeightFactor
@ -131,6 +136,7 @@ class GridListDemoGridDelegate extends FixedColumnCountGridDelegate {
class GridListDemo extends StatefulWidget {
GridListDemo({ Key key }) : super(key: key);
@override
GridListDemoState createState() => new GridListDemoState();
}
@ -169,6 +175,7 @@ class GridListDemoState extends State<GridListDemo> {
// When the ScrollableGrid first appears we want the last row to only be
// partially visible, to help the user recognize that the grid is scrollable.
// The GridListDemoGridDelegate's tileHeightFactor is used for this.
@override
Widget build(BuildContext context) {
final Orientation orientation = MediaQuery.of(context).orientation;
return new Scaffold(

View File

@ -5,6 +5,7 @@
import 'package:flutter/material.dart';
class IconsDemo extends StatefulWidget {
@override
IconsDemoState createState() => new IconsDemoState();
}
@ -61,6 +62,7 @@ class IconsDemoState extends State<IconsDemo> {
);
}
@override
Widget build(BuildContext context) {
final ThemeData theme = Theme.of(context);
final TextStyle textStyle = theme.textTheme.subhead.copyWith(color: theme.textTheme.caption.color);

View File

@ -28,6 +28,7 @@ class LeaveBehindItem {
class LeaveBehindDemo extends StatefulWidget {
LeaveBehindDemo({ Key key }) : super(key: key);
@override
LeaveBehindDemoState createState() => new LeaveBehindDemoState();
}
@ -47,6 +48,7 @@ class LeaveBehindDemoState extends State<LeaveBehindDemo> {
});
}
@override
void initState() {
super.initState();
initListItems();
@ -122,6 +124,7 @@ class LeaveBehindDemoState extends State<LeaveBehindDemo> {
);
}
@override
Widget build(BuildContext context) {
return new Scaffold(
key: _scaffoldKey,

View File

@ -13,6 +13,7 @@ enum ListDemoItemSize {
class ListDemo extends StatefulWidget {
ListDemo({ Key key }) : super(key: key);
@override
ListDemoState createState() => new ListDemoState();
}
@ -153,6 +154,7 @@ class ListDemoState extends State<ListDemo> {
);
}
@override
Widget build(BuildContext context) {
final String layoutText = _dense ? " \u2013 Dense" : "";
String itemSizeText;

View File

@ -7,6 +7,7 @@ import 'package:flutter/material.dart';
class MenuDemo extends StatefulWidget {
MenuDemo({ Key key }) : super(key: key);
@override
MenuDemoState createState() => new MenuDemoState();
}
@ -24,6 +25,7 @@ class MenuDemoState extends State<MenuDemo> {
final String _checkedValue4 = 'Four';
List<String> _checkedValues;
@override
void initState() {
super.initState();
_simpleValue = _simpleValue2;
@ -53,6 +55,7 @@ class MenuDemoState extends State<MenuDemo> {
bool isChecked(String value) => _checkedValues.contains(value);
@override
Widget build(BuildContext context) {
return new Scaffold(
key: _scaffoldKey,

View File

@ -11,6 +11,7 @@ class ModalBottomSheetDemo extends StatelessWidget {
textAlign: TextAlign.center
);
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(title: new Text("Modal Bottom Sheet")),

View File

@ -12,6 +12,7 @@ class PageSelectorDemo extends StatelessWidget {
selection.value = selection.values[(selection.index + delta).clamp(0, selection.values.length - 1)];
}
@override
Widget build(BuildContext notUsed) { // Can't find the TabBarSelection from this context.
final List<IconData> icons = <IconData>[
Icons.event,

View File

@ -26,6 +26,7 @@ class PersistentBottomSheetDemo extends StatelessWidget {
});
}
@override
Widget build(BuildContext notUsed) { // Can't find the Scaffold from this context.
return new Scaffold(
appBar: new AppBar(title: new Text("Persistent Bottom Sheet")),

View File

@ -5,11 +5,13 @@
import 'package:flutter/material.dart';
class ProgressIndicatorDemo extends StatefulWidget {
@override
_ProgressIndicatorDemoState createState() => new _ProgressIndicatorDemoState();
}
class _ProgressIndicatorDemoState extends State<ProgressIndicatorDemo> {
@override
void initState() {
super.initState();
controller = new AnimationController(
@ -81,6 +83,7 @@ class _ProgressIndicatorDemoState extends State<ProgressIndicatorDemo> {
);
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(title: new Text('Progress Indicators')),

View File

@ -19,6 +19,7 @@ class _BarGraphic extends StatelessWidget {
final String leftText;
final String rightText;
@override
Widget build(BuildContext context) {
return new Container(
height: height,
@ -85,6 +86,7 @@ class _TechniqueItem extends StatelessWidget {
Navigator.push(context, new MaterialPageRoute<Null>(builder: builder));
}
@override
Widget build(BuildContext context) {
return new Card(
child: new InkWell(
@ -111,6 +113,7 @@ const String _introText =
"specified it is stacked on top of the ToolBar.";
class ScrollingTechniquesDemo extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(title: new Text('Scrolling Techniques')),

View File

@ -5,12 +5,14 @@
import 'package:flutter/material.dart';
class SliderDemo extends StatefulWidget {
@override
_SliderDemoState createState() => new _SliderDemoState();
}
class _SliderDemoState extends State<SliderDemo> {
double _value = 25.0;
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(title: new Text("Sliders")),

View File

@ -56,6 +56,7 @@ class SnackBarDemo extends StatelessWidget {
);
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(

View File

@ -23,6 +23,7 @@ class TabsDemo extends StatelessWidget {
Icons.language: 'LANGUAGE',
};
@override
Widget build(BuildContext context) {
final Color iconColor = Theme.of(context).accentColor;
return new TabBarSelection<IconData>(

View File

@ -26,6 +26,7 @@ const String _explanatoryText =
"by its key.";
class TabsFabDemo extends StatefulWidget {
@override
_TabsFabDemoState createState() => new _TabsFabDemoState();
}
@ -41,6 +42,7 @@ class _TabsFabDemoState extends State<TabsFabDemo> {
];
_Page selectedPage;
@override
void initState() {
super.initState();
selectedPage = pages[0];
@ -88,6 +90,7 @@ class _TabsFabDemoState extends State<TabsFabDemo> {
);
}
@override
Widget build(BuildContext context) {
return new TabBarSelection<_Page>(
values: pages,

View File

@ -7,6 +7,7 @@ import 'package:flutter/material.dart';
class TextFieldDemo extends StatefulWidget {
TextFieldDemo({ Key key }) : super(key: key);
@override
TextFieldDemoState createState() => new TextFieldDemoState();
}
@ -59,6 +60,7 @@ class TextFieldDemoState extends State<TextFieldDemo> {
return null;
}
@override
Widget build(BuildContext context) {
return new Scaffold(
key: _scaffoldKey,

View File

@ -7,6 +7,7 @@ import 'dart:async';
import 'package:flutter/material.dart';
class TimePickerDemo extends StatefulWidget {
@override
_TimePickerDemoState createState() => new _TimePickerDemoState();
}
@ -25,6 +26,7 @@ class _TimePickerDemoState extends State<TimePickerDemo> {
}
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(title: new Text("Time Picker")),

View File

@ -5,6 +5,7 @@
import 'package:flutter/material.dart';
class ToggleControlsDemo extends StatefulWidget {
@override
_ToggleControlsDemoState createState() => new _ToggleControlsDemoState();
}
@ -31,6 +32,7 @@ class _ToggleControlsDemoState extends State<ToggleControlsDemo> {
});
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(title: new Text("Selection Controls")),

View File

@ -10,6 +10,7 @@ const String _introText =
"apps accessible, like screen readers.";
class TooltipDemo extends StatelessWidget {
@override
Widget build(BuildContext context) {
final ThemeData theme = Theme.of(context);
return new Scaffold(

View File

@ -5,6 +5,7 @@
import 'package:flutter/material.dart';
class TwoLevelListDemo extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(title: new Text('Expand/Collapse List Control')),

View File

@ -16,6 +16,7 @@ class TextStyleItem extends StatelessWidget {
final TextStyle style;
final String text;
@override
Widget build(BuildContext context) {
final ThemeData theme = Theme.of(context);
final TextStyle nameStyle = theme.textTheme.body1.copyWith(color: theme.textTheme.caption.color);
@ -38,6 +39,7 @@ class TextStyleItem extends StatelessWidget {
}
class TypographyDemo extends StatelessWidget {
@override
Widget build(BuildContext context) {
final TextTheme textTheme = Theme.of(context).textTheme;
final List<Widget> styleItems = <Widget>[

View File

@ -19,6 +19,8 @@ enum WeatherType {
class WeatherDemo extends StatefulWidget {
WeatherDemo({ Key key }) : super(key: key);
@override
_WeatherDemoState createState() => new _WeatherDemoState();
}
@ -42,6 +44,7 @@ class _WeatherDemoState extends State<WeatherDemo> {
_sprites = new SpriteSheet(_images['packages/flutter_gallery_assets/weathersprites.png'], json);
}
@override
void initState() {
super.initState();
@ -58,6 +61,7 @@ class _WeatherDemoState extends State<WeatherDemo> {
WeatherWorld weatherWorld;
@override
Widget build(BuildContext context) {
if (!assetsLoaded) {
return new Scaffold(
@ -132,6 +136,7 @@ class WeatherButton extends StatelessWidget {
final bool selected;
final VoidCallback onPressed;
@override
Widget build(BuildContext context) {
Color color;
if (selected)
@ -262,6 +267,7 @@ class WeatherWorld extends NodeWithSize {
_snow.active = weatherType == WeatherType.snow;
}
@override
void spriteBoxPerformedLayout() {
_sun.position = spriteBox.visibleArea.topLeft + const Offset(350.0, 180.0);
}
@ -273,6 +279,7 @@ class GradientNode extends NodeWithSize {
Color colorTop;
Color colorBottom;
@override
void paint(Canvas canvas) {
applyTransformForPivot(canvas);
@ -426,6 +433,7 @@ class Ray extends Sprite {
));
}
@override
void update(double dt) {
rotation += dt * _rotationSpeed;
}

View File

@ -11,6 +11,7 @@ class GalleryApp extends StatefulWidget {
static GalleryAppState of(BuildContext context) => context.ancestorStateOfType(const TypeMatcher<GalleryAppState>());
@override
GalleryAppState createState() => new GalleryAppState();
}
@ -23,6 +24,7 @@ class GalleryAppState extends State<GalleryApp> {
});
}
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Flutter Material Gallery',

View File

@ -21,6 +21,7 @@ class GalleryDrawer extends StatelessWidget {
});
}
@override
Widget build(BuildContext context) {
return new Drawer(
child: new Block(

View File

@ -42,10 +42,12 @@ import '../demo/weather_demo.dart';
class GalleryHome extends StatefulWidget {
GalleryHome({ Key key }) : super(key: key);
@override
GalleryHomeState createState() => new GalleryHomeState();
}
class GalleryHomeState extends State<GalleryHome> {
@override
Widget build(BuildContext context) {
return new Scaffold(
appBarHeight: 128.0,

View File

@ -61,6 +61,7 @@ class GallerySection extends StatelessWidget {
));
}
@override
Widget build (BuildContext context) {
final ThemeData theme = new ThemeData(
brightness: Theme.of(context).brightness,

View File

@ -24,6 +24,7 @@ import 'stock_symbol_viewer.dart';
import 'stock_types.dart';
class StocksApp extends StatefulWidget {
@override
StocksAppState createState() => new StocksAppState();
}
@ -45,6 +46,7 @@ class StocksAppState extends State<StocksApp> {
showSemanticsDebugger: false
);
@override
void initState() {
super.initState();
new StockDataFetcher((StockData data) {
@ -99,6 +101,7 @@ class StocksAppState extends State<StocksApp> {
return StockStrings.instance;
}
@override
Widget build(BuildContext context) {
assert(() {
debugPaintSizeEnabled = _configuration.debugShowSizes;

View File

@ -12,6 +12,7 @@ class StockArrowPainter extends CustomPainter {
final Color color;
final double percentChange;
@override
void paint(Canvas canvas, Size size) {
Paint paint = new Paint()..color = color;
paint.strokeWidth = 1.0;
@ -44,6 +45,7 @@ class StockArrowPainter extends CustomPainter {
canvas.drawCircle(new Point(centerX, centerY), r, paint);
}
@override
bool shouldRepaint(StockArrowPainter oldPainter) {
return oldPainter.color != color
|| oldPainter.percentChange != percentChange;
@ -67,6 +69,7 @@ class StockArrow extends StatelessWidget {
return Colors.red[_colorIndexForPercentChange(percentChange)];
}
@override
Widget build(BuildContext context) {
return new Container(
width: 40.0,

View File

@ -19,6 +19,7 @@ enum _StockMenuItem { autorefresh, refresh, speedUp, speedDown }
enum StockHomeTab { market, portfolio }
class _NotImplementedDialog extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new Dialog(
title: new Text('Not Implemented'),
@ -58,6 +59,7 @@ class StockHome extends StatefulWidget {
final StockConfiguration configuration;
final ValueChanged<StockConfiguration> updater;
@override
StockHomeState createState() => new StockHomeState();
}
@ -336,6 +338,7 @@ class StockHomeState extends State<StockHome> {
);
}
@override
Widget build(BuildContext context) {
return new TabBarSelection<StockHomeTab>(
values: <StockHomeTab>[StockHomeTab.market, StockHomeTab.portfolio],
@ -356,6 +359,7 @@ class StockHomeState extends State<StockHome> {
}
class _CreateCompanySheet extends StatefulWidget {
@override
_CreateCompanySheetState createState() => new _CreateCompanySheetState();
}
@ -368,6 +372,7 @@ class _CreateCompanySheetState extends State<_CreateCompanySheet> {
});
}
@override
Widget build(BuildContext context) {
// TODO(ianh): Fill this out.
return new Column(

View File

@ -16,6 +16,7 @@ class StockList extends StatelessWidget {
final StockRowActionCallback onShow;
final StockRowActionCallback onAction;
@override
Widget build(BuildContext context) {
return new ScrollableList(
key: const ValueKey<String>('stock-list'),

View File

@ -11,9 +11,12 @@ enum StockRowPartKind { arrow }
class StockRowPartKey extends Key {
const StockRowPartKey(this.keySalt, this.stock, this.part) : super.constructor();
final Object keySalt;
final Stock stock;
final StockRowPartKind part;
@override
bool operator ==(dynamic other) {
if (identical(this, other))
return true;
@ -24,7 +27,11 @@ class StockRowPartKey extends Key {
&& stock == typedOther.stock
&& part == typedOther.part;
}
@override
int get hashCode => hashValues(keySalt, stock, part);
@override
String toString() => '[$runtimeType ${keySalt.toString().split(".")[1]}:${stock.symbol}:${part.toString().split(".")[1]}]';
}
@ -54,6 +61,7 @@ class StockRow extends StatelessWidget {
return callback == null ? null : () => callback(stock, _arrowKey);
}
@override
Widget build(BuildContext context) {
final String lastSale = "\$${stock.lastSale.toStringAsFixed(2)}";
String changeInPrice = "${stock.percentChange.toStringAsFixed(2)}%";

View File

@ -12,6 +12,7 @@ class StockSettings extends StatefulWidget {
final StockConfiguration configuration;
final ValueChanged<StockConfiguration> updater;
@override
StockSettingsState createState() => new StockSettingsState();
}
@ -245,6 +246,7 @@ class StockSettingsState extends State<StockSettings> {
);
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: buildAppBar(context),

View File

@ -13,6 +13,7 @@ class StockSymbolView extends StatelessWidget {
final Stock stock;
@override
Widget build(BuildContext context) {
String lastSale = "\$${stock.lastSale.toStringAsFixed(2)}";
String changeInPrice = "${stock.percentChange.toStringAsFixed(2)}%";
@ -71,6 +72,7 @@ class StockSymbolPage extends StatelessWidget {
final Stock stock;
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
@ -93,6 +95,7 @@ class StockSymbolBottomSheet extends StatelessWidget {
final Stock stock;
@override
Widget build(BuildContext context) {
return new Container(
padding: new EdgeInsets.all(10.0),

View File

@ -153,6 +153,7 @@ class Expression extends _EquationMember {
return null;
}
@override
_EquationMember operator *(_EquationMember m) {
_Pair<Expression, double> args = _findMulitplierAndMultiplicand(m);
@ -166,6 +167,7 @@ class Expression extends _EquationMember {
return args.first._applyMultiplicand(args.second);
}
@override
_EquationMember operator /(_EquationMember m) {
if (!m.isConstant) {
throw new ParserException(
@ -176,6 +178,7 @@ class Expression extends _EquationMember {
return this._applyMultiplicand(1.0 / m.value);
}
@override
String toString() {
StringBuffer buffer = new StringBuffer();

View File

@ -18,12 +18,15 @@ class Param extends _EquationMember {
dynamic context;
@override
bool get isConstant => false;
@override
double get value => variable.value;
String get name => variable.name;
void set name(String name) { variable.name = name; }
@override
Expression asExpression() => new Expression(<Term>[new Term(variable, 1.0)], 0.0);
}

View File

@ -9,6 +9,7 @@ class ParserException implements Exception {
List<_EquationMember> members;
ParserException(this.message, this.members);
@override
String toString() {
if (message == null) return "Error while parsing constraint or expression";
return "Error: '$message' while trying to parse constraint or expression";

View File

@ -65,6 +65,7 @@ class _Row {
insertRow(row, coefficient);
}
@override
String toString() {
StringBuffer buffer = new StringBuffer();

View File

@ -588,6 +588,7 @@ class Solver {
return entering ?? new _Symbol(_SymbolType.invalid, 0);
}
@override
String toString() {
StringBuffer buffer = new StringBuffer();
String separator = "\n~~~~~~~~~";

View File

@ -12,6 +12,7 @@ class _Symbol {
_Symbol(this.type, this.tick);
@override
String toString() {
String typeString = 'unknown';
switch (type) {

View File

@ -10,13 +10,17 @@ class Term extends _EquationMember {
final Variable variable;
final double coefficient;
@override
bool get isConstant => false;
@override
double get value => coefficient * variable.value;
@override
Expression asExpression() =>
new Expression([new Term(this.variable, this.coefficient)], 0.0);
@override
String toString() {
StringBuffer buffer = new StringBuffer();

View File

@ -62,6 +62,7 @@ abstract class Animation<T> {
/// Whether this animation is stopped at the end.
bool get isCompleted => status == AnimationStatus.completed;
@override
String toString() {
return '$runtimeType(${toStringDetails()})';
}

View File

@ -99,6 +99,7 @@ class AnimationController extends Animation<double>
/// Setting this value also stops the controller if it is currently
/// running; if this happens, it also notifies all the status
/// listeners.
@override
double get value => _value;
double _value;
void set value(double newValue) {
@ -114,6 +115,7 @@ class AnimationController extends Animation<double>
_AnimationDirection _direction;
@override
AnimationStatus get status {
if (!isAnimating && value == upperBound)
return AnimationStatus.completed;
@ -202,6 +204,7 @@ class AnimationController extends Animation<double>
}
/// Stops running this animation.
@override
void dispose() {
stop();
}
@ -224,6 +227,7 @@ class AnimationController extends Animation<double>
_checkStatusChanged();
}
@override
String toStringDetails() {
String paused = isAnimating ? '' : '; paused';
String label = debugLabel == null ? '' : '; for $debugLabel';
@ -245,6 +249,7 @@ class _InterpolationSimulation extends Simulation {
final double _end;
final Curve _curve;
@override
double x(double timeInSeconds) {
assert(timeInSeconds >= 0.0);
double t = (timeInSeconds / _durationInSeconds).clamp(0.0, 1.0);
@ -256,8 +261,10 @@ class _InterpolationSimulation extends Simulation {
return _begin + (_end - _begin) * _curve.transform(t);
}
@override
double dx(double timeInSeconds) => 1.0;
@override
bool isDone(double timeInSeconds) => timeInSeconds > _durationInSeconds;
}
@ -272,13 +279,16 @@ class _RepeatingSimulation extends Simulation {
final double _periodInSeconds;
@override
double x(double timeInSeconds) {
assert(timeInSeconds >= 0.0);
final double t = (timeInSeconds / _periodInSeconds) % 1.0;
return ui.lerpDouble(min, max, t);
}
@override
double dx(double timeInSeconds) => 1.0;
@override
bool isDone(double timeInSeconds) => false;
}

View File

@ -11,11 +11,22 @@ import 'listener_helpers.dart';
class _AlwaysCompleteAnimation extends Animation<double> {
const _AlwaysCompleteAnimation();
@override
void addListener(VoidCallback listener) { }
@override
void removeListener(VoidCallback listener) { }
@override
void addStatusListener(AnimationStatusListener listener) { }
@override
void removeStatusListener(AnimationStatusListener listener) { }
@override
AnimationStatus get status => AnimationStatus.completed;
@override
double get value => 1.0;
}
@ -29,11 +40,22 @@ const Animation<double> kAlwaysCompleteAnimation = const _AlwaysCompleteAnimatio
class _AlwaysDismissedAnimation extends Animation<double> {
const _AlwaysDismissedAnimation();
@override
void addListener(VoidCallback listener) { }
@override
void removeListener(VoidCallback listener) { }
@override
void addStatusListener(AnimationStatusListener listener) { }
@override
void removeStatusListener(AnimationStatusListener listener) { }
@override
AnimationStatus get status => AnimationStatus.dismissed;
@override
double get value => 0.0;
}
@ -48,12 +70,22 @@ const Animation<double> kAlwaysDismissedAnimation = const _AlwaysDismissedAnimat
class AlwaysStoppedAnimation<T> extends Animation<T> {
const AlwaysStoppedAnimation(this.value);
@override
final T value;
@override
void addListener(VoidCallback listener) { }
@override
void removeListener(VoidCallback listener) { }
@override
void addStatusListener(AnimationStatusListener listener) { }
@override
void removeStatusListener(AnimationStatusListener listener) { }
@override
AnimationStatus get status => AnimationStatus.forward;
}
@ -123,6 +155,7 @@ class ProxyAnimation extends Animation<double>
}
}
@override
void didStartListening() {
if (_parent != null) {
_parent.addListener(notifyListeners);
@ -130,6 +163,7 @@ class ProxyAnimation extends Animation<double>
}
}
@override
void didStopListening() {
if (_parent != null) {
_parent.removeListener(notifyListeners);
@ -137,7 +171,10 @@ class ProxyAnimation extends Animation<double>
}
}
@override
AnimationStatus get status => _parent != null ? _parent.status : _status;
@override
double get value => _parent != null ? _parent.value : _value;
}
@ -155,19 +192,24 @@ class ReverseAnimation extends Animation<double>
/// The animation whose value and direction this animation is reversing.
final Animation<double> parent;
@override
void addListener(VoidCallback listener) {
didRegisterListener();
parent.addListener(listener);
}
@override
void removeListener(VoidCallback listener) {
parent.removeListener(listener);
didUnregisterListener();
}
@override
void didStartListening() {
parent.addStatusListener(_statusChangeHandler);
}
@override
void didStopListening() {
parent.removeStatusListener(_statusChangeHandler);
}
@ -176,7 +218,10 @@ class ReverseAnimation extends Animation<double>
notifyStatusListeners(_reverseStatus(status));
}
@override
AnimationStatus get status => _reverseStatus(parent.status);
@override
double get value => 1.0 - parent.value;
AnimationStatus _reverseStatus(AnimationStatus status) {
@ -206,6 +251,7 @@ class CurvedAnimation extends Animation<double> with AnimationWithParentMixin<do
}
/// The animation to which this animation applies a curve.
@override
final Animation<double> parent;
/// The curve to use in the forward direction.
@ -238,6 +284,7 @@ class CurvedAnimation extends Animation<double> with AnimationWithParentMixin<do
}
}
@override
double get value {
final bool useForwardCurve = reverseCurve == null || (_curveDirection ?? parent.status) != AnimationStatus.reverse;
Curve activeCurve = useForwardCurve ? curve : reverseCurve;
@ -306,6 +353,7 @@ class TrainHoppingAnimation extends Animation<double>
assert(_lastStatus != null);
}
@override
AnimationStatus get status => _currentTrain.status;
double _lastValue;
@ -342,10 +390,12 @@ class TrainHoppingAnimation extends Animation<double>
onSwitchedTrain();
}
@override
double get value => _currentTrain.value;
/// Frees all the resources used by this performance.
/// After this is called, this object is no longer usable.
@override
void dispose() {
assert(_currentTrain != null);
_currentTrain.removeStatusListener(_statusChangeHandler);

View File

@ -31,13 +31,18 @@ abstract class Curve {
/// The identity map over the unit interval.
class Linear extends Curve {
const Linear();
@override
double transform(double t) => t;
}
/// A sawtooth curve that repeats a given number of times over the unit interval.
class SawTooth extends Curve {
const SawTooth(this.count);
final int count;
@override
double transform(double t) {
t *= count;
return t - t.truncateToDouble();
@ -57,6 +62,7 @@ class Interval extends Curve {
/// The curve to apply between [start] and [end].
final Curve curve;
@override
double transform(double t) {
assert(start >= 0.0);
assert(start <= 1.0);
@ -79,6 +85,7 @@ class Cubic extends Curve {
final double c;
final double d;
@override
double transform(double t) {
double start = 0.0;
double end = 1.0;
@ -112,13 +119,18 @@ double _bounce(double t) {
/// A curve that is the reversed inversion of its given curve.
class FlippedCurve extends Curve {
FlippedCurve(this.curve);
final Curve curve;
@override
double transform(double t) => 1.0 - curve.transform(1.0 - t);
}
/// An oscillating curve that grows in magnitude.
class BounceInCurve extends Curve {
const BounceInCurve();
@override
double transform(double t) {
return 1.0 - _bounce(1.0 - t);
}
@ -127,6 +139,8 @@ class BounceInCurve extends Curve {
/// An oscillating curve that shrink in magnitude.
class BounceOutCurve extends Curve {
const BounceOutCurve();
@override
double transform(double t) {
return _bounce(t);
}
@ -135,6 +149,8 @@ class BounceOutCurve extends Curve {
/// An oscillating curve that first grows and then shrink in magnitude.
class BounceInOutCurve extends Curve {
const BounceInOutCurve();
@override
double transform(double t) {
if (t < 0.5)
return (1.0 - _bounce(1.0 - t)) * 0.5;
@ -146,7 +162,10 @@ class BounceInOutCurve extends Curve {
/// An oscillating curve that grows in magnitude while overshooting its bounds.
class ElasticInCurve extends Curve {
const ElasticInCurve([this.period = 0.4]);
final double period;
@override
double transform(double t) {
double s = period / 4.0;
t = t - 1.0;
@ -157,7 +176,10 @@ class ElasticInCurve extends Curve {
/// An oscillating curve that shrinks in magnitude while overshooting its bounds.
class ElasticOutCurve extends Curve {
const ElasticOutCurve([this.period = 0.4]);
final double period;
@override
double transform(double t) {
double s = period / 4.0;
return math.pow(2.0, -10 * t) * math.sin((t - s) * (math.PI * 2.0) / period) + 1.0;
@ -167,7 +189,10 @@ class ElasticOutCurve extends Curve {
/// An oscillating curve that grows and then shrinks in magnitude while overshooting its bounds.
class ElasticInOutCurve extends Curve {
const ElasticInOutCurve([this.period = 0.4]);
final double period;
@override
double transform(double t) {
double s = period / 4.0;
t = 2.0 * t - 1.0;

View File

@ -37,6 +37,7 @@ class SpringForce extends Force {
distance: 0.01
);
@override
Simulation release(double position, double velocity) {
double target = velocity < 0.0 ? this.left - tolerance.distance
: this.right + tolerance.distance;

View File

@ -14,18 +14,23 @@ abstract class _ListenerMixin {
/// A mixin that helps listen to another object only when this object has registered listeners.
abstract class AnimationLazyListenerMixin implements _ListenerMixin {
int _listenerCounter = 0;
@override
void didRegisterListener() {
assert(_listenerCounter >= 0);
if (_listenerCounter == 0)
didStartListening();
_listenerCounter += 1;
}
@override
void didUnregisterListener() {
assert(_listenerCounter >= 1);
_listenerCounter -= 1;
if (_listenerCounter == 0)
didStopListening();
}
void didStartListening();
void didStopListening();
bool get isListening => _listenerCounter > 0;
@ -34,7 +39,10 @@ abstract class AnimationLazyListenerMixin implements _ListenerMixin {
/// A mixin that replaces the didRegisterListener/didUnregisterListener contract
/// with a dispose contract.
abstract class AnimationEagerListenerMixin implements _ListenerMixin {
@override
void didRegisterListener() { }
@override
void didUnregisterListener() { }
/// Release any resources used by this object.

View File

@ -32,10 +32,12 @@ class _AnimatedEvaluation<T> extends Animation<T> with AnimationWithParentMixin<
_AnimatedEvaluation(this.parent, this._evaluatable);
/// The animation from which this value is derived.
@override
final Animation<double> parent;
final Animatable<T> _evaluatable;
@override
T get value => _evaluatable.evaluate(parent);
}
@ -45,6 +47,7 @@ class _ChainedEvaluation<T> extends Animatable<T> {
final Animatable<double> _parent;
final Animatable<T> _evaluatable;
@override
T evaluate(Animation<double> animation) {
double value = _parent.evaluate(animation);
return _evaluatable.evaluate(new AlwaysStoppedAnimation<double>(value));
@ -65,6 +68,7 @@ class Tween<T extends dynamic> extends Animatable<T> {
T lerp(double t) => begin + (end - begin) * t;
/// Returns the interpolated value for the current value of the given animation.
@override
T evaluate(Animation<double> animation) {
if (end == null)
return begin;
@ -76,6 +80,7 @@ class Tween<T extends dynamic> extends Animatable<T> {
return lerp(t);
}
@override
String toString() => '$runtimeType($begin \u2192 $end)';
}
@ -86,6 +91,7 @@ class Tween<T extends dynamic> extends Animatable<T> {
class ColorTween extends Tween<Color> {
ColorTween({ Color begin, Color end }) : super(begin: begin, end: end);
@override
Color lerp(double t) => Color.lerp(begin, end, t);
}
@ -96,6 +102,7 @@ class ColorTween extends Tween<Color> {
class SizeTween extends Tween<Size> {
SizeTween({ Size begin, Size end }) : super(begin: begin, end: end);
@override
Size lerp(double t) => Size.lerp(begin, end, t);
}
@ -106,6 +113,7 @@ class SizeTween extends Tween<Size> {
class RectTween extends Tween<Rect> {
RectTween({ Rect begin, Rect end }) : super(begin: begin, end: end);
@override
Rect lerp(double t) => Rect.lerp(begin, end, t);
}
@ -123,6 +131,7 @@ class IntTween extends Tween<int> {
// The inherited lerp() function doesn't work with ints because it multiplies
// the begin and end types by a double, and int * double returns a double.
@override
int lerp(double t) => (begin + (end - begin) * t).round();
}
@ -140,6 +149,7 @@ class StepTween extends Tween<int> {
// The inherited lerp() function doesn't work with ints because it multiplies
// the begin and end types by a double, and int * double returns a double.
@override
int lerp(double t) => (begin + (end - begin) * t).floor();
}
@ -154,6 +164,7 @@ class CurveTween extends Animatable<double> {
/// The curve to use when transforming the value of the animation.
Curve curve;
@override
double evaluate(Animation<double> animation) {
double t = animation.value;
if (t == 0.0 || t == 1.0) {

View File

@ -21,6 +21,7 @@ typedef void GesturerExceptionHandler(PointerEvent event, HitTestTarget target,
/// A binding for the gesture subsystem.
abstract class Gesturer extends BindingBase implements HitTestTarget, HitTestable {
@override
void initInstances() {
super.initInstances();
_instance = this;
@ -76,6 +77,7 @@ abstract class Gesturer extends BindingBase implements HitTestTarget, HitTestabl
}
/// Determine which [HitTestTarget] objects are located at a given position.
@override
void hitTest(HitTestResult result, Point position) {
result.add(new HitTestEntry(this));
}
@ -113,6 +115,7 @@ abstract class Gesturer extends BindingBase implements HitTestTarget, HitTestabl
}
}
@override
void handleEvent(PointerEvent event, HitTestEntry entry) {
pointerRouter.route(event);
if (event is PointerDownEvent) {

View File

@ -46,6 +46,7 @@ abstract class _DragGestureRecognizer<T extends dynamic> extends OneSequenceGest
Map<int, VelocityTracker> _velocityTrackers = new Map<int, VelocityTracker>();
@override
void addPointer(PointerEvent event) {
startTrackingPointer(event.pointer);
_velocityTrackers[event.pointer] = new VelocityTracker();
@ -56,6 +57,7 @@ abstract class _DragGestureRecognizer<T extends dynamic> extends OneSequenceGest
}
}
@override
void handleEvent(PointerEvent event) {
assert(_state != DragState.ready);
if (event is PointerMoveEvent) {
@ -75,6 +77,7 @@ abstract class _DragGestureRecognizer<T extends dynamic> extends OneSequenceGest
stopTrackingIfPointerNoLongerDown(event);
}
@override
void acceptGesture(int pointer) {
if (_state != DragState.accepted) {
_state = DragState.accepted;
@ -87,6 +90,7 @@ abstract class _DragGestureRecognizer<T extends dynamic> extends OneSequenceGest
}
}
@override
void didStopTrackingLastPointer(int pointer) {
if (_state == DragState.possible) {
resolve(GestureDisposition.rejected);
@ -108,6 +112,7 @@ abstract class _DragGestureRecognizer<T extends dynamic> extends OneSequenceGest
_velocityTrackers.clear();
}
@override
void dispose() {
_velocityTrackers.clear();
super.dispose();
@ -115,27 +120,45 @@ abstract class _DragGestureRecognizer<T extends dynamic> extends OneSequenceGest
}
class VerticalDragGestureRecognizer extends _DragGestureRecognizer<double> {
@override
double get _initialPendingDragDelta => 0.0;
@override
double _getDragDelta(PointerEvent event) => event.delta.dy;
@override
bool get _hasSufficientPendingDragDeltaToAccept => _pendingDragDelta.abs() > kTouchSlop;
@override
String toStringShort() => 'vertical drag';
}
class HorizontalDragGestureRecognizer extends _DragGestureRecognizer<double> {
@override
double get _initialPendingDragDelta => 0.0;
@override
double _getDragDelta(PointerEvent event) => event.delta.dx;
@override
bool get _hasSufficientPendingDragDeltaToAccept => _pendingDragDelta.abs() > kTouchSlop;
@override
String toStringShort() => 'horizontal drag';
}
class PanGestureRecognizer extends _DragGestureRecognizer<Offset> {
@override
Offset get _initialPendingDragDelta => Offset.zero;
@override
Offset _getDragDelta(PointerEvent event) => event.delta;
@override
bool get _hasSufficientPendingDragDeltaToAccept {
return _pendingDragDelta.distance > kPanSlop;
}
@override
String toStringShort() => 'pan';
}

View File

@ -171,6 +171,7 @@ abstract class PointerEvent {
/// the stylus is flat on that surface).
final double tilt;
@override
String toString() => '$runtimeType($position)';
String toStringFull() {

View File

@ -25,6 +25,7 @@ class HitTestEntry {
/// The [HitTestTarget] encountered during the hit test.
final HitTestTarget target;
@override
String toString() => '$target';
}
@ -49,5 +50,6 @@ class HitTestResult {
path.add(entry);
}
@override
String toString() => 'HitTestResult(${path.isEmpty ? "<empty path>" : path.join(", ")})';
}

View File

@ -15,16 +15,19 @@ class LongPressGestureRecognizer extends PrimaryPointerGestureRecognizer {
GestureLongPressCallback onLongPress;
@override
void didExceedDeadline() {
resolve(GestureDisposition.accepted);
if (onLongPress != null)
onLongPress();
}
@override
void handlePrimaryPointer(PointerEvent event) {
if (event is PointerUpEvent)
resolve(GestureDisposition.rejected);
}
@override
String toStringShort() => 'long press';
}

View File

@ -36,6 +36,7 @@ class _Vector {
double norm() => math.sqrt(this * this);
@override
String toString() {
String result = "";
for (int i = 0; i < _length; i++) {
@ -68,6 +69,7 @@ class _Matrix {
_columns
);
@override
String toString() {
String result = "";
for (int i = 0; i < _rows; i++) {

View File

@ -125,6 +125,7 @@ abstract class MultiDragGestureRecognizer<T extends MultiDragPointerState> exten
Map<int, T> _pointers = <int, T>{};
@override
void addPointer(PointerDownEvent event) {
assert(_pointers != null);
assert(event.pointer != null);
@ -163,6 +164,7 @@ abstract class MultiDragGestureRecognizer<T extends MultiDragPointerState> exten
}
}
@override
void acceptGesture(int pointer) {
assert(_pointers != null);
T state = _pointers[pointer];
@ -186,6 +188,7 @@ abstract class MultiDragGestureRecognizer<T extends MultiDragPointerState> exten
return drag;
}
@override
void rejectGesture(int pointer) {
assert(_pointers != null);
if (_pointers.containsKey(pointer)) {
@ -204,6 +207,7 @@ abstract class MultiDragGestureRecognizer<T extends MultiDragPointerState> exten
_pointers.remove(pointer);
}
@override
void dispose() {
for (int pointer in _pointers.keys)
_removeState(pointer);
@ -217,22 +221,26 @@ abstract class MultiDragGestureRecognizer<T extends MultiDragPointerState> exten
class _ImmediatePointerState extends MultiDragPointerState {
_ImmediatePointerState(Point initialPosition) : super(initialPosition);
@override
void checkForResolutionAfterMove() {
assert(pendingDelta != null);
if (pendingDelta.distance > kTouchSlop)
resolve(GestureDisposition.accepted);
}
@override
void accepted(GestureMultiDragStartCallback starter) {
starter(initialPosition);
}
}
class ImmediateMultiDragGestureRecognizer extends MultiDragGestureRecognizer<_ImmediatePointerState> {
@override
_ImmediatePointerState createNewPointerState(PointerDownEvent event) {
return new _ImmediatePointerState(event.position);
}
@override
String toStringShort() => 'multidrag';
}
@ -240,22 +248,26 @@ class ImmediateMultiDragGestureRecognizer extends MultiDragGestureRecognizer<_Im
class _HorizontalPointerState extends MultiDragPointerState {
_HorizontalPointerState(Point initialPosition) : super(initialPosition);
@override
void checkForResolutionAfterMove() {
assert(pendingDelta != null);
if (pendingDelta.dx.abs() > kTouchSlop)
resolve(GestureDisposition.accepted);
}
@override
void accepted(GestureMultiDragStartCallback starter) {
starter(initialPosition);
}
}
class HorizontalMultiDragGestureRecognizer extends MultiDragGestureRecognizer<_HorizontalPointerState> {
@override
_HorizontalPointerState createNewPointerState(PointerDownEvent event) {
return new _HorizontalPointerState(event.position);
}
@override
String toStringShort() => 'horizontal multidrag';
}
@ -263,22 +275,26 @@ class HorizontalMultiDragGestureRecognizer extends MultiDragGestureRecognizer<_H
class _VerticalPointerState extends MultiDragPointerState {
_VerticalPointerState(Point initialPosition) : super(initialPosition);
@override
void checkForResolutionAfterMove() {
assert(pendingDelta != null);
if (pendingDelta.dy.abs() > kTouchSlop)
resolve(GestureDisposition.accepted);
}
@override
void accepted(GestureMultiDragStartCallback starter) {
starter(initialPosition);
}
}
class VerticalMultiDragGestureRecognizer extends MultiDragGestureRecognizer<_VerticalPointerState> {
@override
_VerticalPointerState createNewPointerState(PointerDownEvent event) {
return new _VerticalPointerState(event.position);
}
@override
String toStringShort() => 'vertical multidrag';
}
@ -306,6 +322,7 @@ class _DelayedPointerState extends MultiDragPointerState {
assert(_starter == null);
}
@override
void accepted(GestureMultiDragStartCallback starter) {
assert(_starter == null);
if (_timer == null)
@ -314,6 +331,7 @@ class _DelayedPointerState extends MultiDragPointerState {
_starter = starter;
}
@override
void checkForResolutionAfterMove() {
assert(_timer != null);
assert(pendingDelta != null);
@ -321,6 +339,7 @@ class _DelayedPointerState extends MultiDragPointerState {
resolve(GestureDisposition.rejected);
}
@override
void dispose() {
_timer?.cancel();
_timer = null;
@ -342,9 +361,11 @@ class DelayedMultiDragGestureRecognizer extends MultiDragGestureRecognizer<_Dela
_delay = value;
}
@override
_DelayedPointerState createNewPointerState(PointerDownEvent event) {
return new _DelayedPointerState(event.position, _delay);
}
@override
String toStringShort() => 'long multidrag';
}

View File

@ -82,6 +82,7 @@ class DoubleTapGestureRecognizer extends GestureRecognizer {
_TapTracker _firstTap;
final Map<int, _TapTracker> _trackers = new Map<int, _TapTracker>();
@override
void addPointer(PointerEvent event) {
// Ignore out-of-bounds second taps.
if (_firstTap != null &&
@ -112,8 +113,10 @@ class DoubleTapGestureRecognizer extends GestureRecognizer {
}
}
@override
void acceptGesture(int pointer) { }
@override
void rejectGesture(int pointer) {
_TapTracker tracker = _trackers[pointer];
// If tracker isn't in the list, check if this is the first tap tracker
@ -138,6 +141,7 @@ class DoubleTapGestureRecognizer extends GestureRecognizer {
_reset();
}
@override
void dispose() {
_reset();
}
@ -198,6 +202,7 @@ class DoubleTapGestureRecognizer extends GestureRecognizer {
}
}
@override
String toStringShort() => 'double tap';
}
@ -255,6 +260,7 @@ class _TapGesture extends _TapTracker {
}
}
@override
void stopTrackingPointer(PointerRoute route) {
_timer?.cancel();
_timer = null;
@ -305,6 +311,7 @@ class MultiTapGestureRecognizer extends GestureRecognizer {
final Map<int, _TapGesture> _gestureMap = new Map<int, _TapGesture>();
@override
void addPointer(PointerEvent event) {
assert(!_gestureMap.containsKey(event.pointer));
_gestureMap[event.pointer] = new _TapGesture(
@ -316,12 +323,14 @@ class MultiTapGestureRecognizer extends GestureRecognizer {
onTapDown(event.position, event.pointer);
}
@override
void acceptGesture(int pointer) {
assert(_gestureMap.containsKey(pointer));
_gestureMap[pointer]?.accept();
assert(!_gestureMap.containsKey(pointer));
}
@override
void rejectGesture(int pointer) {
assert(_gestureMap.containsKey(pointer));
_gestureMap[pointer]?.reject();
@ -347,6 +356,7 @@ class MultiTapGestureRecognizer extends GestureRecognizer {
onLongTapDown(lastPosition, pointer);
}
@override
void dispose() {
List<_TapGesture> localGestures = new List<_TapGesture>.from(_gestureMap.values);
for (_TapGesture gesture in localGestures)
@ -355,5 +365,6 @@ class MultiTapGestureRecognizer extends GestureRecognizer {
assert(_gestureMap.isEmpty);
}
@override
String toStringShort() => 'multitap';
}

View File

@ -61,8 +61,13 @@ abstract class OneSequenceGestureRecognizer extends GestureRecognizer {
final Set<int> _trackedPointers = new HashSet<int>();
void handleEvent(PointerEvent event);
@override
void acceptGesture(int pointer) { }
@override
void rejectGesture(int pointer) { }
void didStopTrackingLastPointer(int pointer);
void resolve(GestureDisposition disposition) {
@ -72,6 +77,7 @@ abstract class OneSequenceGestureRecognizer extends GestureRecognizer {
entry.resolve(disposition);
}
@override
void dispose() {
resolve(GestureDisposition.rejected);
for (int pointer in _trackedPointers)
@ -116,6 +122,7 @@ abstract class PrimaryPointerGestureRecognizer extends OneSequenceGestureRecogni
Point initialPosition;
Timer _timer;
@override
void addPointer(PointerDownEvent event) {
startTrackingPointer(event.pointer);
if (state == GestureRecognizerState.ready) {
@ -127,6 +134,7 @@ abstract class PrimaryPointerGestureRecognizer extends OneSequenceGestureRecogni
}
}
@override
void handleEvent(PointerEvent event) {
assert(state != GestureRecognizerState.ready);
if (state == GestureRecognizerState.possible && event.pointer == primaryPointer) {
@ -151,6 +159,7 @@ abstract class PrimaryPointerGestureRecognizer extends OneSequenceGestureRecogni
assert(deadline == null);
}
@override
void rejectGesture(int pointer) {
if (pointer == primaryPointer) {
_stopTimer();
@ -158,11 +167,13 @@ abstract class PrimaryPointerGestureRecognizer extends OneSequenceGestureRecogni
}
}
@override
void didStopTrackingLastPointer(int pointer) {
_stopTimer();
state = GestureRecognizerState.ready;
}
@override
void dispose() {
_stopTimer();
super.dispose();

View File

@ -31,6 +31,7 @@ class ScaleGestureRecognizer extends OneSequenceGestureRecognizer {
double get _scaleFactor => _initialSpan > 0.0 ? _currentSpan / _initialSpan : 1.0;
@override
void addPointer(PointerEvent event) {
startTrackingPointer(event.pointer);
if (_state == ScaleState.ready) {
@ -41,6 +42,7 @@ class ScaleGestureRecognizer extends OneSequenceGestureRecognizer {
}
}
@override
void handleEvent(PointerEvent event) {
assert(_state != ScaleState.ready);
bool configChanged = false;
@ -101,6 +103,7 @@ class ScaleGestureRecognizer extends OneSequenceGestureRecognizer {
onUpdate(_scaleFactor, focalPoint);
}
@override
void acceptGesture(int pointer) {
if (_state != ScaleState.accepted) {
_state = ScaleState.accepted;
@ -108,6 +111,7 @@ class ScaleGestureRecognizer extends OneSequenceGestureRecognizer {
}
}
@override
void didStopTrackingLastPointer(int pointer) {
switch(_state) {
case ScaleState.possible:
@ -125,5 +129,6 @@ class ScaleGestureRecognizer extends OneSequenceGestureRecognizer {
_state = ScaleState.ready;
}
@override
String toStringShort() => 'scale';
}

View File

@ -27,6 +27,7 @@ class TapGestureRecognizer extends PrimaryPointerGestureRecognizer {
bool _wonArena = false;
Point _finalPosition;
@override
void handlePrimaryPointer(PointerEvent event) {
if (event is PointerUpEvent) {
_finalPosition = event.position;
@ -34,6 +35,7 @@ class TapGestureRecognizer extends PrimaryPointerGestureRecognizer {
}
}
@override
void resolve(GestureDisposition disposition) {
if (_wonArena && disposition == GestureDisposition.rejected) {
if (onTapCancel != null)
@ -43,10 +45,12 @@ class TapGestureRecognizer extends PrimaryPointerGestureRecognizer {
super.resolve(disposition);
}
@override
void didExceedDeadline() {
_checkDown();
}
@override
void acceptGesture(int pointer) {
super.acceptGesture(pointer);
if (pointer == primaryPointer) {
@ -56,6 +60,7 @@ class TapGestureRecognizer extends PrimaryPointerGestureRecognizer {
}
}
@override
void rejectGesture(int pointer) {
super.rejectGesture(pointer);
if (pointer == primaryPointer) {
@ -91,5 +96,6 @@ class TapGestureRecognizer extends PrimaryPointerGestureRecognizer {
_finalPosition = null;
}
@override
String toStringShort() => 'tap';
}

View File

@ -17,6 +17,7 @@ class _Estimate {
final int degree;
final double confidence;
@override
String toString() {
return 'Estimate(xCoefficients: $xCoefficients, '
'yCoefficients: $yCoefficients, '
@ -73,6 +74,7 @@ class _LeastSquaresVelocityTrackerStrategy extends _VelocityTrackerStrategy {
_WeightChooser _chooseWeight;
int _index;
@override
void addMovement(Duration timeStamp, Point position) {
_index += 1;
if (_index == kHistorySize)
@ -82,6 +84,7 @@ class _LeastSquaresVelocityTrackerStrategy extends _VelocityTrackerStrategy {
movement.position = position;
}
@override
_Estimate getEstimate() {
// Iterate over movement samples in reverse time order and collect samples.
List<double> x = new List<double>();
@ -145,6 +148,7 @@ class _LeastSquaresVelocityTrackerStrategy extends _VelocityTrackerStrategy {
);
}
@override
void clear() {
_index = -1;
}
@ -228,6 +232,7 @@ class Velocity {
pixelsPerSecond: pixelsPerSecond + other.pixelsPerSecond);
}
@override
bool operator ==(dynamic other) {
if (other is! Velocity)
return false;
@ -235,8 +240,10 @@ class Velocity {
return pixelsPerSecond == typedOther.pixelsPerSecond;
}
@override
int get hashCode => pixelsPerSecond.hashCode;
@override
String toString() => 'Velocity(${pixelsPerSecond.dx.toStringAsFixed(1)}, ${pixelsPerSecond.dy.toStringAsFixed(1)})';
}

View File

@ -71,14 +71,17 @@ class MaterialApp extends WidgetsApp {
/// Only available in checked mode.
final bool debugShowMaterialGrid;
@override
_MaterialAppState createState() => new _MaterialAppState();
}
class _MaterialAppState extends WidgetsAppState<MaterialApp> {
final HeroController _heroController = new HeroController();
@override
NavigatorObserver get navigatorObserver => _heroController;
@override
Widget build(BuildContext context) {
ThemeData theme = config.theme ?? new ThemeData.fallback();
Widget result = new AnimatedTheme(

View File

@ -67,6 +67,7 @@ class AppBar extends StatelessWidget {
);
}
@override
Widget build(BuildContext context) {
Color color = backgroundColor;
IconThemeData iconThemeData;

View File

@ -32,6 +32,7 @@ class BottomSheet extends StatefulWidget {
final VoidCallback onClosing;
final WidgetBuilder builder;
@override
_BottomSheetState createState() => new _BottomSheetState();
static AnimationController createAnimationController() {
@ -75,6 +76,7 @@ class _BottomSheetState extends State<BottomSheet> {
}
}
@override
Widget build(BuildContext context) {
return new GestureDetector(
onVerticalDragUpdate: _handleDragUpdate,
@ -99,6 +101,7 @@ class _ModalBottomSheetLayout extends SingleChildLayoutDelegate {
final double progress;
@override
BoxConstraints getConstraintsForChild(BoxConstraints constraints) {
return new BoxConstraints(
minWidth: constraints.maxWidth,
@ -108,10 +111,12 @@ class _ModalBottomSheetLayout extends SingleChildLayoutDelegate {
);
}
@override
Offset getPositionForChild(Size size, Size childSize) {
return new Offset(0.0, size.height - childSize.height * progress);
}
@override
bool shouldRelayout(_ModalBottomSheetLayout oldDelegate) {
return progress != oldDelegate.progress;
}
@ -122,10 +127,12 @@ class _ModalBottomSheet<T> extends StatefulWidget {
final _ModalBottomSheetRoute<T> route;
@override
_ModalBottomSheetState<T> createState() => new _ModalBottomSheetState<T>();
}
class _ModalBottomSheetState<T> extends State<_ModalBottomSheet<T>> {
@override
Widget build(BuildContext context) {
return new GestureDetector(
onTap: () => Navigator.pop(context),
@ -156,14 +163,21 @@ class _ModalBottomSheetRoute<T> extends PopupRoute<T> {
final WidgetBuilder builder;
@override
Duration get transitionDuration => _kBottomSheetDuration;
@override
bool get barrierDismissable => true;
@override
Color get barrierColor => Colors.black54;
@override
AnimationController createAnimationController() {
return BottomSheet.createAnimationController();
}
@override
Widget buildPage(BuildContext context, Animation<double> animation, Animation<double> forwardAnimation) {
return new _ModalBottomSheet<T>(route: this);
}

View File

@ -31,6 +31,7 @@ class ButtonTheme extends InheritedWidget {
return result?.color ?? ButtonColor.normal;
}
@override
bool updateShouldNotify(ButtonTheme old) => color != old.color;
}
@ -63,6 +64,7 @@ abstract class MaterialButton extends StatefulWidget {
/// enable a button, set its [onPressed] property to a non-null value.
bool get enabled => onPressed != null;
@override
void debugFillDescription(List<String> description) {
super.debugFillDescription(description);
if (!enabled)
@ -110,6 +112,7 @@ abstract class MaterialButtonState<T extends MaterialButton> extends State<T> {
});
}
@override
Widget build(BuildContext context) {
assert(debugCheckHasMaterial(context));
Widget contents = new InkWell(

View File

@ -17,6 +17,7 @@ class Card extends StatelessWidget {
final Widget child;
final Color color;
@override
Widget build(BuildContext context) {
return new Container(
margin: _kCardMargins,

View File

@ -37,6 +37,7 @@ class Checkbox extends StatelessWidget {
final Color activeColor;
final ValueChanged<bool> onChanged;
@override
Widget build(BuildContext context) {
assert(debugCheckHasMaterial(context));
ThemeData themeData = Theme.of(context);
@ -67,6 +68,7 @@ class _CheckboxRenderObjectWidget extends LeafRenderObjectWidget {
final Color inactiveColor;
final ValueChanged<bool> onChanged;
@override
_RenderCheckbox createRenderObject(BuildContext context) => new _RenderCheckbox(
value: value,
activeColor: activeColor,
@ -74,6 +76,7 @@ class _CheckboxRenderObjectWidget extends LeafRenderObjectWidget {
onChanged: onChanged
);
@override
void updateRenderObject(BuildContext context, _RenderCheckbox renderObject) {
renderObject
..value = value
@ -103,6 +106,7 @@ class _RenderCheckbox extends RenderToggleable {
size: const Size(2 * kRadialReactionRadius, 2 * kRadialReactionRadius)
);
@override
void paint(PaintingContext context, Offset offset) {
final Canvas canvas = context.canvas;
final double offsetX = _kOffset + offset.dx;

View File

@ -33,6 +33,7 @@ class Chip extends StatelessWidget {
final Widget label;
final VoidCallback onDeleted;
@override
Widget build(BuildContext context) {
assert(debugCheckHasMaterial(context));
final bool deletable = onDeleted != null;

View File

@ -19,6 +19,7 @@ class CircleAvatar extends StatelessWidget {
final Color backgroundColor;
final double radius;
@override
Widget build(BuildContext context) {
final ThemeData theme = Theme.of(context);
final Color color = backgroundColor ?? theme.primaryColor;

View File

@ -34,6 +34,7 @@ class DatePicker extends StatefulWidget {
final DateTime firstDate;
final DateTime lastDate;
@override
_DatePickerState createState() => new _DatePickerState();
}
@ -64,6 +65,7 @@ class _DatePickerState extends State<DatePicker> {
static const double _calendarHeight = 210.0;
@override
Widget build(BuildContext context) {
Widget header = new _DatePickerHeader(
selectedDate: config.selectedDate,
@ -120,6 +122,7 @@ class _DatePickerHeader extends StatelessWidget {
onModeChanged(value);
}
@override
Widget build(BuildContext context) {
ThemeData theme = Theme.of(context);
TextTheme headerTheme = theme.primaryTextTheme;
@ -181,6 +184,7 @@ class DayPicker extends StatelessWidget {
final ValueChanged<DateTime> onChanged;
final DateTime displayedMonth;
@override
Widget build(BuildContext context) {
ThemeData themeData = Theme.of(context);
TextStyle headerStyle = themeData.textTheme.caption.copyWith(fontWeight: FontWeight.w700);
@ -289,10 +293,12 @@ class MonthPicker extends StatefulWidget {
final DateTime lastDate;
final double itemExtent;
@override
_MonthPickerState createState() => new _MonthPickerState();
}
class _MonthPickerState extends State<MonthPicker> {
@override
void initState() {
super.initState();
_updateCurrentDate();
@ -335,6 +341,7 @@ class _MonthPickerState extends State<MonthPicker> {
return result;
}
@override
Widget build(BuildContext context) {
return new ScrollableLazyList(
itemExtent: config.itemExtent,
@ -343,6 +350,7 @@ class _MonthPickerState extends State<MonthPicker> {
);
}
@override
void dispose() {
if (_timer != null)
_timer.cancel();
@ -369,6 +377,7 @@ class YearPicker extends StatefulWidget {
final DateTime firstDate;
final DateTime lastDate;
@override
_YearPickerState createState() => new _YearPickerState();
}
@ -403,6 +412,7 @@ class _YearPickerState extends State<YearPicker> {
return items;
}
@override
Widget build(BuildContext context) {
assert(debugCheckHasMaterial(context));
return new ScrollableLazyList(

View File

@ -22,10 +22,12 @@ class _DatePickerDialog extends StatefulWidget {
final DateTime firstDate;
final DateTime lastDate;
@override
_DatePickerDialogState createState() => new _DatePickerDialogState();
}
class _DatePickerDialogState extends State<_DatePickerDialog> {
@override
void initState() {
super.initState();
_selectedDate = config.initialDate;
@ -47,6 +49,7 @@ class _DatePickerDialogState extends State<_DatePickerDialog> {
Navigator.pop(context, _selectedDate);
}
@override
Widget build(BuildContext context) {
return new Dialog(
content: new DatePicker(

View File

@ -54,6 +54,7 @@ class Dialog extends StatelessWidget {
}
}
@override
Widget build(BuildContext context) {
List<Widget> dialogBody = new List<Widget>();
@ -123,14 +124,21 @@ class _DialogRoute<T> extends PopupRoute<T> {
final Widget child;
@override
Duration get transitionDuration => const Duration(milliseconds: 150);
@override
bool get barrierDismissable => true;
@override
Color get barrierColor => Colors.black54;
@override
Widget buildPage(BuildContext context, Animation<double> animation, Animation<double> forwardAnimation) {
return child;
}
@override
Widget buildTransitions(BuildContext context, Animation<double> animation, Animation<double> forwardAnimation, Widget child) {
return new FadeTransition(
opacity: new CurvedAnimation(

View File

@ -15,6 +15,7 @@ class Divider extends StatelessWidget {
final double indent;
final Color color;
@override
Widget build(BuildContext context) {
final double bottom = (height ~/ 2.0).toDouble();
return new Container(

View File

@ -36,6 +36,7 @@ class Drawer extends StatelessWidget {
final int elevation;
final Widget child;
@override
Widget build(BuildContext context) {
return new ConstrainedBox(
constraints: const BoxConstraints.expand(width: _kWidth),
@ -55,10 +56,12 @@ class DrawerController extends StatefulWidget {
final Widget child;
@override
DrawerControllerState createState() => new DrawerControllerState();
}
class DrawerControllerState extends State<DrawerController> {
@override
void initState() {
super.initState();
_controller = new AnimationController(duration: _kBaseSettleDuration)
@ -66,6 +69,7 @@ class DrawerControllerState extends State<DrawerController> {
..addStatusListener(_animationStatusChanged);
}
@override
void dispose() {
_controller
..removeListener(_animationChanged)
@ -158,6 +162,7 @@ class DrawerControllerState extends State<DrawerController> {
final ColorTween _color = new ColorTween(begin: Colors.transparent, end: Colors.black54);
final GlobalKey _gestureDetectorKey = new GlobalKey();
@override
Widget build(BuildContext context) {
if (_controller.status == AnimationStatus.dismissed) {
return new Align(

Some files were not shown because too many files have changed in this diff Show More