title: GridView.builder and Image.network perfomance issue
body: <p>I'm trying to show a grid of 40 images from pisum.photos. I fill the list of URLs with an asynchronous function. The images are then displayed using gridview.</p>
  <p>And it works, but I have serious performance issues (15-20 fps when scrolling). I googled so many times and found nothing. What am I doing wrong?</p>
  <p>My code:</p>
  <pre class="lang-dart prettyprint-override"><code>import 'package:flutter/material.dart';
  import 'package:http/http.dart' as http;
  import 'dart:convert';
  
  void main() {
    runApp(MyApp());
  }
  
  class MyApp extends StatelessWidget {
    @override
    Widget build(BuildContext context) {
      return MaterialApp(
        title: 'Flutter Demo',
        theme: ThemeData(
          primarySwatch: Colors.purple,
          visualDensity: VisualDensity.adaptivePlatformDensity,
        ),
        home: MainList(),
      );
    }
  }
  
  class MainList extends StatefulWidget {
    @override
    _MainListState createState() =&gt; _MainListState();
  }
  
  class _MainListState extends State&lt;MainList&gt; {
    List&lt;String&gt; images = &lt;String&gt;[];
  
    Future&lt;void&gt; fillList() async {
      // Fill the list with links
      var json = jsonDecode(
          (await http.get(&quot;https://picsum.photos/v2/list?limit=40&quot;)).body);
      setState(() {
        Map&lt;String, dynamic&gt; item;
        for (item in json) {
          images.add(item['download_url']);
        }
      });
    }
  
    @override
    Widget build(BuildContext context) {
      return Scaffold(
          appBar: AppBar(
            title: Text(&quot;Displaying Images&quot;),
          ),
          body: GridView.builder(
            itemCount: images.length,
            gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
              crossAxisCount: 2,
            ),
            itemBuilder: (BuildContext context, int index) {
              return Container(
                child: Image.network(images[index], fit: BoxFit.cover),
              );
            },
          ));
    }
  
    @override
    void initState() {
      super.initState();
      fillList();
    }
  }
  
  </code></pre>