Research: Flutter video/GIF packages for flutter_html Reader #31

Closed
opened 2026-08-03 15:00:35 +00:00 by TheAnachronism · 2 comments

Part of #30

Question

What Flutter packages and flutter_html extension patterns should the Reader media design recommend for:

  1. Direct remote video files (<video src="…mp4"> as in .scratch/rss-examples/twitter-video-example.xml) with poster, tap-to-play, and controls — no autoplay
  2. Animated GIF / image display via the existing <img> path (Image.network today), including known limits (size, animation, referrer)
  3. Any mature TagExtension / community extensions we should prefer or avoid

Constraints from the map: stay on flutter_html as primary Reader; no WebView-as-Reader; Android-first.

Capture findings under docs/research/ and link them from the resolution.

Part of #30 ## Question What Flutter packages and `flutter_html` extension patterns should the Reader media design recommend for: 1. Direct remote video files (`<video src="…mp4">` as in `.scratch/rss-examples/twitter-video-example.xml`) with poster, tap-to-play, and controls — no autoplay 2. Animated GIF / image display via the existing `<img>` path (`Image.network` today), including known limits (size, animation, referrer) 3. Any mature `TagExtension` / community extensions we should prefer or avoid Constraints from the map: stay on `flutter_html` as primary Reader; no WebView-as-Reader; Android-first. Capture findings under `docs/research/` and link them from the resolution.
Author
Owner

Resolution

Prefer video_player + a custom flutter_html <video> TagExtension/HtmlExtension (poster → tap → initialize/play, always-available controls, force no autoplay, dispose in PageView). Keep Image.network for animated GIFs (optional ImageExtension for networkHeaders / decode caps). Treat flutter_html_video as reference only — stock drop-in honors HTML autoplay, eagerly autoInitializes, skips httpHeaders, and documents muted without implementing it.

Doc (committed on research/flutter-html-video-gif):

## Resolution **Prefer `video_player` + a custom `flutter_html` `<video>` TagExtension/HtmlExtension** (poster → tap → initialize/play, always-available controls, force no autoplay, dispose in PageView). Keep **`Image.network`** for animated GIFs (optional `ImageExtension` for `networkHeaders` / decode caps). Treat **`flutter_html_video` as reference only** — stock drop-in honors HTML `autoplay`, eagerly `autoInitialize`s, skips `httpHeaders`, and documents `muted` without implementing it. Doc (committed on `research/flutter-html-video-gif`): - [`docs/research/flutter-html-video-gif.md`](https://git.anachronis.dev/TheAnachronism/tt-rss-viewer/src/branch/research/flutter-html-video-gif/docs/research/flutter-html-video-gif.md)
Author
Owner

Resolution

Prefer video_player + a custom flutter_html <video> TagExtension/HtmlExtension (poster → tap → initialize/play, always-available controls, force no autoplay, dispose in PageView). Keep Image.network for animated GIFs (optional ImageExtension for networkHeaders / decode caps). Treat flutter_html_video as reference only — stock drop-in honors HTML autoplay, eagerly autoInitializes, skips httpHeaders, and documents muted without implementing it.

Doc (committed on research/flutter-html-video-gif):

## Resolution **Prefer `video_player` + a custom `flutter_html` `<video>` TagExtension/HtmlExtension** (poster → tap → initialize/play, always-available controls, force no autoplay, dispose in PageView). Keep **`Image.network`** for animated GIFs (optional `ImageExtension` for `networkHeaders` / decode caps). Treat **`flutter_html_video` as reference only** — stock drop-in honors HTML `autoplay`, eagerly `autoInitialize`s, skips `httpHeaders`, and documents `muted` without implementing it. Doc (committed on `research/flutter-html-video-gif`): - [`docs/research/flutter-html-video-gif.md`](https://git.anachronis.dev/TheAnachronism/tt-rss-viewer/src/branch/research/flutter-html-video-gif/docs/research/flutter-html-video-gif.md)
Sign in to join this conversation.
No description provided.