I'm trying to use video_player in flutter to show network videos in mp4 format (https://www.heygold.com/media/reel/ThisorThat.mp4). On IOS devices it never sets _controller.value.isInitialized to true.
I'm using:
video_player: 2.4.7
Output of flutter doctor -v:
[✓] Flutter (Channel stable, 3.3.9, on macOS 12.6 21G115 darwin-arm, locale en-DE)
• Flutter version 3.3.9 on channel stable at /Users/casparbaumeister/development/flutter
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision b8f7f1f986 (2 weeks ago), 2022-11-23 06:43:51 +0900
• Engine revision 8f2221fbef
• Dart version 2.18.5
• DevTools version 2.15.0
[✓] Android toolchain - develop for Android devices (Android SDK version 32.1.0-rc1)
• Android SDK at /Users/casparbaumeister/Library/Android/sdk
• Platform android-33, build-tools 32.1.0-rc1
• Java binary at: /Users/casparbaumeister/development/Android Studio.app/Contents/jre/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 11.0.11+0-b60-7772763)
• All Android licenses accepted.
[✓] Xcode - develop for iOS and macOS (Xcode 14.1)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Build 14B47b
• CocoaPods version 1.11.3
[✓] Chrome - develop for the web
• Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
[✓] Android Studio (version 2021.1)
• Android Studio at /Users/casparbaumeister/development/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 11.0.11+0-b60-7772763)
[✓] VS Code (version 1.73.1)
• VS Code at /Users/casparbaumeister/development/Visual Studio Code.app/Contents
• Flutter extension version 3.54.0
[✓] Connected device (3 available)
• sdk gphone64 arm64 (mobile) • emulator-5554 • android-arm64 • Android 12 (API 32) (emulator)
• macOS (desktop) • macos • darwin-arm64 • macOS 12.6 21G115 darwin-arm
• Chrome (web) • chrome • web-javascript • Google Chrome 108.0.5359.94
[✓] HTTP Host Availability
• All required HTTP hosts are available
Video player page:
class ReelsPage extends StatefulWidget {
const ReelsPage({Key? key, required this.videoUrl}) : super(key: key);
final String videoUrl;
@override
_ReelsPageState createState() => _ReelsPageState();
}
class _ReelsPageState extends State<ReelsPage> {
late VideoPlayerController _controller;
@override
void initState() {
super.initState();
_controller = VideoPlayerController.network(widget.videoUrl)
..addListener(() => setState(() {}))
..setLooping(true)
..initialize().then((_) => _controller.play());
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
leading: IconButton(
icon: Icon(Icons.arrow_back_ios_new_rounded, color: GOLDISH),
onPressed: () {
Navigator.of(context).pop();
},
),
automaticallyImplyLeading: true,
backgroundColor: Colors.black,
elevation: 0,
),
body:
_controller.value.isInitialized
? show video
: Loading <- never leaves this state
)
);
}
}
My info.plist includes the following lines:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
</dict>
It works totally fine on android emulator and device. I know that it doest work on IOS emulators, but it also does not work on IOS devices. Every help is welcomed, also recommendations for other video player packages! Thanks in regard.