Skip to content

[Bug report] Incorrect displays when using video_player to play a video file #1307

@dan-boudreau

Description

@dan-boudreau

Version

3.7.1

Platforms

iOS

Device Model

iPhone 13 Pro (iOS 18.5)

flutter info

[✓] Flutter (Channel stable, 3.32.8, on macOS 15.5 24F74 darwin-arm64, locale
    en-US) [268ms]
    • Flutter version 3.32.8 on channel stable at /Users/Dan/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision edada7c56e (4 weeks ago), 2025-07-25 14:08:03 +0000
    • Engine revision ef0cd00091
    • Dart version 3.8.1
    • DevTools version 2.45.1

[✗] Android toolchain - develop for Android devices [253ms]
    ✗ Unable to locate Android SDK.
      Install Android Studio from: https://developer.android.com/studio/index.html
      On first launch it will assist you in installing the Android SDK components.
      (or visit https://flutter.dev/to/macos-android-setup for detailed
      instructions).
      If the Android SDK has been installed to a custom location, please use
      `flutter config --android-sdk` to update to that location.


[✓] Xcode - develop for iOS and macOS (Xcode 16.4) [732ms]
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 16F6
    • CocoaPods version 1.16.2

[✓] Chrome - develop for the web [5ms]
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[!] Android Studio (not installed) [5ms]
    • Android Studio not found; download from
      https://developer.android.com/studio/index.html
      (or visit https://flutter.dev/to/macos-android-setup for detailed
      instructions).

[✓] VS Code (version 1.102.3) [5ms]
    • VS Code at /Users/Dan/Downloads/Visual Studio Code.app/Contents
    • Flutter extension version 3.116.0

[✓] Connected device (3 available) [6.1s]
    • Dan's iPhone (mobile) • 00008110-000624491447801E • ios            • iOS
      18.5 22F76
    • macOS (desktop)       • macos                     • darwin-arm64   • macOS
      15.5 24F74 darwin-arm64
    • Chrome (web)          • chrome                    • web-javascript • Google
      Chrome 139.0.7258.129

[✓] Network resources [292ms]
    • All expected network resources are available.

How to reproduce?

  1. Implement manage_photo to select a video.
  2. Use video_player to playback selected video.

Note: Green color tint issue not present using image_picker. Results were the same even after trying filterQuality and gaplessplayback settings. I disabled all theming in my app and still had the tint issue.

Logs

Example code (optional)

final PermissionState ps = await PhotoManager.requestPermissionExtend();
      if (!ps.isAuth) {
        if (!mounted) return;
        ScaffoldMessenger.of(
          context,
        ).showSnackBar(const SnackBar(content: Text('Gallery access denied')));
        return;
      }

      // Fetch all video assets
      final List<AssetPathEntity> albums = await PhotoManager.getAssetPathList(
        onlyAll: true,
        type: RequestType.video,
      );

      if (albums.isEmpty) return;

      final List<AssetEntity> videos = await albums.first.getAssetListPaged(
        page: 0,
        size: 100, // Fetch first 100 videos
      );

      if (videos.isEmpty) return;

      // Present a simple selection dialog
      AssetEntity? selectedVideo = await showDialog<AssetEntity>(
        context: context,
        builder: (context) {
          return SimpleDialog(
            title: const Text('Select a Video'),
            children: videos.map((v) {
              return SimpleDialogOption(
                onPressed: () => Navigator.pop(context, v),
                child: FutureBuilder<Uint8List?>(
                  future: v.thumbnailDataWithSize(const ThumbnailSize(64, 64)),
                  builder: (context, snapshot) {
                    return Row(
                      children: [
                        if (snapshot.hasData)
                          Image.memory(
                            snapshot.data!,
                            width: 64,
                            height: 64,
                            fit: BoxFit.cover,
                          )
                        else
                          Container(width: 64, height: 64, color: Colors.grey),
                        const SizedBox(width: 8),
                        Expanded(child: Text(v.title ?? 'Video')),
                      ],
                    );
                  },
                ),
              );
            }).toList(),
          );
        },
      );

      if (selectedVideo == null) return;

      final file = await selectedVideo.file;
      if (file == null || !await file.exists()) {
        ScaffoldMessenger.of(context).showSnackBar(
          const SnackBar(content: Text('Selected file not found.')),
        );
        return;
      }

      print('[DEBUG] _pickVideoFromGallery: file path ${file.path}');

      await _handleSelectedVideo(file);

// _handleSelectedVideo method pseudocode:

1) navigates user to video screen with file
2) video player plays video (no re-encoding)

Contact

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Sort: Out of supportThis issue is beyond the scope of this plugin

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions