Split material design widgets out of widgets.dart

These are now part of material.dart.
diff --git a/examples/address_book/lib/main.dart b/examples/address_book/lib/main.dart
index 0c66e80..fb10ecc 100644
--- a/examples/address_book/lib/main.dart
+++ b/examples/address_book/lib/main.dart
@@ -3,7 +3,6 @@
 // found in the LICENSE file.
 
 import 'package:sky/material.dart';
-import 'package:sky/widgets.dart';
 
 class Field extends StatelessComponent {
   Field({
diff --git a/examples/demo_launcher/lib/main.dart b/examples/demo_launcher/lib/main.dart
index 5f466f4..dd4bf62 100644
--- a/examples/demo_launcher/lib/main.dart
+++ b/examples/demo_launcher/lib/main.dart
@@ -5,7 +5,6 @@
 import 'package:sky/material.dart';
 import 'package:sky/painting.dart';
 import 'package:sky/services.dart';
-import 'package:sky/widgets.dart';
 
 AssetBundle _initBundle() {
   if (rootBundle != null)
diff --git a/examples/fitness/lib/main.dart b/examples/fitness/lib/main.dart
index ecc1082..c747be6 100644
--- a/examples/fitness/lib/main.dart
+++ b/examples/fitness/lib/main.dart
@@ -7,7 +7,6 @@
 import 'package:playfair/playfair.dart' as playfair;
 import 'package:sky/material.dart';
 import 'package:sky/painting.dart';
-import 'package:sky/widgets.dart';
 
 import 'user_data.dart';
 import 'date_utils.dart';
diff --git a/examples/game/lib/main.dart b/examples/game/lib/main.dart
index c8cf741..9150ab9 100644
--- a/examples/game/lib/main.dart
+++ b/examples/game/lib/main.dart
@@ -8,7 +8,6 @@
 import 'package:sky/painting.dart';
 import 'package:sky/rendering.dart';
 import 'package:sky/services.dart';
-import 'package:sky/widgets.dart';
 import 'package:skysprites/skysprites.dart';
 
 import 'game_demo.dart';
diff --git a/examples/mine_digger/lib/main.dart b/examples/mine_digger/lib/main.dart
index 112d5a3..095b010 100644
--- a/examples/mine_digger/lib/main.dart
+++ b/examples/mine_digger/lib/main.dart
@@ -8,7 +8,6 @@
 import 'package:sky/painting.dart';
 import 'package:sky/rendering.dart';
 import 'package:sky/services.dart';
-import 'package:sky/widgets.dart';
 
 // Classic minesweeper-inspired game. The mouse controls are standard
 // except for left + right combo which is not implemented. For touch,
diff --git a/examples/stocks/lib/main.dart b/examples/stocks/lib/main.dart
index 61c8d62..1a46790 100644
--- a/examples/stocks/lib/main.dart
+++ b/examples/stocks/lib/main.dart
@@ -11,7 +11,6 @@
 import 'package:sky/gestures.dart';
 import 'package:sky/material.dart';
 import 'package:sky/painting.dart';
-import 'package:sky/widgets.dart';
 
 import 'stock_data.dart';
 
diff --git a/examples/widgets/big_switch.dart b/examples/widgets/big_switch.dart
index 991ab70..cd812fa 100644
--- a/examples/widgets/big_switch.dart
+++ b/examples/widgets/big_switch.dart
@@ -3,7 +3,6 @@
 // found in the LICENSE file.
 
 import 'package:sky/material.dart';
-import 'package:sky/widgets.dart';
 
 class BigSwitch extends StatefulComponent {
   BigSwitch({ this.scale });
diff --git a/examples/widgets/card_collection.dart b/examples/widgets/card_collection.dart
index ce7ac66..7896c68 100644
--- a/examples/widgets/card_collection.dart
+++ b/examples/widgets/card_collection.dart
@@ -6,7 +6,6 @@
 
 import 'package:sky/material.dart';
 import 'package:sky/painting.dart';
-import 'package:sky/widgets.dart';
 
 class CardModel {
   CardModel(this.value, this.height) {
diff --git a/examples/widgets/container.dart b/examples/widgets/container.dart
index fbcd0e1..5a4b929 100644
--- a/examples/widgets/container.dart
+++ b/examples/widgets/container.dart
@@ -2,7 +2,7 @@
 // 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/material.dart';
 
 class ContainerApp extends StatelessComponent {
   Widget build(BuildContext context) {
diff --git a/examples/widgets/date_picker.dart b/examples/widgets/date_picker.dart
index 48d8e30..845af14 100644
--- a/examples/widgets/date_picker.dart
+++ b/examples/widgets/date_picker.dart
@@ -2,7 +2,6 @@
 // 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/material.dart';
 
 void main() => runApp(new DatePickerDemo());
diff --git a/examples/widgets/drag_and_drop.dart b/examples/widgets/drag_and_drop.dart
index 8a7829d..a7c5ff6 100644
--- a/examples/widgets/drag_and_drop.dart
+++ b/examples/widgets/drag_and_drop.dart
@@ -5,7 +5,6 @@
 import 'package:sky/material.dart';
 import 'package:sky/painting.dart';
 import 'package:sky/rendering.dart';
-import 'package:sky/widgets.dart';
 
 class DragData {
   DragData(this.text);
diff --git a/examples/widgets/ensure_visible.dart b/examples/widgets/ensure_visible.dart
index ddd1891..d59e0d6 100644
--- a/examples/widgets/ensure_visible.dart
+++ b/examples/widgets/ensure_visible.dart
@@ -3,7 +3,6 @@
 // found in the LICENSE file.
 
 import 'package:sky/material.dart';
-import 'package:sky/widgets.dart';
 
 class CardModel {
   CardModel(this.value, this.height, this.color);
diff --git a/examples/widgets/indexed_stack.dart b/examples/widgets/indexed_stack.dart
index 1833412..e7a5e49 100644
--- a/examples/widgets/indexed_stack.dart
+++ b/examples/widgets/indexed_stack.dart
@@ -4,7 +4,6 @@
 
 import 'package:sky/material.dart';
 import 'package:sky/rendering.dart';
-import 'package:sky/widgets.dart';
 
 class IndexedStackDemo extends StatefulComponent {
   IndexedStackDemo({ this.navigator });
diff --git a/examples/widgets/navigation.dart b/examples/widgets/navigation.dart
index 7ade991..1e76049 100644
--- a/examples/widgets/navigation.dart
+++ b/examples/widgets/navigation.dart
@@ -3,7 +3,6 @@
 // found in the LICENSE file.
 
 import 'package:sky/material.dart';
-import 'package:sky/widgets.dart';
 
 final Map<String, RouteBuilder> routes = <String, RouteBuilder>{
   '/': (RouteArguments args) => new Container(
diff --git a/examples/widgets/overlay_geometry.dart b/examples/widgets/overlay_geometry.dart
index cdbc56d..34be772 100644
--- a/examples/widgets/overlay_geometry.dart
+++ b/examples/widgets/overlay_geometry.dart
@@ -6,7 +6,6 @@
 
 import 'package:sky/material.dart';
 import 'package:sky/rendering.dart';
-import 'package:sky/widgets.dart';
 
 class CardModel {
   CardModel(this.value, this.height, this.color);
diff --git a/examples/widgets/pageable_list.dart b/examples/widgets/pageable_list.dart
index 4ad845d..f51083e 100644
--- a/examples/widgets/pageable_list.dart
+++ b/examples/widgets/pageable_list.dart
@@ -4,7 +4,6 @@
 
 import 'package:sky/material.dart';
 import 'package:sky/painting.dart';
-import 'package:sky/widgets.dart';
 
 class CardModel {
   CardModel(this.value, this.size, this.color);
diff --git a/examples/widgets/piano.dart b/examples/widgets/piano.dart
index 98a942c..14845b0 100644
--- a/examples/widgets/piano.dart
+++ b/examples/widgets/piano.dart
@@ -7,7 +7,6 @@
 import 'package:sky/material.dart';
 import 'package:sky/rendering.dart';
 import 'package:sky/services.dart';
-import 'package:sky/widgets.dart';
 
 // All of these sounds are marked as public domain at soundbible.
 const String chimes = "http://soundbible.com/grab.php?id=2030&type=wav";
diff --git a/examples/widgets/progress_indicator.dart b/examples/widgets/progress_indicator.dart
index a83de62..511f248 100644
--- a/examples/widgets/progress_indicator.dart
+++ b/examples/widgets/progress_indicator.dart
@@ -4,7 +4,6 @@
 
 import 'package:sky/animation.dart';
 import 'package:sky/material.dart';
-import 'package:sky/widgets.dart';
 
 class ProgressIndicatorApp extends StatefulComponent {
   ProgressIndicatorAppState createState() => new ProgressIndicatorAppState();
diff --git a/examples/widgets/scale.dart b/examples/widgets/scale.dart
index 6265470..ecd4c8d 100644
--- a/examples/widgets/scale.dart
+++ b/examples/widgets/scale.dart
@@ -4,7 +4,6 @@
 
 import 'package:sky/material.dart';
 import 'package:sky/rendering.dart';
-import 'package:sky/widgets.dart';
 
 class ScaleApp extends StatefulComponent {
   ScaleAppState createState() => new ScaleAppState();
diff --git a/examples/widgets/sector.dart b/examples/widgets/sector.dart
index d32d399..c87d87c 100644
--- a/examples/widgets/sector.dart
+++ b/examples/widgets/sector.dart
@@ -4,8 +4,8 @@
 
 import 'dart:math' as math;
 
+import 'package:sky/material.dart';
 import 'package:sky/rendering.dart';
-import 'package:sky/widgets.dart';
 
 import '../rendering/sector_layout.dart';
 
diff --git a/examples/widgets/spinning_mixed.dart b/examples/widgets/spinning_mixed.dart
index f44b0e0..eefb71f 100644
--- a/examples/widgets/spinning_mixed.dart
+++ b/examples/widgets/spinning_mixed.dart
@@ -5,8 +5,8 @@
 import 'dart:sky' as sky;
 
 import 'package:sky/animation.dart';
+import 'package:sky/material.dart';
 import 'package:sky/rendering.dart';
-import 'package:sky/widgets.dart';
 
 import '../rendering/solid_color_box.dart';
 
diff --git a/examples/widgets/styled_text.dart b/examples/widgets/styled_text.dart
index a21da29..1764acd 100644
--- a/examples/widgets/styled_text.dart
+++ b/examples/widgets/styled_text.dart
@@ -4,7 +4,6 @@
 
 import 'package:sky/material.dart';
 import 'package:sky/rendering.dart';
-import 'package:sky/widgets.dart';
 
 class StyledTextApp extends StatefulComponent {
   StyledTextAppState createState() => new StyledTextAppState();
diff --git a/examples/widgets/tabs.dart b/examples/widgets/tabs.dart
index 540b332..cec0e7a 100644
--- a/examples/widgets/tabs.dart
+++ b/examples/widgets/tabs.dart
@@ -4,7 +4,6 @@
 
 import 'package:sky/material.dart';
 import 'package:sky/painting.dart';
-import 'package:sky/widgets.dart';
 
 class TabbedNavigatorApp extends StatefulComponent {
   TabbedNavigatorAppState createState() => new TabbedNavigatorAppState();
diff --git a/packages/flutter/lib/material.dart b/packages/flutter/lib/material.dart
index 0d69716..69cabb7 100644
--- a/packages/flutter/lib/material.dart
+++ b/packages/flutter/lib/material.dart
@@ -7,9 +7,40 @@
 /// See https://www.google.com/design/spec/material-design/introduction.html
 library material;
 
+export 'src/material/app.dart';
+export 'src/material/card.dart';
+export 'src/material/checkbox.dart';
 export 'src/material/colors.dart';
-export 'src/material/edges.dart';
-export 'src/material/shadows.dart';
-export 'src/material/theme_data.dart';
-export 'src/material/typography.dart';
 export 'src/material/constants.dart';
+export 'src/material/date_picker.dart';
+export 'src/material/dialog.dart';
+export 'src/material/drawer.dart';
+export 'src/material/drawer_divider.dart';
+export 'src/material/drawer_header.dart';
+export 'src/material/drawer_item.dart';
+export 'src/material/edges.dart';
+export 'src/material/flat_button.dart';
+export 'src/material/floating_action_button.dart';
+export 'src/material/icon_button.dart';
+export 'src/material/icon.dart';
+export 'src/material/ink_well.dart';
+export 'src/material/input.dart';
+export 'src/material/material_button.dart';
+export 'src/material/material.dart';
+export 'src/material/popup_menu.dart';
+export 'src/material/popup_menu_item.dart';
+export 'src/material/progress_indicator.dart';
+export 'src/material/radio.dart';
+export 'src/material/raised_button.dart';
+export 'src/material/scaffold.dart';
+export 'src/material/shadows.dart';
+export 'src/material/snack_bar.dart';
+export 'src/material/switch.dart';
+export 'src/material/tabs.dart';
+export 'src/material/theme.dart';
+export 'src/material/theme_data.dart';
+export 'src/material/title.dart';
+export 'src/material/tool_bar.dart';
+export 'src/material/typography.dart';
+
+export 'widgets.dart';
diff --git a/packages/flutter/lib/src/widgets/app.dart b/packages/flutter/lib/src/material/app.dart
similarity index 89%
rename from packages/flutter/lib/src/widgets/app.dart
rename to packages/flutter/lib/src/material/app.dart
index c38da71..e73eab1 100644
--- a/packages/flutter/lib/src/widgets/app.dart
+++ b/packages/flutter/lib/src/material/app.dart
@@ -7,12 +7,10 @@
 import 'package:sky/material.dart';
 import 'package:sky/painting.dart';
 import 'package:sky/services.dart';
-import 'package:sky/src/widgets/basic.dart';
-import 'package:sky/src/widgets/binding.dart';
-import 'package:sky/src/widgets/framework.dart';
-import 'package:sky/src/widgets/navigator.dart';
-import 'package:sky/src/widgets/theme.dart';
-import 'package:sky/src/widgets/title.dart';
+import 'package:sky/widgets.dart';
+
+import 'theme.dart';
+import 'title.dart';
 
 const TextStyle _errorTextStyle = const TextStyle(
   color: const Color(0xD0FF0000),
diff --git a/packages/flutter/lib/src/widgets/card.dart b/packages/flutter/lib/src/material/card.dart
similarity index 83%
rename from packages/flutter/lib/src/widgets/card.dart
rename to packages/flutter/lib/src/material/card.dart
index c9e0435..caf2a64 100644
--- a/packages/flutter/lib/src/widgets/card.dart
+++ b/packages/flutter/lib/src/material/card.dart
@@ -2,9 +2,9 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import 'package:sky/src/widgets/basic.dart';
-import 'package:sky/src/widgets/framework.dart';
-import 'package:sky/src/widgets/material.dart';
+import 'package:sky/widgets.dart';
+
+import 'material.dart';
 
 const EdgeDims _kCardMargins = const EdgeDims.all(4.0);
 
diff --git a/packages/flutter/lib/src/widgets/checkbox.dart b/packages/flutter/lib/src/material/checkbox.dart
similarity index 95%
rename from packages/flutter/lib/src/widgets/checkbox.dart
rename to packages/flutter/lib/src/material/checkbox.dart
index 2ae5337..17c57a2 100644
--- a/packages/flutter/lib/src/widgets/checkbox.dart
+++ b/packages/flutter/lib/src/material/checkbox.dart
@@ -4,13 +4,12 @@
 
 import 'dart:sky' as sky;
 
-import 'package:sky/src/widgets/basic.dart';
-import 'package:sky/src/widgets/framework.dart';
-import 'package:sky/src/widgets/theme.dart';
-import 'package:sky/src/rendering/object.dart';
-import 'package:sky/src/rendering/toggleable.dart';
+import 'package:sky/rendering.dart';
+import 'package:sky/widgets.dart';
 
-export 'package:sky/src/rendering/toggleable.dart' show ValueChanged;
+import 'theme.dart';
+
+export 'package:sky/rendering.dart' show ValueChanged;
 
 const double _kMidpoint = 0.5;
 const sky.Color _kLightUncheckedColor = const sky.Color(0x8A000000);
diff --git a/packages/flutter/lib/src/widgets/date_picker.dart b/packages/flutter/lib/src/material/date_picker.dart
similarity index 97%
rename from packages/flutter/lib/src/widgets/date_picker.dart
rename to packages/flutter/lib/src/material/date_picker.dart
index 5f428d6..8df5a45 100644
--- a/packages/flutter/lib/src/widgets/date_picker.dart
+++ b/packages/flutter/lib/src/material/date_picker.dart
@@ -9,12 +9,10 @@
 import 'package:sky/material.dart';
 import 'package:sky/painting.dart';
 import 'package:sky/services.dart';
-import 'package:sky/src/widgets/basic.dart';
-import 'package:sky/src/widgets/framework.dart';
-import 'package:sky/src/widgets/gesture_detector.dart';
-import 'package:sky/src/widgets/ink_well.dart';
-import 'package:sky/src/widgets/scrollable.dart';
-import 'package:sky/src/widgets/theme.dart';
+import 'package:sky/widgets.dart';
+
+import 'ink_well.dart';
+import 'theme.dart';
 
 typedef void DatePickerValueChanged(DateTime dateTime);
 
diff --git a/packages/flutter/lib/src/widgets/dialog.dart b/packages/flutter/lib/src/material/dialog.dart
similarity index 90%
rename from packages/flutter/lib/src/widgets/dialog.dart
rename to packages/flutter/lib/src/material/dialog.dart
index 202db68..534ec6e 100644
--- a/packages/flutter/lib/src/widgets/dialog.dart
+++ b/packages/flutter/lib/src/material/dialog.dart
@@ -7,16 +7,11 @@
 import 'package:sky/animation.dart';
 import 'package:sky/gestures.dart';
 import 'package:sky/material.dart';
-import 'package:sky/src/widgets/basic.dart';
-import 'package:sky/src/widgets/focus.dart';
-import 'package:sky/src/widgets/framework.dart';
-import 'package:sky/src/widgets/gesture_detector.dart';
-import 'package:sky/src/widgets/material.dart';
-import 'package:sky/src/widgets/material_button.dart';
-import 'package:sky/src/widgets/navigator.dart';
-import 'package:sky/src/widgets/scrollable.dart';
-import 'package:sky/src/widgets/theme.dart';
-import 'package:sky/src/widgets/transitions.dart';
+import 'package:sky/widgets.dart';
+
+import 'material.dart';
+import 'material_button.dart';
+import 'theme.dart';
 
 typedef Widget DialogBuilder(NavigatorState navigator);
 
diff --git a/packages/flutter/lib/src/widgets/drawer.dart b/packages/flutter/lib/src/material/drawer.dart
similarity index 91%
rename from packages/flutter/lib/src/widgets/drawer.dart
rename to packages/flutter/lib/src/material/drawer.dart
index 2b63b2a..fed362e 100644
--- a/packages/flutter/lib/src/widgets/drawer.dart
+++ b/packages/flutter/lib/src/material/drawer.dart
@@ -4,14 +4,9 @@
 
 import 'package:sky/animation.dart';
 import 'package:sky/material.dart';
-import 'package:sky/src/widgets/animated_container.dart';
-import 'package:sky/src/widgets/framework.dart';
-import 'package:sky/src/widgets/basic.dart';
-import 'package:sky/src/widgets/gesture_detector.dart';
-import 'package:sky/src/widgets/navigator.dart';
-import 'package:sky/src/widgets/theme.dart';
-import 'package:sky/src/widgets/transitions.dart';
-import 'package:sky/src/widgets/focus.dart';
+import 'package:sky/widgets.dart';
+
+import 'theme.dart';
 
 // TODO(eseidel): Draw width should vary based on device size:
 // http://www.google.com/design/spec/layout/structure.html#structure-side-nav
diff --git a/packages/flutter/lib/src/widgets/drawer_divider.dart b/packages/flutter/lib/src/material/drawer_divider.dart
similarity index 81%
rename from packages/flutter/lib/src/widgets/drawer_divider.dart
rename to packages/flutter/lib/src/material/drawer_divider.dart
index 7841726..a9f1088 100644
--- a/packages/flutter/lib/src/widgets/drawer_divider.dart
+++ b/packages/flutter/lib/src/material/drawer_divider.dart
@@ -2,9 +2,9 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import 'package:sky/src/widgets/basic.dart';
-import 'package:sky/src/widgets/framework.dart';
-import 'package:sky/src/widgets/theme.dart';
+import 'package:sky/widgets.dart';
+
+import 'theme.dart';
 
 class DrawerDivider extends StatelessComponent {
   const DrawerDivider({ Key key }) : super(key: key);
diff --git a/packages/flutter/lib/src/widgets/drawer_header.dart b/packages/flutter/lib/src/material/drawer_header.dart
similarity index 89%
rename from packages/flutter/lib/src/widgets/drawer_header.dart
rename to packages/flutter/lib/src/material/drawer_header.dart
index be71d34..45ae137 100644
--- a/packages/flutter/lib/src/widgets/drawer_header.dart
+++ b/packages/flutter/lib/src/material/drawer_header.dart
@@ -3,9 +3,9 @@
 // found in the LICENSE file.
 
 import 'package:sky/material.dart';
-import 'package:sky/src/widgets/basic.dart';
-import 'package:sky/src/widgets/framework.dart';
-import 'package:sky/src/widgets/theme.dart';
+import 'package:sky/widgets.dart';
+
+import 'theme.dart';
 
 // TODO(jackson): This class should usually render the user's
 // preferred banner image rather than a solid background
diff --git a/packages/flutter/lib/src/widgets/drawer_item.dart b/packages/flutter/lib/src/material/drawer_item.dart
similarity index 91%
rename from packages/flutter/lib/src/widgets/drawer_item.dart
rename to packages/flutter/lib/src/material/drawer_item.dart
index a963398..bf5fd30 100644
--- a/packages/flutter/lib/src/widgets/drawer_item.dart
+++ b/packages/flutter/lib/src/material/drawer_item.dart
@@ -7,11 +7,11 @@
 import 'package:sky/gestures.dart';
 import 'package:sky/material.dart';
 import 'package:sky/painting.dart';
-import 'package:sky/src/widgets/basic.dart';
-import 'package:sky/src/widgets/framework.dart';
-import 'package:sky/src/widgets/icon.dart';
-import 'package:sky/src/widgets/ink_well.dart';
-import 'package:sky/src/widgets/theme.dart';
+import 'package:sky/widgets.dart';
+
+import 'icon.dart';
+import 'ink_well.dart';
+import 'theme.dart';
 
 class DrawerItem extends StatefulComponent {
   const DrawerItem({ Key key, this.icon, this.child, this.onPressed, this.selected: false })
diff --git a/packages/flutter/lib/src/widgets/flat_button.dart b/packages/flutter/lib/src/material/flat_button.dart
similarity index 84%
rename from packages/flutter/lib/src/widgets/flat_button.dart
rename to packages/flutter/lib/src/material/flat_button.dart
index 238879b..b87e7d1 100644
--- a/packages/flutter/lib/src/widgets/flat_button.dart
+++ b/packages/flutter/lib/src/material/flat_button.dart
@@ -4,10 +4,10 @@
 
 import 'package:sky/gestures.dart';
 import 'package:sky/material.dart';
-import 'package:sky/src/widgets/basic.dart';
-import 'package:sky/src/widgets/framework.dart';
-import 'package:sky/src/widgets/material_button.dart';
-import 'package:sky/src/widgets/theme.dart';
+import 'package:sky/widgets.dart';
+
+import 'material_button.dart';
+import 'theme.dart';
 
 class FlatButton extends MaterialButton {
   FlatButton({
diff --git a/packages/flutter/lib/src/widgets/floating_action_button.dart b/packages/flutter/lib/src/material/floating_action_button.dart
similarity index 87%
rename from packages/flutter/lib/src/widgets/floating_action_button.dart
rename to packages/flutter/lib/src/material/floating_action_button.dart
index 8b95422..368e3c5 100644
--- a/packages/flutter/lib/src/widgets/floating_action_button.dart
+++ b/packages/flutter/lib/src/material/floating_action_button.dart
@@ -3,12 +3,12 @@
 // found in the LICENSE file.
 
 import 'package:sky/gestures.dart';
-import 'package:sky/src/widgets/basic.dart';
-import 'package:sky/src/widgets/framework.dart';
-import 'package:sky/src/widgets/icon.dart';
-import 'package:sky/src/widgets/ink_well.dart';
-import 'package:sky/src/widgets/material.dart';
-import 'package:sky/src/widgets/theme.dart';
+import 'package:sky/widgets.dart';
+
+import 'icon.dart';
+import 'ink_well.dart';
+import 'material.dart';
+import 'theme.dart';
 
 // TODO(eseidel): This needs to change based on device size?
 // http://www.google.com/design/spec/layout/metrics-keylines.html#metrics-keylines-keylines-spacing
diff --git a/packages/flutter/lib/src/widgets/icon.dart b/packages/flutter/lib/src/material/icon.dart
similarity index 94%
rename from packages/flutter/lib/src/widgets/icon.dart
rename to packages/flutter/lib/src/material/icon.dart
index 9b71b13..6d0d119 100644
--- a/packages/flutter/lib/src/widgets/icon.dart
+++ b/packages/flutter/lib/src/material/icon.dart
@@ -5,9 +5,9 @@
 import 'dart:sky' as sky;
 
 import 'package:sky/services.dart';
-import 'package:sky/src/widgets/basic.dart';
-import 'package:sky/src/widgets/theme.dart';
-import 'package:sky/src/widgets/framework.dart';
+import 'package:sky/widgets.dart';
+
+import 'theme.dart';
 
 enum IconThemeColor { white, black }
 
diff --git a/packages/flutter/lib/src/widgets/icon_button.dart b/packages/flutter/lib/src/material/icon_button.dart
similarity index 81%
rename from packages/flutter/lib/src/widgets/icon_button.dart
rename to packages/flutter/lib/src/material/icon_button.dart
index 662ee5f..a2b826d 100644
--- a/packages/flutter/lib/src/widgets/icon_button.dart
+++ b/packages/flutter/lib/src/material/icon_button.dart
@@ -5,10 +5,9 @@
 import 'dart:sky' as sky;
 
 import 'package:sky/gestures.dart';
-import 'package:sky/src/widgets/basic.dart';
-import 'package:sky/src/widgets/icon.dart';
-import 'package:sky/src/widgets/framework.dart';
-import 'package:sky/src/widgets/gesture_detector.dart';
+import 'package:sky/widgets.dart';
+
+import 'icon.dart';
 
 class IconButton extends StatelessComponent {
   const IconButton({ Key key, this.icon, this.onPressed, this.color }) : super(key: key);
diff --git a/packages/flutter/lib/src/widgets/ink_well.dart b/packages/flutter/lib/src/material/ink_well.dart
similarity index 98%
rename from packages/flutter/lib/src/widgets/ink_well.dart
rename to packages/flutter/lib/src/material/ink_well.dart
index 140e2c9..f775635 100644
--- a/packages/flutter/lib/src/widgets/ink_well.dart
+++ b/packages/flutter/lib/src/material/ink_well.dart
@@ -9,8 +9,7 @@
 import 'package:sky/animation.dart';
 import 'package:sky/gestures.dart';
 import 'package:sky/rendering.dart';
-import 'package:sky/src/widgets/basic.dart';
-import 'package:sky/src/widgets/framework.dart';
+import 'package:sky/widgets.dart';
 
 const int _kSplashInitialOpacity = 0x30;
 const double _kSplashCanceledVelocity = 0.7;
diff --git a/packages/flutter/lib/src/widgets/input.dart b/packages/flutter/lib/src/material/input.dart
similarity index 93%
rename from packages/flutter/lib/src/widgets/input.dart
rename to packages/flutter/lib/src/material/input.dart
index d3a1373..0b2ad3c 100644
--- a/packages/flutter/lib/src/widgets/input.dart
+++ b/packages/flutter/lib/src/material/input.dart
@@ -6,12 +6,9 @@
 import 'package:sky/services.dart';
 import 'package:sky/painting.dart';
 import 'package:sky/rendering.dart';
-import 'package:sky/src/widgets/basic.dart';
-import 'package:sky/src/widgets/editable_text.dart';
-import 'package:sky/src/widgets/focus.dart';
-import 'package:sky/src/widgets/framework.dart';
-import 'package:sky/src/widgets/scrollable.dart';
-import 'package:sky/src/widgets/theme.dart';
+import 'package:sky/widgets.dart';
+
+import 'theme.dart';
 
 export 'package:sky/services.dart' show KeyboardType;
 
diff --git a/packages/flutter/lib/src/widgets/material.dart b/packages/flutter/lib/src/material/material.dart
similarity index 91%
rename from packages/flutter/lib/src/widgets/material.dart
rename to packages/flutter/lib/src/material/material.dart
index 4f42d63..375a436 100644
--- a/packages/flutter/lib/src/widgets/material.dart
+++ b/packages/flutter/lib/src/material/material.dart
@@ -5,10 +5,9 @@
 import 'package:sky/animation.dart';
 import 'package:sky/painting.dart';
 import 'package:sky/material.dart';
-import 'package:sky/src/widgets/animated_container.dart';
-import 'package:sky/src/widgets/basic.dart';
-import 'package:sky/src/widgets/framework.dart';
-import 'package:sky/src/widgets/theme.dart';
+import 'package:sky/widgets.dart';
+
+import 'theme.dart';
 
 enum MaterialType { canvas, card, circle, button }
 
diff --git a/packages/flutter/lib/src/widgets/material_button.dart b/packages/flutter/lib/src/material/material_button.dart
similarity index 92%
rename from packages/flutter/lib/src/widgets/material_button.dart
rename to packages/flutter/lib/src/material/material_button.dart
index cd01b0d..4db52a3 100644
--- a/packages/flutter/lib/src/widgets/material_button.dart
+++ b/packages/flutter/lib/src/material/material_button.dart
@@ -4,11 +4,11 @@
 
 import 'package:sky/gestures.dart';
 import 'package:sky/material.dart';
-import 'package:sky/src/widgets/basic.dart';
-import 'package:sky/src/widgets/framework.dart';
-import 'package:sky/src/widgets/ink_well.dart';
-import 'package:sky/src/widgets/material.dart';
-import 'package:sky/src/widgets/theme.dart';
+import 'package:sky/widgets.dart';
+
+import 'ink_well.dart';
+import 'material.dart';
+import 'theme.dart';
 
 enum ButtonColor { normal, accent }
 
diff --git a/packages/flutter/lib/src/widgets/popup_menu.dart b/packages/flutter/lib/src/material/popup_menu.dart
similarity index 92%
rename from packages/flutter/lib/src/widgets/popup_menu.dart
rename to packages/flutter/lib/src/material/popup_menu.dart
index 518d921..6b1922b 100644
--- a/packages/flutter/lib/src/widgets/popup_menu.dart
+++ b/packages/flutter/lib/src/material/popup_menu.dart
@@ -8,15 +8,11 @@
 import 'package:sky/animation.dart';
 import 'package:sky/material.dart';
 import 'package:sky/painting.dart';
-import 'package:sky/src/widgets/basic.dart';
-import 'package:sky/src/widgets/focus.dart';
-import 'package:sky/src/widgets/framework.dart';
-import 'package:sky/src/widgets/ink_well.dart';
-import 'package:sky/src/widgets/navigator.dart';
-import 'package:sky/src/widgets/popup_menu_item.dart';
-import 'package:sky/src/widgets/scrollable.dart';
-import 'package:sky/src/widgets/theme.dart';
-import 'package:sky/src/widgets/transitions.dart';
+import 'package:sky/widgets.dart';
+
+import 'ink_well.dart';
+import 'popup_menu_item.dart';
+import 'theme.dart';
 
 const Duration _kMenuDuration = const Duration(milliseconds: 300);
 const double _kMenuCloseIntervalEnd = 2.0 / 3.0;
diff --git a/packages/flutter/lib/src/widgets/popup_menu_item.dart b/packages/flutter/lib/src/material/popup_menu_item.dart
similarity index 84%
rename from packages/flutter/lib/src/widgets/popup_menu_item.dart
rename to packages/flutter/lib/src/material/popup_menu_item.dart
index d52d8e2..d09bda2 100644
--- a/packages/flutter/lib/src/widgets/popup_menu_item.dart
+++ b/packages/flutter/lib/src/material/popup_menu_item.dart
@@ -2,9 +2,9 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import 'package:sky/src/widgets/basic.dart';
-import 'package:sky/src/widgets/framework.dart';
-import 'package:sky/src/widgets/theme.dart';
+import 'package:sky/widgets.dart';
+
+import 'theme.dart';
 
 const double _kMenuItemHeight = 48.0;
 const double _kBaselineOffsetFromBottom = 20.0;
diff --git a/packages/flutter/lib/src/widgets/progress_indicator.dart b/packages/flutter/lib/src/material/progress_indicator.dart
similarity index 96%
rename from packages/flutter/lib/src/widgets/progress_indicator.dart
rename to packages/flutter/lib/src/material/progress_indicator.dart
index 92cdeda..398b604 100644
--- a/packages/flutter/lib/src/widgets/progress_indicator.dart
+++ b/packages/flutter/lib/src/material/progress_indicator.dart
@@ -6,10 +6,9 @@
 import 'dart:sky' as sky;
 
 import 'package:sky/animation.dart';
-import 'package:sky/src/widgets/basic.dart';
-import 'package:sky/src/widgets/theme.dart';
-import 'package:sky/src/widgets/framework.dart';
-import 'package:sky/src/widgets/transitions.dart';
+import 'package:sky/widgets.dart';
+
+import 'theme.dart';
 
 const double _kLinearProgressIndicatorHeight = 6.0;
 const double _kMinCircularProgressIndicatorSize = 15.0;
diff --git a/packages/flutter/lib/src/widgets/radio.dart b/packages/flutter/lib/src/material/radio.dart
similarity index 90%
rename from packages/flutter/lib/src/widgets/radio.dart
rename to packages/flutter/lib/src/material/radio.dart
index dfecc4c..30ae007 100644
--- a/packages/flutter/lib/src/widgets/radio.dart
+++ b/packages/flutter/lib/src/material/radio.dart
@@ -4,10 +4,9 @@
 
 import 'dart:sky' as sky;
 
-import 'package:sky/src/widgets/basic.dart';
-import 'package:sky/src/widgets/framework.dart';
-import 'package:sky/src/widgets/gesture_detector.dart';
-import 'package:sky/src/widgets/theme.dart';
+import 'package:sky/widgets.dart';
+
+import 'theme.dart';
 
 const sky.Color _kLightOffColor = const sky.Color(0x8A000000);
 const sky.Color _kDarkOffColor = const sky.Color(0xB2FFFFFF);
diff --git a/packages/flutter/lib/src/widgets/raised_button.dart b/packages/flutter/lib/src/material/raised_button.dart
similarity index 88%
rename from packages/flutter/lib/src/widgets/raised_button.dart
rename to packages/flutter/lib/src/material/raised_button.dart
index b6db804..3484f6c 100644
--- a/packages/flutter/lib/src/widgets/raised_button.dart
+++ b/packages/flutter/lib/src/material/raised_button.dart
@@ -4,10 +4,10 @@
 
 import 'package:sky/gestures.dart';
 import 'package:sky/material.dart';
-import 'package:sky/src/widgets/basic.dart';
-import 'package:sky/src/widgets/framework.dart';
-import 'package:sky/src/widgets/material_button.dart';
-import 'package:sky/src/widgets/theme.dart';
+import 'package:sky/widgets.dart';
+
+import 'material_button.dart';
+import 'theme.dart';
 
 class RaisedButton extends MaterialButton {
   RaisedButton({
diff --git a/packages/flutter/lib/src/widgets/scaffold.dart b/packages/flutter/lib/src/material/scaffold.dart
similarity index 95%
rename from packages/flutter/lib/src/widgets/scaffold.dart
rename to packages/flutter/lib/src/material/scaffold.dart
index bd02c3c..fb65a23 100644
--- a/packages/flutter/lib/src/widgets/scaffold.dart
+++ b/packages/flutter/lib/src/material/scaffold.dart
@@ -6,8 +6,7 @@
 
 import 'package:sky/material.dart';
 import 'package:sky/rendering.dart';
-import 'package:sky/src/widgets/basic.dart';
-import 'package:sky/src/widgets/framework.dart';
+import 'package:sky/widgets.dart';
 
 class Scaffold extends StatelessComponent {
   Scaffold({
diff --git a/packages/flutter/lib/src/widgets/snack_bar.dart b/packages/flutter/lib/src/material/snack_bar.dart
similarity index 88%
rename from packages/flutter/lib/src/widgets/snack_bar.dart
rename to packages/flutter/lib/src/material/snack_bar.dart
index 8545496..bc66cce 100644
--- a/packages/flutter/lib/src/widgets/snack_bar.dart
+++ b/packages/flutter/lib/src/material/snack_bar.dart
@@ -6,14 +6,10 @@
 import 'package:sky/gestures.dart';
 import 'package:sky/material.dart';
 import 'package:sky/painting.dart';
-import 'package:sky/src/widgets/basic.dart';
-import 'package:sky/src/widgets/framework.dart';
-import 'package:sky/src/widgets/gesture_detector.dart';
-import 'package:sky/src/widgets/material.dart';
-import 'package:sky/src/widgets/navigator.dart';
-import 'package:sky/src/widgets/placeholder.dart';
-import 'package:sky/src/widgets/theme.dart';
-import 'package:sky/src/widgets/transitions.dart';
+import 'package:sky/widgets.dart';
+
+import 'material.dart';
+import 'theme.dart';
 
 const double _kSideMargins = 24.0;
 const double _kVerticalPadding = 14.0;
diff --git a/packages/flutter/lib/src/widgets/switch.dart b/packages/flutter/lib/src/material/switch.dart
similarity index 96%
rename from packages/flutter/lib/src/widgets/switch.dart
rename to packages/flutter/lib/src/material/switch.dart
index 5452545..959d940 100644
--- a/packages/flutter/lib/src/widgets/switch.dart
+++ b/packages/flutter/lib/src/material/switch.dart
@@ -8,9 +8,9 @@
 import 'package:sky/material.dart';
 import 'package:sky/painting.dart';
 import 'package:sky/rendering.dart';
-import 'package:sky/src/widgets/basic.dart';
-import 'package:sky/src/widgets/theme.dart';
-import 'package:sky/src/widgets/framework.dart';
+import 'package:sky/widgets.dart';
+
+import 'theme.dart';
 
 export 'package:sky/rendering.dart' show ValueChanged;
 
diff --git a/packages/flutter/lib/src/widgets/tabs.dart b/packages/flutter/lib/src/material/tabs.dart
similarity index 97%
rename from packages/flutter/lib/src/widgets/tabs.dart
rename to packages/flutter/lib/src/material/tabs.dart
index 89367d9..d6df9b9 100644
--- a/packages/flutter/lib/src/widgets/tabs.dart
+++ b/packages/flutter/lib/src/material/tabs.dart
@@ -8,17 +8,16 @@
 import 'package:newton/newton.dart';
 import 'package:sky/animation.dart';
 import 'package:sky/gestures.dart';
-import 'package:sky/material.dart';
 import 'package:sky/painting.dart';
 import 'package:sky/rendering.dart';
-import 'package:sky/src/widgets/animated_container.dart';
-import 'package:sky/src/widgets/basic.dart';
-import 'package:sky/src/widgets/framework.dart';
-import 'package:sky/src/widgets/icon.dart';
-import 'package:sky/src/widgets/ink_well.dart';
-import 'package:sky/src/widgets/scrollable.dart';
-import 'package:sky/src/widgets/theme.dart';
-import 'package:sky/src/widgets/transitions.dart';
+import 'package:sky/widgets.dart';
+
+import 'colors.dart';
+import 'constants.dart';
+import 'icon.dart';
+import 'ink_well.dart';
+import 'theme.dart';
+import 'typography.dart';
 
 typedef void TabSelectedIndexChanged(int selectedIndex);
 typedef void TabLayoutChanged(Size size, List<double> widths);
diff --git a/packages/flutter/lib/src/widgets/theme.dart b/packages/flutter/lib/src/material/theme.dart
similarity index 81%
rename from packages/flutter/lib/src/widgets/theme.dart
rename to packages/flutter/lib/src/material/theme.dart
index c06978b..e46a79f 100644
--- a/packages/flutter/lib/src/widgets/theme.dart
+++ b/packages/flutter/lib/src/material/theme.dart
@@ -2,10 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import 'package:sky/material.dart';
-import 'package:sky/src/widgets/framework.dart';
+import 'package:sky/widgets.dart';
 
-export 'package:sky/material.dart' show ThemeData, ThemeBrightness;
+import 'theme_data.dart';
+
+export 'theme_data.dart' show ThemeData, ThemeBrightness;
 
 class Theme extends InheritedWidget {
   Theme({
diff --git a/packages/flutter/lib/src/widgets/title.dart b/packages/flutter/lib/src/material/title.dart
similarity index 82%
rename from packages/flutter/lib/src/widgets/title.dart
rename to packages/flutter/lib/src/material/title.dart
index f9f9ae5..bcba142 100644
--- a/packages/flutter/lib/src/widgets/title.dart
+++ b/packages/flutter/lib/src/material/title.dart
@@ -3,8 +3,9 @@
 // found in the LICENSE file.
 
 import 'package:sky/services.dart';
-import 'package:sky/src/widgets/theme.dart';
-import 'package:sky/src/widgets/framework.dart';
+import 'package:sky/widgets.dart';
+
+import 'theme.dart';
 
 class Title extends StatelessComponent {
   Title({ this.title, this.child });
diff --git a/packages/flutter/lib/src/widgets/tool_bar.dart b/packages/flutter/lib/src/material/tool_bar.dart
similarity index 90%
rename from packages/flutter/lib/src/widgets/tool_bar.dart
rename to packages/flutter/lib/src/material/tool_bar.dart
index b92c938..16fc339 100644
--- a/packages/flutter/lib/src/widgets/tool_bar.dart
+++ b/packages/flutter/lib/src/material/tool_bar.dart
@@ -4,11 +4,10 @@
 
 import 'package:sky/material.dart';
 import 'package:sky/painting.dart';
-import 'package:sky/src/widgets/animated_container.dart';
-import 'package:sky/src/widgets/basic.dart';
-import 'package:sky/src/widgets/framework.dart';
-import 'package:sky/src/widgets/icon.dart';
-import 'package:sky/src/widgets/theme.dart';
+import 'package:sky/widgets.dart';
+
+import 'icon.dart';
+import 'theme.dart';
 
 class ToolBar extends StatelessComponent {
   ToolBar({
diff --git a/packages/flutter/lib/src/widgets/animated_container.dart b/packages/flutter/lib/src/widgets/animated_container.dart
index 12f65ad..5734cfb 100644
--- a/packages/flutter/lib/src/widgets/animated_container.dart
+++ b/packages/flutter/lib/src/widgets/animated_container.dart
@@ -3,8 +3,9 @@
 // found in the LICENSE file.
 
 import 'package:sky/animation.dart';
-import 'package:sky/src/widgets/basic.dart';
-import 'package:sky/src/widgets/framework.dart';
+
+import 'basic.dart';
+import 'framework.dart';
 
 import 'package:vector_math/vector_math_64.dart';
 
diff --git a/packages/flutter/lib/src/widgets/basic.dart b/packages/flutter/lib/src/widgets/basic.dart
index ea3a835..340fa56 100644
--- a/packages/flutter/lib/src/widgets/basic.dart
+++ b/packages/flutter/lib/src/widgets/basic.dart
@@ -6,7 +6,8 @@
 
 import 'package:sky/rendering.dart';
 import 'package:sky/services.dart';
-import 'package:sky/src/widgets/framework.dart';
+
+import 'framework.dart';
 
 export 'package:sky/rendering.dart' show
     BackgroundImage,
diff --git a/packages/flutter/lib/src/widgets/binding.dart b/packages/flutter/lib/src/widgets/binding.dart
index 2699254..d6b6393 100644
--- a/packages/flutter/lib/src/widgets/binding.dart
+++ b/packages/flutter/lib/src/widgets/binding.dart
@@ -4,7 +4,8 @@
 
 import 'package:sky/animation.dart';
 import 'package:sky/rendering.dart';
-import 'package:sky/src/widgets/framework.dart';
+
+import 'framework.dart';
 
 class WidgetFlutterBinding extends FlutterBinding {
 
diff --git a/packages/flutter/lib/src/widgets/dismissable.dart b/packages/flutter/lib/src/widgets/dismissable.dart
index 44c9d6a..a4d4311 100644
--- a/packages/flutter/lib/src/widgets/dismissable.dart
+++ b/packages/flutter/lib/src/widgets/dismissable.dart
@@ -5,10 +5,11 @@
 import 'dart:sky' as sky;
 
 import 'package:sky/animation.dart';
-import 'package:sky/src/widgets/basic.dart';
-import 'package:sky/src/widgets/transitions.dart';
-import 'package:sky/src/widgets/framework.dart';
-import 'package:sky/src/widgets/gesture_detector.dart';
+
+import 'basic.dart';
+import 'transitions.dart';
+import 'framework.dart';
+import 'gesture_detector.dart';
 
 const Duration _kCardDismissFadeout = const Duration(milliseconds: 200);
 const Duration _kCardDismissResize = const Duration(milliseconds: 300);
diff --git a/packages/flutter/lib/src/widgets/drag_target.dart b/packages/flutter/lib/src/widgets/drag_target.dart
index 679c2fa..ddd98ba 100644
--- a/packages/flutter/lib/src/widgets/drag_target.dart
+++ b/packages/flutter/lib/src/widgets/drag_target.dart
@@ -7,10 +7,11 @@
 
 import 'package:sky/animation.dart';
 import 'package:sky/rendering.dart';
-import 'package:sky/src/widgets/basic.dart';
-import 'package:sky/src/widgets/binding.dart';
-import 'package:sky/src/widgets/framework.dart';
-import 'package:sky/src/widgets/navigator.dart';
+
+import 'basic.dart';
+import 'binding.dart';
+import 'framework.dart';
+import 'navigator.dart';
 
 typedef bool DragTargetWillAccept<T>(T data);
 typedef void DragTargetAccept<T>(T data);
diff --git a/packages/flutter/lib/src/widgets/editable_text.dart b/packages/flutter/lib/src/widgets/editable_text.dart
index fee3793..0990ede 100644
--- a/packages/flutter/lib/src/widgets/editable_text.dart
+++ b/packages/flutter/lib/src/widgets/editable_text.dart
@@ -7,8 +7,9 @@
 import 'package:mojo_services/keyboard/keyboard.mojom.dart';
 import 'package:sky/painting.dart';
 import 'package:sky/rendering.dart';
-import 'package:sky/src/widgets/basic.dart';
-import 'package:sky/src/widgets/framework.dart';
+
+import 'basic.dart';
+import 'framework.dart';
 
 const _kCursorBlinkPeriod = 500; // milliseconds
 
diff --git a/packages/flutter/lib/src/widgets/focus.dart b/packages/flutter/lib/src/widgets/focus.dart
index 098fcf9..5f2f129 100644
--- a/packages/flutter/lib/src/widgets/focus.dart
+++ b/packages/flutter/lib/src/widgets/focus.dart
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import 'package:sky/src/widgets/framework.dart';
+import 'framework.dart';
 
 typedef void FocusChanged(GlobalKey key);
 
diff --git a/packages/flutter/lib/src/widgets/gesture_detector.dart b/packages/flutter/lib/src/widgets/gesture_detector.dart
index c2d1454..6738389 100644
--- a/packages/flutter/lib/src/widgets/gesture_detector.dart
+++ b/packages/flutter/lib/src/widgets/gesture_detector.dart
@@ -5,9 +5,10 @@
 import 'dart:sky' as sky;
 
 import 'package:sky/gestures.dart';
-import 'package:sky/src/widgets/basic.dart';
-import 'package:sky/src/widgets/framework.dart';
-import 'package:sky/src/rendering/binding.dart';
+import 'package:sky/rendering.dart';
+
+import 'basic.dart';
+import 'framework.dart';
 
 class GestureDetector extends StatefulComponent {
   const GestureDetector({
diff --git a/packages/flutter/lib/src/widgets/mimic.dart b/packages/flutter/lib/src/widgets/mimic.dart
index 961db37..6900678 100644
--- a/packages/flutter/lib/src/widgets/mimic.dart
+++ b/packages/flutter/lib/src/widgets/mimic.dart
@@ -3,8 +3,9 @@
 // found in the LICENSE file.
 
 import 'package:sky/rendering.dart';
-import 'package:sky/src/widgets/basic.dart';
-import 'package:sky/src/widgets/framework.dart';
+
+import 'basic.dart';
+import 'framework.dart';
 
 class MimicableKey {
   MimicableKey._(this._state);
diff --git a/packages/flutter/lib/src/widgets/mixed_viewport.dart b/packages/flutter/lib/src/widgets/mixed_viewport.dart
index bf03507..3941ec8 100644
--- a/packages/flutter/lib/src/widgets/mixed_viewport.dart
+++ b/packages/flutter/lib/src/widgets/mixed_viewport.dart
@@ -3,8 +3,9 @@
 // found in the LICENSE file.
 
 import 'package:sky/rendering.dart';
-import 'package:sky/src/widgets/framework.dart';
-import 'package:sky/src/widgets/basic.dart';
+
+import 'framework.dart';
+import 'basic.dart';
 
 typedef Widget IndexedBuilder(BuildContext context, int index); // return null if index is greater than index of last entry
 typedef void ExtentsUpdateCallback(double newExtents);
diff --git a/packages/flutter/lib/src/widgets/navigator.dart b/packages/flutter/lib/src/widgets/navigator.dart
index 04e839f..97c9e63 100644
--- a/packages/flutter/lib/src/widgets/navigator.dart
+++ b/packages/flutter/lib/src/widgets/navigator.dart
@@ -3,10 +3,11 @@
 // found in the LICENSE file.
 
 import 'package:sky/animation.dart';
-import 'package:sky/src/widgets/basic.dart';
-import 'package:sky/src/widgets/focus.dart';
-import 'package:sky/src/widgets/framework.dart';
-import 'package:sky/src/widgets/transitions.dart';
+
+import 'basic.dart';
+import 'focus.dart';
+import 'framework.dart';
+import 'transitions.dart';
 
 class RouteArguments {
   const RouteArguments({ this.navigator, this.previousPerformance, this.nextPerformance });
diff --git a/packages/flutter/lib/src/widgets/placeholder.dart b/packages/flutter/lib/src/widgets/placeholder.dart
index 69c7918..79da8dc 100644
--- a/packages/flutter/lib/src/widgets/placeholder.dart
+++ b/packages/flutter/lib/src/widgets/placeholder.dart
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import 'package:sky/src/widgets/basic.dart';
-import 'package:sky/src/widgets/framework.dart';
+import 'basic.dart';
+import 'framework.dart';
 
 class Placeholder extends StatefulComponent {
   Placeholder({ Key key }) : super(key: key);
diff --git a/packages/flutter/lib/src/widgets/scrollable.dart b/packages/flutter/lib/src/widgets/scrollable.dart
index bf4a086..36b1502 100644
--- a/packages/flutter/lib/src/widgets/scrollable.dart
+++ b/packages/flutter/lib/src/widgets/scrollable.dart
@@ -10,11 +10,12 @@
 import 'package:sky/animation.dart';
 import 'package:sky/gestures.dart';
 import 'package:sky/rendering.dart';
-import 'package:sky/src/widgets/basic.dart';
-import 'package:sky/src/widgets/framework.dart';
-import 'package:sky/src/widgets/gesture_detector.dart';
-import 'package:sky/src/widgets/homogeneous_viewport.dart';
-import 'package:sky/src/widgets/mixed_viewport.dart';
+
+import 'basic.dart';
+import 'framework.dart';
+import 'gesture_detector.dart';
+import 'homogeneous_viewport.dart';
+import 'mixed_viewport.dart';
 
 // The gesture velocity properties are pixels/second, config min,max limits are pixels/ms
 const double _kMillisecondsPerSecond = 1000.0;
diff --git a/packages/flutter/lib/src/widgets/statistics_overlay.dart b/packages/flutter/lib/src/widgets/statistics_overlay.dart
index 6677cfb..a4c5eb6 100644
--- a/packages/flutter/lib/src/widgets/statistics_overlay.dart
+++ b/packages/flutter/lib/src/widgets/statistics_overlay.dart
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import 'package:sky/src/widgets/framework.dart';
+import 'framework.dart';
+
 import 'package:sky/src/rendering/statistics_box.dart';
 
 /// The options that control whether the statistics overlay displays certain
diff --git a/packages/flutter/lib/src/widgets/transitions.dart b/packages/flutter/lib/src/widgets/transitions.dart
index 5f3d52b..71e9a98 100644
--- a/packages/flutter/lib/src/widgets/transitions.dart
+++ b/packages/flutter/lib/src/widgets/transitions.dart
@@ -3,10 +3,11 @@
 // found in the LICENSE file.
 
 import 'package:sky/animation.dart';
-import 'package:sky/src/widgets/basic.dart';
-import 'package:sky/src/widgets/framework.dart';
 import 'package:vector_math/vector_math_64.dart';
 
+import 'basic.dart';
+import 'framework.dart';
+
 export 'package:sky/animation.dart' show AnimationDirection;
 
 abstract class TransitionComponent extends StatefulComponent {
diff --git a/packages/flutter/lib/src/widgets/unique_component.dart b/packages/flutter/lib/src/widgets/unique_component.dart
index 065ee3b..73b2cc3 100644
--- a/packages/flutter/lib/src/widgets/unique_component.dart
+++ b/packages/flutter/lib/src/widgets/unique_component.dart
@@ -2,7 +2,7 @@
 // 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 'framework.dart';
 
 abstract class UniqueComponent<T extends State> extends StatefulComponent {
   UniqueComponent({ GlobalKey key }) : super(key: key) {
diff --git a/packages/flutter/lib/widgets.dart b/packages/flutter/lib/widgets.dart
index 84f308d..2ecb32b 100644
--- a/packages/flutter/lib/widgets.dart
+++ b/packages/flutter/lib/widgets.dart
@@ -6,50 +6,21 @@
 library widgets;
 
 export 'src/widgets/animated_container.dart';
-export 'src/widgets/app.dart';
 export 'src/widgets/basic.dart';
 export 'src/widgets/binding.dart';
-export 'src/widgets/card.dart';
-export 'src/widgets/checkbox.dart';
-export 'src/widgets/date_picker.dart';
-export 'src/widgets/dialog.dart';
 export 'src/widgets/dismissable.dart';
 export 'src/widgets/drag_target.dart';
-export 'src/widgets/drawer.dart';
-export 'src/widgets/drawer_divider.dart';
-export 'src/widgets/drawer_header.dart';
-export 'src/widgets/drawer_item.dart';
 export 'src/widgets/editable_text.dart';
-export 'src/widgets/flat_button.dart';
-export 'src/widgets/floating_action_button.dart';
 export 'src/widgets/focus.dart';
 export 'src/widgets/framework.dart';
 export 'src/widgets/gesture_detector.dart';
 export 'src/widgets/homogeneous_viewport.dart';
-export 'src/widgets/icon.dart';
-export 'src/widgets/icon_button.dart';
-export 'src/widgets/ink_well.dart';
-export 'src/widgets/input.dart';
-export 'src/widgets/material.dart';
-export 'src/widgets/material_button.dart';
 export 'src/widgets/mimic.dart';
 export 'src/widgets/mixed_viewport.dart';
 export 'src/widgets/navigator.dart';
 export 'src/widgets/placeholder.dart';
-export 'src/widgets/popup_menu.dart';
-export 'src/widgets/popup_menu_item.dart';
-export 'src/widgets/progress_indicator.dart';
-export 'src/widgets/radio.dart';
-export 'src/widgets/raised_button.dart';
-export 'src/widgets/scaffold.dart';
 export 'src/widgets/scrollable.dart';
 export 'src/widgets/statistics_overlay.dart';
-export 'src/widgets/snack_bar.dart';
-export 'src/widgets/switch.dart';
-export 'src/widgets/tabs.dart';
-export 'src/widgets/theme.dart';
-export 'src/widgets/title.dart';
-export 'src/widgets/tool_bar.dart';
 export 'src/widgets/transitions.dart';
 export 'src/widgets/unique_component.dart';
 
diff --git a/packages/unit/test/widget/date_picker_test.dart b/packages/unit/test/widget/date_picker_test.dart
index e389213..975cbe3 100644
--- a/packages/unit/test/widget/date_picker_test.dart
+++ b/packages/unit/test/widget/date_picker_test.dart
@@ -1,4 +1,4 @@
-import 'package:sky/widgets.dart';
+import 'package:sky/material.dart';
 import 'package:test/test.dart';
 
 import 'widget_tester.dart';
diff --git a/packages/unit/test/widget/drawer_test.dart b/packages/unit/test/widget/drawer_test.dart
index 2fb0b24..36389c8 100644
--- a/packages/unit/test/widget/drawer_test.dart
+++ b/packages/unit/test/widget/drawer_test.dart
@@ -1,3 +1,4 @@
+import 'package:sky/material.dart';
 import 'package:sky/widgets.dart';
 import 'package:test/test.dart';
 
diff --git a/packages/unit/test/widget/input_test.dart b/packages/unit/test/widget/input_test.dart
index 01670d5..e2bfbad 100644
--- a/packages/unit/test/widget/input_test.dart
+++ b/packages/unit/test/widget/input_test.dart
@@ -1,7 +1,7 @@
 import 'package:mojo_services/keyboard/keyboard.mojom.dart';
 import 'package:sky/rendering.dart';
 import 'package:sky/services.dart';
-import 'package:sky/widgets.dart';
+import 'package:sky/material.dart';
 import 'package:test/test.dart';
 
 import 'widget_tester.dart';
diff --git a/packages/unit/test/widget/progress_indicator_test.dart b/packages/unit/test/widget/progress_indicator_test.dart
index 8338933..849818b 100644
--- a/packages/unit/test/widget/progress_indicator_test.dart
+++ b/packages/unit/test/widget/progress_indicator_test.dart
@@ -1,6 +1,6 @@
 
 import 'package:sky/rendering.dart';
-import 'package:sky/widgets.dart';
+import 'package:sky/material.dart';
 import 'package:test/test.dart';
 
 import 'widget_tester.dart';
diff --git a/packages/unit/test/widget/snack_bar_test.dart b/packages/unit/test/widget/snack_bar_test.dart
index 6cb2d66..eb056b3 100644
--- a/packages/unit/test/widget/snack_bar_test.dart
+++ b/packages/unit/test/widget/snack_bar_test.dart
@@ -1,4 +1,4 @@
-import 'package:sky/widgets.dart';
+import 'package:sky/material.dart';
 import 'package:test/test.dart';
 
 import 'widget_tester.dart';