Buscar pacotes, repositórios e categorias de apps

Detalhes do pacotev1.0.5

visibility_aware_state

Um estado para StatefulWidgets que é consciente de sua visibilidade.

AndroidiOSWebmacOSWindowsLinux
Downloads em 30 dias
1,1 mil
Curtidas
34
Pontos Pub
150

Instalar pacote

flutter pub add visibility_aware_state

Visão geral do pacote

Orientação gerada a partir de informações públicas. Apenas para referência.

Um pacote Flutter que estende StatefulWidget para gerenciar estado com base na visibilidade do widget. Ele detecta automaticamente quando um widget se torna visível ou oculto na viewport, permitindo gerenciamento eficiente de recursos e desempenho otimizado. Ideal para animações, reprodução de vídeo ou busca de dados que só devem ocorrer quando o usuário pode ver o widget. O pacote se integra perfeitamente aos StatefulWidgets existentes sem exigir mudanças significativas no código.

Casos de uso

  • Otimizando animações com base na visibilidade
  • Gerenciando reprodução de vídeo ou áudio
  • Conteúdo de carregamento preguiçoso
  • Reduzindo o uso da CPU para widgets fora da tela
  • Gerenciamento de gatilhos baseados em rolagem

Principais recursos

  • Detecção automática de visibilidade
  • Boilerplate mínimo
  • Compatível com StatefulWidgets existentes
  • Suporta todas as principais plataformas
  • Gerenciamento eficiente de recursos

Indicado para

  • Desenvolvedores otimizando o desempenho do aplicativo
  • Aplicativos com listas ou carrosséis roláveis
  • Aplicações com grande uso de mídia
  • Aplicativos que precisam de carregamento preguiçoso

Considerações

  • Pode não funcionar como esperado em layouts aninhados complexos
  • Requer manipulação cuidadosa em objetos de renderização personalizados
  • Limitado à visibilidade dentro da área visível
  • Não adequado para rastreamento de estado não-UI
  • Depende da estrutura correta da árvore de widgets

README original

Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.

visibility_aware_state

A state for StatefulWidgets that is aware of its visibility.

That can be useful for screen view tracking or e.g. if your app shows files it can be used to automatically refresh the files when the app is reopened again.

In Android, Activity classes had the onResume() method. In Flutter widgets this is missing. This library offers void onVisibilityChanged(WidgetVisibility visibility) to do something similar.

Features

Notice when:

  • the app is put in the background or brought out of the background
  • the widget initially becomes visible
  • the widget becomes invisible (a new page is pushed)
  • the widget is removed from stack
  • the widget becomes visible again (e.g. back button on Android is pressed)

Close the current screen via finish() like in Android.

Check if the widget is currently visible using bool isVisible().

Getting started

In the pubspec.yaml of your flutter project, add the following dependency:

dependencies:
  ...
  visibility_aware_state: <latest_version>

In your library add the following import:

import 'package:visibility_aware_state/visibility_aware_state.dart';

For help getting started with Flutter, view the online documentation.

Example

class Example extends StatefulWidget {
  @override
  _ExampleState createState() => _ExampleState();
}

class _ExampleState extends VisibilityAwareState<Example> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Example app'),
      ),
      body: Center(
        child: Text('Welcome to visibility_aware_state example app.'),
      ),
    );
  }

  @override
  void onVisibilityChanged(WidgetVisibility visibility) {
    // TODO: Use visibility
    super.onVisibilityChanged(visibility);
  }
}

Here is a specific example where the visibility is used for screen view tracking:

import 'package:flutter/widgets.dart';
import 'package:visibility_aware_state/visibility_aware_state.dart';

import 'tracker.dart';

abstract class ScreenState<T extends StatefulWidget>
    extends VisibilityAwareState<T> with Screen {

  @override
  void onVisibilityChanged(WidgetVisibility visibility) {
    if (visibility == WidgetVisibility.VISIBLE) {
      Tracker().trackScreen(this);
    }
    super.onVisibilityChanged(visibility);
  }

  @override
  String screenName() {
    return runtimeType.toString();
  }

}

mixin Screen {

  String screenName();

}

Contributions

Feel free to contribute to this project.

If you find a bug or want a feature, but don't know how to fix/implement it, please fill an issue. If you fixed a bug or implemented a new feature, please send a pull request.

Categorias

Repositório-fonte

Projetos que usam este pacote

Ainda não há dados.