Orientação gerada a partir de informações públicas. Apenas para referência.
O pip_plugin é um pacote Flutter que permite aos desenvolvedores exibir sobreposições de texto personalizáveis no modo Picture-in-Picture (PiP) em Android, iOS, Web, macOS, Windows e Linux. Ele fornece uma API consistente para mostrar camadas de texto flutuantes sobre janelas PiP, útil para anotações, cronômetros ou indicadores de status. O plugin se integra perfeitamente à arquitetura multiplataforma do Flutter e suporta atualizações dinâmicas de conteúdo. É projetado para aplicativos que exigem feedback visual persistente durante a reprodução de vídeo ou cenários de multitarefa.
Casos de uso
Transmissão ao vivo com rótulos na tela
Aplicativos educacionais com anotações em tempo real
Conferência de vídeo com sobreposições de status do participante
Aplicativos de multitarefa que precisam de dicas de interface persistentes
Tutoriais interativos com instruções guiadas
Principais recursos
sobreposições de texto PiP multiplataforma
Estilo e posicionamento de texto personalizáveis
Atualizações de conteúdo dinâmico sem reinício
Suporta todas as principais plataformas desktop e móveis
Integração simples por meio do Flutter pub
renderização de sobreposição em tempo real
Indicado para
Desenvolvedores construindo aplicativos Flutter ricos em mídia
Aplicativos que exigem informações persistentes na tela no PiP
Aplicações educacionais ou de treinamento
Plataformas de streaming ou eventos ao vivo
Interfaces de multi-janela ou multitarefa
Considerações
Requer suporte a modo PiP na plataforma de destino
A visibilidade do texto pode variar em diferentes tamanhos de tela
Impacto no desempenho com atualizações frequentes
Limitado a sobreposições somente de texto (sem imagens ou widgets complexos)
O comportamento específico de plataforma do PiP pode afetar o layout
README original
Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.
pip_plugin
⚠️ Experimental
A Flutter plugin that enables a customizable Picture-in-Picture window displaying text.
pip_plugin is an experimental Flutter plugin that lets you display text overlays in Picture-in-Picture mode on Android, iOS, Web, and Desktop. It exposes a simple Dart API to configure the PiP window’s appearance and control its lifecycle.
Wrap your main activity with the provided helper—this is the simplest integration.
Kotlin
import cl.puntito.simple_pip_mode.PipCallbackHelperActivityWrapper
class MainActivity: PipCallbackHelperActivityWrapper() {
// No additional code needed
}
Java
import cl.puntito.simple_pip_mode.PipCallbackHelperActivityWrapper;
public class MainActivity extends PipCallbackHelperActivityWrapper {
// No additional code needed
}
Once inherited, PiP callbacks and the PiP widget become available automatically.
2. Callback Helper
If you prefer not to subclass your activity, you can manually wire up the callbacks:
Kotlin
import cl.puntito.simple_pip_mode.PipCallbackHelper
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.embedding.android.FlutterActivity
import android.content.res.Configuration
class MainActivity: FlutterActivity() {
private val pipHelper = PipCallbackHelper()
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
super.configureFlutterEngine(flutterEngine)
pipHelper.configureFlutterEngine(flutterEngine)
}
override fun onPictureInPictureModeChanged(
isInPipMode: Boolean,
newConfig: Configuration?
) {
super.onPictureInPictureModeChanged(isInPipMode, newConfig)
pipHelper.onPictureInPictureModeChanged(isInPipMode)
}
}
Java
import cl.puntito.simple_pip_mode.PipCallbackHelper;
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.embedding.android.FlutterActivity;
import android.content.res.Configuration;
public class MainActivity extends FlutterActivity {
private final PipCallbackHelper pipHelper = new PipCallbackHelper();
@Override
public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
super.configureFlutterEngine(flutterEngine);
pipHelper.configureFlutterEngine(flutterEngine);
}
@Override
public void onPictureInPictureModeChanged(
boolean isInPipMode,
Configuration newConfig
) {
super.onPictureInPictureModeChanged(isInPipMode, newConfig);
pipHelper.onPictureInPictureModeChanged(isInPipMode);
}
}
iOS
In your Info.plist, add PiP to the background modes:
Import the main plugin class and manage PiP mode:
⚠️ Initialize first: call setupPip(...) before using other PiP methods.
/// Prepares PiP with an optional title and configuration.Future<bool> setupPip({
/// On desktop platforms, you can optionally set a `windowTitle`.String? windowTitle,
PipConfiguration? configuration,
});
/// Enters Picture-in-Picture mode.Future<bool> startPip();
/// Exits Picture-in-Picture mode./// (On Android this is a no-op, as PiP closes automatically.)Future<bool> stopPip();
/// Returns whether PiP is supported on the current platform.Future<bool> isPipSupported();
/// Dynamically updates the PiP window’s appearance:/// - backgroundColor, textColor, textSize, textAlign, ratioFuture<bool> update({
Color? backgroundColor,
Color? textColor,
double? textSize,
/// Only `left`, `right`, and `center` are supported.TextAlign? textAlign,
/// ignored on Web platforms.
(int, int)? ratio,
});
/// Changes the displayed text in PiP.Future<bool> updateText(String text);
/// Emits `true`/`false` whenever PiP becomes active/inactive.Stream<bool> get pipActiveStream;
/// Whether the plugin has been initialized.boolget isInitialized;
/// Releases any resources held by the plugin.voiddispose();
Showing Text in PiP
Android: Wrap your UI with the built-in TextPipWidget to render the PiP text overlay, then drive it with the plugin API.
All other platforms: No widget required—just invoke the PipPlugin methods directly.