Aus öffentlichen Paketdaten erstellte Orientierung.
Das shared_preferences_tvos-Paket bietet eine tvOS-spezifische Implementierung des Flutter-plugins shared_preferences und ermöglicht eine dauerhafte Schlüssel-Wert-Speicherung auf Apple TV-Geräten. Für das Flutter-Framework unter tvOS entwickelt, erlaubt es Entwicklern, einfache Daten wie Benutzereinstellungen, Einstellungen oder Sitzungsstatus über Neustarts hinweg zu speichern und abzurufen. Dieses Paket ist Teil des flutter-tvos-Ökosystems und gewährleistet nahtlose Integration mit den nativen Speichermechanismen von tvOS. Es unterstützt grundlegende Operationen wie setString, getString und remove, was es ideal für leichte Datendauerhaftigkeit in tvOS-Anwendungen macht.
Anwendungsfälle
Speichern von Benutzereinstellungen für Apple TV-Apps
App-Einstellungen zwischen Sitzungen beibehalten
Anmeldestatus oder Theme-Einstellungen speichern
Kleine Mengen Benutzerdaten zwischenspeichern
Sitzungstoken in tvOS-Apps verwalten
Hauptmerkmale
Native tvOS-Speicherintegration
Einfache Schlüssel-Wert-API
Datenpersistenz über Sitzungen hinweg
Leichtgewichtig und schneller Zugriff
Kompatibel mit Flutter auf tvOS
Geeignet für
Flutter-Entwickler, die sich auf Apple TV konzentrieren
Apps mit minimalem lokalen Speicherbedarf
Projekte, die das shared_preferences-Muster verwenden
tvOS-spezifische oder mehrplattformige Apps mit tvOS-Unterstützung
Entwickler, die die flutter-tvos-Plugin-Suite nutzen
Originaler README-Schnappschuss aus dem verknüpften Quell-Repository. Aktuelle Inhalte finden Sie im Repository.
FlutterTV Plugins
Flutter plugins with Apple TV (tvOS) support, maintained by the
fluttertv.dev organization.
These are companions to flutter-tvos
— the Flutter tvOS custom embedder. Most are federated *_tvos
implementations of popular pub.dev plugins, produced with the
flutter-tvos plugin port tool and finished/verified by hand.
Published on pub.dev under the
fluttertv.dev
verified publisher. Add them like any other plugin (<name>_tvos: ^0.0.1).
List of plugins
Every plugin below has a tvOS implementation; full details (API
coverage, disabled regions, and porting notes) are available in each
package's README.md and PORTING_REPORT.md.
Then use the upstream plugin's API exactly as on iOS — the tvOS
implementation registers automatically. Once published these become
plain ^version dependencies.
A few packages need a writable directory and therefore also
path_provider_tvos: e.g. video_player_tvos (for
VideoPlayerController.file) and sqflite_tvos (for the database
path). Their READMEs note this.
How this repository was created
These packages were not hand-written from scratch. They were produced
with the flutter-tvos plugin port tool (part of
flutter-tvos) and then
verified — and where needed finished — by hand. This is the exact,
reproducible workflow.
For the full porter reference — every flag, what the transformer
does and doesn't do, and how to read the generated PORTING_REPORT.md
— see Porting an existing plugin
in the flutter-tvos docs. The summary below is the recipe we used to
produce this repo.
flutter-tvos plugin port takes an existing Apple plugin (the iOS or
macOS implementation package) and emits a federated *_tvos package.
# from a published pub.dev package (what we used):$TVOS plugin port --from-pub video_player_avfoundation \
--output plugins/packages/video_player_tvos --include-example
# or from git, or from a local path:$TVOS plugin port --from-git https://github.com/foo/bar.git --ref main --output ...
$TVOS plugin port ../some_plugin_ios --output ...
The exact upstream source for each package is recorded at the top of
its PORTING_REPORT.md (e.g. video_player_tvos ←
video_player_avfoundation, shared_preferences_tvos ←
shared_preferences_foundation, audioplayers_tvos ←
audioplayers_darwin).
What the porter does automatically:
Copies the upstream Dart lib/ (rewriting package: self-imports)
and federates through the upstream *_platform_interface.
Copies the native Swift/Objective-C into tvos/Classes/ and
generates a tvOS *.podspec (no dependency on the Flutter
CocoaPod — tvOS resolves Flutter.framework via search paths).
Makes tvOS follow the iOS code paths: widens #if os(iOS) →
(os(iOS) || os(tvOS)), ObjC #if TARGET_OS_IOS →
(TARGET_OS_IOS || TARGET_OS_TV), and @available / #available
/ API_AVAILABLEiOS <v> → also tvOS <v>.
Collapses modern multi-target / include/-modular SwiftPM packages
into one CocoaPods module (drops the macOS-only target).
Sets FLTAssetsPath so plugin asset lookup resolves on a real
Apple TV; sanitizes example pub-workspace / dependency_overrides
wiring.
Graceful partial port: an API that genuinely doesn't exist on
tvOS, used at type/top-level scope, is wrapped in #if !os(tvOS) /
#if !TARGET_OS_TV so the package still compiles with that feature
disabled, and every such region is listed in PORTING_REPORT.md
under "Disabled on tvOS". A compatibility database
(WebKit, SafariServices, CoreLocation, CoreTelephony,
AVAudioSession routing options, …) drives this.
2. Read the porting report
Every package gets a PORTING_REPORT.md: the source + version, the
tvOS build outlook, methods ported/stubbed, every disabled region with
the reason, and a checklist. Read it before trusting a port.
3. Verify
cd plugins/packages/<pkg>/example
flutter pub get
$TVOS build tvos --simulator --debug # must be green$TVOStest integration_test/<plugin>_test.dart -d <sim-udid>
# on a physical Apple TV (set your signing team):
DEVELOPMENT_TEAM=XXXXXXXXXX $TVOS run -d <device-udid>
Only a green simulator build (and, ideally, passing integration tests
on a real Apple TV) qualifies a package for this list.
4. Hand-finish where the porter can't
The porter is honest about its limits; some packages needed manual
work, all of it documented in their PORTING_REPORT.md:
path_provider_tvos — path_provider_foundation is a
dart:ffi/native-assets plugin the tvOS toolchain can't build, so the
porter only emits a skeleton. A real native implementation
(NSSearchPathForDirectoriesInDomains / NSTemporaryDirectory) was
written by hand.
flutter_secure_storage_tvos — Keychain works on tvOS; the
optional LAContext / .biometryAny / Secure-Enclave biometric
path (which tvOS lacks) was guarded out by hand.
audioplayers_tvos, flutter_tts_tvos — AVAudioSession
category options that don't exist on tvOS
(allowBluetooth, defaultToSpeaker, …) were mapped to no-ops.
sqflite_tvos — re-ported once the porter learned to collapse
single-target include/-modular SwiftPM packages.
5. Curate
Packages whose primary purpose can't work on tvOS, or that don't
build after best-effort, are removed rather than published broken (see
Evaluated but not provided).
See AUTHORING.md for the deeper per-plugin recipe.
Repository layout
plugins/├──packages/<plugin>_tvos/# one directory per plugin│├──lib/# Dart (federated impl)│├──tvos/Classes/# native Swift/ObjC│├──tvos/<plugin>.podspec# CocoaPods spec, tvOS 13+│├──example/# runnable tvOS example│├──PORTING_REPORT.md# port detail + checklist│├──README.mdCHANGELOG.mdLICENSE└──AUTHORING.md# how to add a new one
Contributing
Federate via the upstream *_platform_interface; suffix _tvos.
Target tvOS 13.0+; guard shared iOS code with #if os(tvOS).
Document API support and any disabled regions in the package README.md
and PORTING_REPORT.md so users can assess compatibility.