anchor.diff:        'white70': Colors.white70,
       }),
     ];
  -  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();
  +  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>{};
     for (Page page in pages) {
  -    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;
  -  }
  -  debugPrint('BASH: N=1 # set this to the number of the first screenshot file\n$buffer');
  -}
  +    routes['/' + page.filename] = page.build;
  +    print('COLOR: ${page.filename}');
  +  }
  +  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,
  +      );
  +    }
  +  }));
  +}
  
positive.code:           mainAxisAlignment: MainAxisAlignment.spaceBetween,
            children: <Widget>[
              new Text(label, style: style),
              new Text('0x${swatch[key].value.toRadixString(16).toUpperCase()}', style: style),
            ],
          ),
        ));
      }
      return new Container(
        key: key,
        width: 300.0,
        child: new Column(
          mainAxisSize: MainAxisSize.min,
          children: items,
        ),
      );
    }
  }
  
  
negative.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) {
  