Repository: flutter
Issue: `TabController` notifies correct index with a delay (after the tab scroll animation ends)
Labels: framework,f: material design,waiting for PR to land (fixed),has reproducible steps,found in release: 2.2,found in release: 2.6,team-design,triaged-design

`TabController` notifies wrong index when tab is moved to the left.
 
https://user-images.githubusercontent.com/19836917/130793500-15d42eb7-b1d6-44d4-9773-3813740a541d.mov

## Steps to Reproduce
<details>
<summary>Sample code</summary>
 
```dart
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';

enum Category { a, b, c, d, e }

void main() {
  runApp(
    MaterialApp(
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const Home(),
    ),
  );
}

class Home extends StatefulWidget {
  const Home({Key? key}) : super(key: key);

  @override
  _HomeState createState() => _HomeState();
}

class _HomeState extends State<Home> with SingleTickerProviderStateMixin {
  late final TabController _tabController = TabController(
    length: Category.values.length,
    initialIndex: 0,
    vsync: this,
  );

  @override
  void initState() {
    super.initState();
    _tabController.addListener(_listenController);
  }

  @override
  void dispose() {
    _tabController
      ..removeListener(_listenController)
      ..dispose();
    super.dispose();
  }

  void _listenController() {
    setState(() {});
  }

  @override
  Widget build(BuildContext context) {
    final theme = Theme.of(context);
    return Scaffold(
      appBar: AppBar(
        title: Text(
          Category.values[_tabController.index].toString(),
        ),
      ),
      body: Column(
        children: [
          TabBar(
            controller: _tabController,
            tabs: <Widget>[
              for (final category in Category.values)
                Tab(
                  icon: Text(
                    describeEnum(category),
                    style: theme.textTheme.bodyText1,
                  ),
                ),
            ],
          ),
          Expanded(
            child: TabBarView(
              controller: _tabController,
              children: [
                for (final category in Category.values)
                  Center(
                    child: Text(
                      'content: for ${describeEnum(category)}',
                    ),
                  ),
              ],
            ),
          ),
        ],
      ),
    );
  }
}
```
</details>

1. Run the provided code sample on Simulator
2. Move the tab to the right edge
3. Move the tab to the left

**Expected results:** <!-- what did you want to see? -->
`TabController` notifies decremented index smoothly.
 
**Actual results:** <!-- what did you see? -->
`TabController` notifies wrong index when tab is moved to the left.

<details>
  <summary>Logs</summary>
 
```
heavenosk@Ryunosukes-MacBook-Air dragon_flutter % flutter analyze
Analyzing dragon_flutter...                                             
No issues found! (ran in 9.6s)
```
Sorry, I'm using IntelliJ IDEA instead of Android Studio 🙏 
```
heavenosk@Ryunosukes-MacBook-Air dragon_flutter % flutter doctor -v
[✓] Flutter (Channel stable, 2.2.3, on macOS 11.5.1 20G80 darwin-arm, locale en-JP)
    • Flutter version 2.2.3 at /Users/heavenosk/dev/dependency/flutter_versions/flutter_macos_2.2.3-stable
    • Framework revision f4abaa0735 (8 weeks ago), 2021-07-01 12:46:11 -0700
    • Engine revision 241c87ad80
    • Dart version 2.13.4

[✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
    • Android SDK at /Users/heavenosk/Library/Android/sdk
    • Platform android-31, build-tools 31.0.0
    • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7281165)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.5.1, Build version 12E507
    • CocoaPods version 1.10.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[!] Android Studio (version 2020.3)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    ✗ Unable to find bundled Java version.
    • Try updating or re-installing Android Studio.

[✓] IntelliJ IDEA Ultimate Edition (version 2021.2)
    • IntelliJ at /Applications/IntelliJ IDEA.app
    • Flutter plugin version 59.0.4
    • Dart plugin version 212.4746.57

[✓] VS Code (version 1.59.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.25.0

[✓] Connected device (2 available)
    • iPhone 12 Pro Max (mobile) • 4B1974A9-F8A0-4C59-921E-58DEA72CE90C • ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-5 (simulator)
    • Chrome (web)               • chrome                               • web-javascript • Google Chrome 92.0.4515.159

! Doctor found issues in 1 category.
```

</details>