title: TabController listener called multiple times. How does indexIsChanging work?
body: <p>I need to know which Tab is clicked. Therefore I added the <code>SingleTickerProviderStateMixin</code>, created a TabController field in my State and added a Listener (huge boilerplate IMHO...). </p>
  
  <pre><code>class Home extends StatefulWidget {
    @override
    _HomeState createState() =&gt; _HomeState();
  }
  
  class _HomeState extends State&lt;Home&gt; with SingleTickerProviderStateMixin {
    TabController _tabController;
  
    @override
    void initState() {
      super.initState();
      _tabController = new TabController(length: 2, vsync: this);
      _tabController.addListener(() {
        if (_tabController.indexIsChanging) {
          print('click, ${_tabController.index}');
        }
      });
    }
  
    @override
    Widget build(BuildContext context) {
  //...
  }
  }
  </code></pre>
  
  <p>However every time I click a Tab, multiple statements are printed instead of just one, as I expected. Why is <code>indexIsChanging</code> not working?</p>