Repository: flutter
Issue: VideoPlayerController.seekTo() not changing video frame on iOS platform
Labels: platform-ios,a: quality,p: video_player,package,has reproducible steps,P2,found in release: 2.0,found in release: 2.1,found in release: 2.2,team-ios,triaged-ios

## Steps to Reproduce

<!-- You must include full steps to reproduce so that we can reproduce the problem. -->

1. Run `flutter create bug`.
2. Update the files as follows: 
main.dart
```
import 'package:flutter/material.dart';
import 'package:video_player/video_player.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: VideoPlayerScreen(),
    );
  }
}

class VideoPlayerScreen extends StatefulWidget {
  VideoPlayerScreen({Key key}) : super(key: key);

  @override
  _VideoPlayerScreenState createState() => _VideoPlayerScreenState();
}

class _VideoPlayerScreenState extends State<VideoPlayerScreen> {
  VideoPlayerController _controller;
  Future<void> _initializeVideoPlayerFuture;

  @override
  void initState() {
    // Create and store the VideoPlayerController. The VideoPlayerController
    // offers several different constructors to play videos from assets, files,
    // or the internet.
    _controller = VideoPlayerController.network(
      'https://flutter.github.io/assets-for-api-docs/assets/videos/butterfly.mp4',
    );

    // Initialize the controller and store the Future for later use.
    _initializeVideoPlayerFuture = _controller.initialize();

    // Use the controller to loop the video.
    _controller.setLooping(true);

    _controller.addListener(() {

    });

    super.initState();
  }

  @override
  void dispose() {
    // Ensure disposing of the VideoPlayerController to free up resources.
    _controller.dispose();

    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Butterfly Video'),
      ),
      // Use a FutureBuilder to display a loading spinner while waiting for the
      // VideoPlayerController to finish initializing.
      body: FutureBuilder(
        future: _initializeVideoPlayerFuture,
        builder: (context, snapshot) {
          if (snapshot.connectionState == ConnectionState.done) {
            // If the VideoPlayerController has finished initialization, use
            // the data it provides to limit the aspect ratio of the video.
            return AspectRatio(
              aspectRatio: _controller.value.aspectRatio,
              // Use the VideoPlayer widget to display the video.
              child: VideoPlayer(_controller),
            );
          } else {
            // If the VideoPlayerController is still initializing, show a
            // loading spinner.
            return Center(child: CircularProgressIndicator());
          }
        },
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          final _videoDurationMillis = _controller.value.duration.inMilliseconds;
          final _step = _videoDurationMillis ~/ 10;
          final int _positionWithStep = _controller.value.position.inMilliseconds + _step;
          final int _newPosition = _positionWithStep > _videoDurationMillis ? 0 : _positionWithStep;
          // Wrap the play or pause in a call to `setState`. This ensures the
          // correct icon is shown.
          setState(() {
            _controller.seekTo(Duration(milliseconds: _newPosition));
            // // If the video is playing, pause it.
            // if (_controller.value.isPlaying) {
            //   _controller.pause();
            // } else {
            //   // If the video is paused, play it.
            //   _controller.play();
            // }
          });
        },
        // Display the correct icon depending on the state of the player.
        child: Icon(
          Icons.fast_forward_sharp
          // _controller.value.isPlaying ? Icons.pause : Icons.play_arrow,
        ),
      ), // This trailing comma makes auto-formatting nicer for build methods.
    );
  }
}
```

pubspec.yaml
```
name: flutter_video_player_ios
description: Flutter app to test ios video issues with seekTo

version: 1.0.0+1

environment:
  sdk: ">=2.9.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter

  video_player: ^2.0.2
  cupertino_icons: ^1.0.0

dev_dependencies:
  flutter_test:
    sdk: flutter

flutter:
  uses-material-design: true
```

3. 
3.1 Run the app
3.2 Wait till the video will be loaded
3.3 Tap on action button to rewind the video
Under the hood I'm calling ```VideoPlayerController.seekTo()```

**Expected results:** 
Frame changes when rewinding

**Actual results:** 
Always remains 1st frame on the video player.

<details>
  <summary>Logs</summary>

<!--
      Run your application with `flutter run --verbose` and attach all the
      log output below between the lines with the backticks. If there is an
      exception, please see if the error message includes enough information
      to explain how to solve the issue.
-->

```
```
```
Analyzing bug...
No issues found! (ran in 1.4s)
```

<!-- Finally, paste the output of running `flutter doctor -v` here. -->
```
[✓] Flutter (Channel unknown, 2.0.3, on macOS 11.1 20C69 darwin-x64, locale en-UA)
    • Flutter version 2.0.3 at /Users/username/fvm/versions/2.0.3
    • Framework revision 4d7946a68d (6 days ago), 2021-03-18 17:24:33 -0700
    • Engine revision 3459eb2436
    • Dart version 2.12.2

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
    • Android SDK at /Users/username/Develop/android-sdk
    • Platform android-30, build-tools 30.0.2
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.4, Build version 12D4e
    • CocoaPods version 1.10.1

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 4.1)
    • 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
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)

[✓] IntelliJ IDEA Community Edition (version 2019.3.3)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • 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

[✓] VS Code (version 1.54.3)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension can be installed from:
      🔨 https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter

[✓] Connected device (3 available)
    • iPhone (mobile) • xxx • ios            • iOS 12.5.1
    • macOS (desktop)         • macos                                    • darwin-x64     • macOS 11.1 20C69 darwin-x64
    • Chrome (web)            • chrome                                   • web-javascript • Google Chrome 89.0.4389.90

• No issues found!
```

</details>