Buscar pacotes, repositórios e categorias de apps

Capa de scaled_app
Detalhes do pacotev2.3.2

scaled_app

Dimensione proporcionalmente todo o design da interface do usuário, útil quando seu design de interface do usuário tem largura fixa.

AndroidiOSWebmacOSWindowsLinux
Downloads em 30 dias
49,8 mil
Curtidas
96
Pontos Pub
160

Instalar pacote

flutter pub add scaled_app

Visão geral do pacote

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

Scaled_App é um pacote Flutter que permite o dimensionamento proporcional de toda a interface com base em uma largura de design de referência. Ele garante layout e tipografia consistentes em diferentes tamanhos de tela ao dimensionar dinamicamente os widgets. Ideal para designs com base em largura fixa, mantém a fidelidade visual sem ajustes manuais. O pacote suporta todas as principais plataformas, incluindo móvel, web e desktop, tornando-o adequado para aplicativos multiplataforma que exigem controle preciso da interface.

Casos de uso

  • Adaptação de design de largura fixa
  • Consistência da interface do usuário multiplataforma
  • Escalonamento de layout responsivo
  • Implementação do sistema de design
  • Precisão da interface em dispositivos

Principais recursos

  • Dimensionamento proporcional da interface do usuário
  • Suporte à largura de design de referência
  • Compatibilidade multiplataforma
  • Redimensionamento automático de widget
  • Configuração mínima necessária

Indicado para

  • Desenvolvedores com especificações de design de largura fixa
  • Equipes usando sistemas de design
  • Aplicativos direcionados a múltiplos tamanhos de tela
  • Projetos que exigem replicação de UI pixel-perfeita
  • Aplicativos Flutter com restrições de design rigorosas

Considerações

  • Mais adequado para fluxos de trabalho de design com largura fixa
  • Pode exigir configuração inicial para largura de referência
  • Não ideal para layouts fluidos ou dinâmicos
  • Impacto no desempenho é negligível, mas depende da complexidade
  • Requer testes cuidadosos nos dispositivos-alvo

README original

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

Scale the entire UI design proportionally.

Button, image, font, every widget is scaled simultaneously.

Before:

  • 250x250 square is the same size across devices

Screenshots of the same design before scaling

After:

  • 250x250 square is two thirds the screen width across devices

Screenshots of the same design after scaling

  • if we resize the screenshots above to be the same width
  • then everything appears the same size as below

Resized screenshots of the same design after scaling

Sponsor

庞征博引 — 想学的,慢慢都会

This package is sponsored by 庞征博引, which breaks complex subjects into 5–10 minute reads you work through, and ask questions about, at your own pace.

Live demo

https://lastmonopoly.github.io/flutter_web_app/scaled_app_demo/

Features

Use this package in your Flutter app when:

  • your UI design is fixed-width
  • you want to scale the entire UI, not just part of it

Usage

Firstly, replace runApp with runAppScaled

void main() {
  // 1st way to use this package
  runAppScaled(const MyApp(), scaleFactor: (deviceSize) {
    // screen width used in your UI design
    const double widthOfDesign = 375;
    return deviceSize.width / widthOfDesign;
  });
}

Or, replace WidgetsFlutterBinding with ScaledWidgetsFlutterBinding

void main() {
  // 2nd way to use this package
  // Scaling will be applied based on [scaleFactor] callback.
  ScaledWidgetsFlutterBinding.ensureInitialized(
    scaleFactor: (deviceSize) {
      // screen width used in your UI design
      const double widthOfDesign = 375;
      return deviceSize.width / widthOfDesign;
    },
  );
  runApp(const MyApp());
}

Then, use MediaQueryData.scale to scale size, viewInsets, viewPadding, etc.

class PageRoute extends StatelessWidget {
  const PageRoute({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MediaQuery(
      data: MediaQuery.of(context).scale(),
      child: const Scaffold(...),
    );
  }
}

Optionally, update ScaledWidgetsFlutterBinding.instance.scaleFactor to enable / disable scaling on demand.

Reference

https://juejin.cn/post/7078816723666731021

Categorias

Repositório-fonte

Projetos que usam este pacote

Rankings