anchor.diff:        'white70': Colors.white70,
       }),
     ];
  -  print('This app will display a sequence of images. For each one, tap "s"');
  -  print('in the console to take a screenshot, then tap the screen to');
  -  print('advance. When all is done, a script will be dumped that shows the');
  -  print('commands to run to convert all the screenshots to images.');
  -  print('BASH: N=1 # set this to the number of the first screenshot file');
  -  Map<String, WidgetBuilder> routes = <String, WidgetBuilder>{};
  +  print(
  +    'This app will display a sequence of images. For each one, tap "s" in the console to take '
  +    'a screenshot, then tap the screen to advance. When all is done, a script will be dumped that '
  +    'shows the commands to run to convert all the screenshots to images.'
  +  );
  +  StringBuffer buffer = new StringBuffer();
     for (Page page in pages) {
  -    routes['/' + page.filename] = page.build;
  -    print('COLOR: ${page.filename}');
  +    Completer<Null> completer = new Completer<Null>();
  +    runApp(
  +      new GestureDetector(
  +        onTap: () { completer?.complete(); completer = null; },
  +        child: new MaterialApp(
  +          home: new Material(
  +            color: Colors.white,
  +            child: new Center(
  +              child: new Builder(builder: page.build),
  +            ),
  +          ),
  +        ),
  +      ),
  +    );
  +    await SchedulerBinding.instance.endOfFrame;
  +    final Rect area = page.interestingArea;
  +    buffer.writeln('BASH: convert flutter_`printf %02d \$N`.png -crop ${area.width}x${area.height}+${area.left}+${area.top} -resize \'400x600>\' ${page.filename}.png; ((N++))');
  +    await completer.future;
     }
  -  runApp(new MaterialApp(onGenerateRoute: (RouteSettings settings) {
  -    if (settings.isInitialRoute &&
  -        settings.name == Navigator.defaultRouteName) {
  -      return new MaterialPageRoute<Null>(
  -        builder: (BuildContext context) {
  -          return new HomePage(pages);
  -        },
  -        settings: settings,
  -      );
  -    } else {
  -      return new MaterialPageRoute<Null>(
  -        builder: routes[settings.name],
  -        settings: settings,
  -      );
  -    }
  -  }));
  +  debugPrint('BASH: N=1 # set this to the number of the first screenshot file\n$buffer');
   }
  
positive.code:   Widget build(BuildContext context) {
      List<Widget> items = <Widget>[];
      for (int key in keys) {
        Color textColor =
            ThemeData.estimateBrightnessForColor(swatch[key]) == Brightness.light
                ? Colors.black
                : Colors.white;
        TextStyle style = new TextStyle(color: textColor);
        String label;
        if (swatch[key].value == swatch.value) {
  
negative.code:     const SwatchPage('Colors.redAccent', Colors.redAccent, accentPalette),
      const SwatchPage('Colors.pinkAccent', Colors.pinkAccent, accentPalette),
      const SwatchPage('Colors.purpleAccent', Colors.purpleAccent, accentPalette),
      const SwatchPage('Colors.deepPurpleAccent', Colors.deepPurpleAccent, accentPalette),
      const SwatchPage('Colors.indigoAccent', Colors.indigoAccent, accentPalette),
      const SwatchPage('Colors.blueAccent', Colors.blueAccent, accentPalette),
      const SwatchPage('Colors.lightBlueAccent', Colors.lightBlueAccent, accentPalette),
      const SwatchPage('Colors.cyanAccent', Colors.cyanAccent, accentPalette),
      const SwatchPage('Colors.tealAccent', Colors.tealAccent, accentPalette),
      const SwatchPage('Colors.greenAccent', Colors.greenAccent, accentPalette),
      const SwatchPage('Colors.lightGreenAccent', Colors.lightGreenAccent, accentPalette),
      const SwatchPage('Colors.limeAccent', Colors.limeAccent, accentPalette),
      const SwatchPage('Colors.yellowAccent', Colors.yellowAccent, accentPalette),
      const SwatchPage('Colors.amberAccent', Colors.amberAccent, accentPalette),
      const SwatchPage('Colors.orangeAccent', Colors.orangeAccent, accentPalette),
      const SwatchPage('Colors.deepOrangeAccent', Colors.deepOrangeAccent, accentPalette),
      const SwatchPage('Colors.grey', Colors.grey, greyPalette),
      const ColorListPage('Colors.blacks', Colors.white, const <String, Color>{
        'black': Colors.black,
  