title: setState doesn't update the user interface
body: <p>I've been facing some problems related to the setState function while using Stateful Widgets that <strong>updates itself</strong> with the help of Timers. The code below show 2 main classes that replicate how I came to find this error. The Text Widget "Lorem" should be inserted within 10 seconds - and it is - but it's never shown. I tried to debug the array "Items" and it <strong>does</strong> contain the "lorem" Text Widget after 5 seconds, as it should. The "build" function runs but doesn't make any difference in the UI.</p>
  
  <pre><code>class textList extends StatefulWidget {
  
    @override
    State&lt;StatefulWidget&gt; createState() =&gt;
        new _textListState();
  }
  
  class _textListState extends State&lt;textList&gt;
      with TickerProviderStateMixin {
  
    List&lt;Widget&gt; items = new List();
    Widget lorem = new textClass("Lorem");
    Timer timer;
  
    @override
    void initState() {
      super.initState();
  
      items.add(new textClass("test"));
      items.add(new textClass("test"));
  
      timer = new Timer.periodic(new Duration(seconds: 5), (Timer timer) {
        setState(() {
          items.removeAt(0);
          items.add(lorem);
        });
      });
    }
  
    @override
    void dispose() {
      super.dispose();
      timer.cancel();
    }
  
    @override
    Widget build(BuildContext context) {
      Iterable&lt;Widget&gt; content = ListTile.divideTiles(
          context: context, tiles: items).toList();
  
      return new Column(
        children: content,
      );
    }
  }
  
  class textClass extends StatefulWidget {
    textClass(this.word);
  
    final String word;
  
    @override
    State&lt;StatefulWidget&gt; createState() =&gt;
        new _textClass(word);
  }
  
  class _textClass extends State&lt;textClass&gt;
      with TickerProviderStateMixin {
    _textClass(this.word);
  
    String word;
    Timer timer;
  
    @override
    void initState() {
      super.initState();
  
      timer = new Timer.periodic(new Duration(seconds: 2), (Timer timer) {
        setState(() {
          word += "t";
        });
      });
    }
  
    @override
    void dispose() {
      super.dispose();
      timer.cancel();
    }
  
  
    @override
    Widget build(BuildContext context) {
      return new Text(word);
    }
  }
  </code></pre>
  
  <p>This is not how I came to find this error but this is the simplest way to replicate it. The main idea is: The children texts should keep updating themselves (in this case, adding "t"s in the end) and, after 5 seconds, the last of them should be replaced for the Text Widget "Lorem", what does happen in the list but not in the UI.</p>