diff --git a/examples/widgets/container.dart b/examples/widgets/container.dart index 51d471fc31..02537dc0e0 100644 --- a/examples/widgets/container.dart +++ b/examples/widgets/container.dart @@ -2,17 +2,17 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import 'package:sky/widgets.dart'; +import 'package:sky/src/fn3.dart'; -class ContainerApp extends App { - Widget build() { +class ContainerApp extends StatelessComponent { + Widget build(BuildContext context) { return new Column([ new Container( padding: new EdgeDims.all(10.0), margin: new EdgeDims.all(10.0), decoration: new BoxDecoration(backgroundColor: const Color(0xFFCCCCCC)), child: new NetworkImage( - src: "https://www.dartlang.org/logos/dart-logo.png", + src: "https://raw.githubusercontent.com/dart-lang/logos/master/logos_and_wordmarks/dart-logo.png", width: 300.0, height: 300.0 ) diff --git a/examples/widgets/date_picker.dart b/examples/widgets/date_picker.dart index f49c200b29..75dddb4850 100644 --- a/examples/widgets/date_picker.dart +++ b/examples/widgets/date_picker.dart @@ -2,27 +2,30 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import 'package:sky/widgets.dart'; +import 'package:sky/src/fn3.dart'; import 'package:sky/material.dart'; void main() => runApp(new DatePickerDemo()); -class DatePickerDemo extends App { +class DatePickerDemo extends StatefulComponent { + DatePickerDemoState createState() => new DatePickerDemoState(this); +} - DateTime _dateTime; - - void initState() { +class DatePickerDemoState extends ComponentState { + DatePickerDemoState(DatePickerDemo config) : super(config) { DateTime now = new DateTime.now(); _dateTime = new DateTime(now.year, now.month, now.day); } + DateTime _dateTime; + void _handleDateChanged(DateTime dateTime) { setState(() { _dateTime = dateTime; }); } - Widget build() { + Widget build(BuildContext context) { return new Theme( data: new ThemeData( brightness: ThemeBrightness.light, diff --git a/packages/flutter/lib/src/fn3/button_state.dart b/packages/flutter/lib/src/fn3/button_state.dart index b35517832c..5612c85209 100644 --- a/packages/flutter/lib/src/fn3/button_state.dart +++ b/packages/flutter/lib/src/fn3/button_state.dart @@ -8,7 +8,7 @@ import 'package:sky/src/fn3/framework.dart'; abstract class ButtonState extends ComponentState { ButtonState(T config) : super(config); - bool highlight; + bool highlight = false; void _handlePointerDown(_) { setState(() { diff --git a/packages/flutter/lib/src/fn3/material_button.dart b/packages/flutter/lib/src/fn3/material_button.dart index 84ddbcd5ac..fb299b33ab 100644 --- a/packages/flutter/lib/src/fn3/material_button.dart +++ b/packages/flutter/lib/src/fn3/material_button.dart @@ -11,12 +11,14 @@ import 'package:sky/src/fn3/material.dart'; // Rather than using this class directly, please use FlatButton or RaisedButton. abstract class MaterialButton extends StatefulComponent { - const MaterialButton({ + MaterialButton({ Key key, this.child, this.enabled: true, this.onPressed - }) : super(key: key); + }) : super(key: key) { + assert(enabled != null); + } final Widget child; final bool enabled; diff --git a/packages/flutter/lib/src/fn3/raised_button.dart b/packages/flutter/lib/src/fn3/raised_button.dart index a4ea191739..b134c62d3a 100644 --- a/packages/flutter/lib/src/fn3/raised_button.dart +++ b/packages/flutter/lib/src/fn3/raised_button.dart @@ -17,7 +17,9 @@ class RaisedButton extends MaterialButton { }) : super(key: key, child: child, enabled: enabled, - onPressed: onPressed); + onPressed: onPressed) { + assert(enabled != null); + } RaisedButtonState createState() => new RaisedButtonState(this); } diff --git a/packages/flutter/lib/src/fn3/scaffold.dart b/packages/flutter/lib/src/fn3/scaffold.dart index 9ae0c79eac..6d0935e25a 100644 --- a/packages/flutter/lib/src/fn3/scaffold.dart +++ b/packages/flutter/lib/src/fn3/scaffold.dart @@ -218,8 +218,9 @@ class ScaffoldElement extends RenderObjectElement { super.mount(parent, newSlot); _children = new Map(); for (ScaffoldSlots slot in ScaffoldSlots.values) { - _children[slot] = widget._children[slot].createElement() - ..mount(this, slot); + Element newChild = widget._children[slot]?.createElement(); + _children[slot] = newChild; + newChild?.mount(this, slot); } } diff --git a/packages/flutter/lib/src/fn3/scrollable.dart b/packages/flutter/lib/src/fn3/scrollable.dart index 32aa5ec7ca..80a4db68bb 100644 --- a/packages/flutter/lib/src/fn3/scrollable.dart +++ b/packages/flutter/lib/src/fn3/scrollable.dart @@ -40,12 +40,7 @@ abstract class Scrollable extends StatefulComponent { } abstract class ScrollableState extends ComponentState { - ScrollableState(T config) : super(config); - - AnimatedSimulation _toEndAnimation; // See _startToEndAnimation() - ValueAnimation _toOffsetAnimation; // Started by scrollTo() - - void initState(BuildContext context) { + ScrollableState(T config) : super(config) { if (config.initialScrollOffset is double) _scrollOffset = config.initialScrollOffset; _toEndAnimation = new AnimatedSimulation(_setScrollOffset); @@ -56,6 +51,9 @@ abstract class ScrollableState extends ComponentState { }); } + AnimatedSimulation _toEndAnimation; // See _startToEndAnimation() + ValueAnimation _toOffsetAnimation; // Started by scrollTo() + double _scrollOffset = 0.0; double get scrollOffset => _scrollOffset;