【Flutter】アプリ内のページの背景色をつけてListView表示してみた。

開発環境
⭐️Flutter
（flutter_macos_v1.9.1+hotfix.5-stable）

⭐️Android Studio 3.5.1
⭐️Xcode１１.２ beata

↓↓↓実際に動かした動画です。
https://twitter.com/nonnonkapibara/status/1188395571918200833
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">🧸🧸Flutter(フラッター)🧸🧸<br>アプリ内のページの背景色をつけてListView表示してみたよぉ😊<a href="https://t.co/TiXuC56nlc">https://t.co/TiXuC56nlc</a><a href="https://twitter.com/hashtag/flutter?src=hash&amp;ref_src=twsrc%5Etfw">#flutter</a> <a href="https://t.co/PLKtZtgNgE">pic.twitter.com/PLKtZtgNgE</a></p>&mdash; non (@nonnonkapibara) <a href="https://twitter.com/nonnonkapibara/status/1188395571918200833?ref_src=twsrc%5Etfw">October 27, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

↓↓↓TOBE　
アプリ内のページの背景色、薄いピンクを設定しました。
<img width="998" alt="スクリーンショット 2019-10-27 10.57.37.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/def216bb-09e5-137c-0d68-b4e6b128ff66.png">

↓↓↓実際の画面は、こんな感じです。
（図は、Androidのエミレーター起動のキャプチャです。）


<img width="584" alt="スクリーンショット 2019-10-27 11.04.06.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/15b51667-15a8-6d01-b47f-e05a508cbb09.png">

<img width="556" alt="スクリーンショット 2019-10-27 11.04.50.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/90e8c094-a22b-fdad-dae7-2cfbb18eef22.png">

<img width="506" alt="スクリーンショット 2019-10-27 11.05.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/482d67a4-f4a2-2926-950b-87b27eceec0c.png">

<img width="571" alt="スクリーンショット 2019-10-27 11.06.06.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/6edc8084-2155-1893-2613-5033ebb1e8c0.png">


ここからは、詳細説明です。
## 準備
英語の単語をListViewに表示し、ListViewに表示するチェックON、OFFのアイコンを設定するので準備をする。


「pubspec.yaml」のdev_dependenciesに
「cupertino_icons: ^0.1.2」と「english_words: ^3.1.0」を入力する

```
  cupertino_icons: ^0.1.2
  english_words: ^3.1.0
```
<img width="1000" alt="スクリーンショット 2019-10-27 10.40.56.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/e16138c2-6167-00e6-9f6e-5dac024e52d9.png">

## dev_dependenciesの設定
「cupertino_icons: ^0.1.2」と「english_words: ^3.1.0」それぞれ
「Packages get」 を選択する

「cupertino_icons: ^0.1.2」「Packages get」 を選択する
<img width="1004" alt="スクリーンショット 2019-10-27 10.45.19.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/0b06d860-4ef4-48c8-ecf8-c9ee3e2de2a8.png">


「english_words: ^3.1.0」「Packages get」 を選択する
<img width="967" alt="スクリーンショット 2019-10-27 11.00.59.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/15737142-e9c8-93bb-54a1-99d99a9f1b2a.png">



## import定義
main.dartに「import 'package:english_words/english_words.dart';」を入力する

```

import 'package:english_words/english_words.dart';
```

<img width="998" alt="スクリーンショット 2019-10-27 10.47.47.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/aaba1a70-6655-11f5-0717-b7e86273507b.png">



■main.dart

```Dart

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: 'のんちゃん Demo',
      theme: ThemeData(
        primaryColor: Colors.pink,
        scaffoldBackgroundColor: Colors.pink[50] ,
      ),
      home: RandomWords(),
    );
  }
}

class RandomWordsState extends State<RandomWords> {
  final _suggestions = <WordPair>[];
  final Set<WordPair> _saved = Set<WordPair>();
  final _biggerFont = const TextStyle(fontSize: 18.0);

  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)); /*4*/
          }
          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.check_box : Icons.check_box_outline_blank,
        color: alreadySaved ? Colors.deepPurpleAccent : null,
      ),
      onTap: () {
        setState(() {
          if (alreadySaved) {
            _saved.remove(pair);
          } else {
            _saved.add(pair);
          }
        });
      },
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('のんちゃん Demo List View'),
        actions: <Widget>[
          IconButton(icon: Icon(Icons.list), onPressed: _pushSaved),
        ],
      ),
      body: _buildSuggestions(),
    );
  }

  void _pushSaved() {
    Navigator.of(context).push(
      MaterialPageRoute<void>(
        builder: (BuildContext context) {
          final Iterable<ListTile> tiles = _saved.map(
                (WordPair pair) {
              return ListTile(
                title: Text(
                  pair.asPascalCase,
                  style: _biggerFont,
                ),
              );
            },
          );
          final List<Widget> divided = ListTile.divideTiles(
            context: context,
            tiles: tiles,
          ).toList();

          return Scaffold(
            appBar: AppBar(
              title: Text('チェックON List'),
            ),
            body: ListView(children: divided),
          );
        },
      ),
    );
  }
}

class RandomWords extends StatefulWidget {
  @override
  RandomWordsState createState() => RandomWordsState();
}

```

完成！！

以下は、iPhone11 Proのシュミレーター起動のキャプチャです。
<img width="411" alt="スクリーンショット 2019-10-27 10.12.21.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/e1a28195-4e3d-c35c-1226-b345f28c6230.png">

<img width="430" alt="スクリーンショット 2019-10-27 10.12.33.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/ba937a90-2703-58a8-e214-db4aecdec619.png">

<img width="429" alt="スクリーンショット 2019-10-27 10.12.45.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/fb3fdc80-90ae-ee20-7af9-c672894b8c5f.png">



※下記のFlutterのSampleを元に、作りました。
Write Your First Flutter App, part 1
https://codelabs.developers.google.com/codelabs/first-flutter-app-pt1/#0