import 'package:flutter/material.dart'; import 'package:english_words/english_words.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Startup Name Generator', home: RandomWords(), theme: ThemeData( primaryColor: Colors.white, )); } } class RandomWordsState extends State { final List _suggestions = []; final TextStyle _biggerfont = const TextStyle(fontSize: 18.0); final Set _saved = Set(); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Startup Name Generator'), actions: [ IconButton(icon: Icon(Icons.list), onPressed: _pushSaved) ], ), body: _buildSuggestions()); } void _pushSaved() { Navigator.of(context).push( MaterialPageRoute( // Add 20 lines from here... builder: (BuildContext context) { final Iterable tiles = _saved.map( (WordPair pair) { return ListTile( title: Text( pair.asPascalCase, style: _biggerfont, ), ); }, ); final List divided = ListTile.divideTiles( context: context, tiles: tiles, ).toList(); return Scaffold( appBar: AppBar( title: Text('Saved Suggestions'), ), body: ListView(children: divided), ); }, ), ); } Widget _buildSuggestions() { return ListView.builder( padding: const EdgeInsets.all(16.0), itemBuilder: (context, i) { if (i.isOdd) return Divider(); final index = i ~/ 2; if (index >= _suggestions.length) { _suggestions.addAll(generateWordPairs().take(10)); } return _buildRow(_suggestions[index]); }, ); } Widget _buildRow(WordPair pair) { final bool alreadySaved = _saved.contains(pair); return ListTile( title: Text(pair.asPascalCase, style: _biggerfont), trailing: Icon(alreadySaved ? Icons.favorite : Icons.favorite_border, color: alreadySaved ? Colors.red : null), onTap: () { setState(() { if (alreadySaved) { _saved.remove(pair); } else { _saved.add(pair); } }); }, ); } } class RandomWords extends StatefulWidget { @override RandomWordsState createState() => RandomWordsState(); }