Buscar pacotes, repositórios e categorias de apps

Detalhes do pacotev4.0.1

matrix4_transform

Uma classe auxiliar de matemática para criar facilmente transformações Matrix4, que você pode usar no parâmetro transform do Container e em outros lugares.

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

Instalar pacote

flutter pub add matrix4_transform

Visão geral do pacote

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

Um pacote leve de utilitários do Dart que simplifica a criação de transformações Matrix4 para gráficos 2D e 3D no Flutter. Ele fornece métodos intuitivos para construir matrizes de transformação para uso com widgets como Container por meio do parâmetro transform, permitindo controle preciso sobre rotação, escala, translação e inclinação. Ideal para animações, layouts personalizados e elementos de interface interativos que exigem transformações avançadas. O pacote é independente de plataforma e se integra perfeitamente em projetos Flutter.

Casos de uso

  • Animando elementos da interface com transformações complexas
  • Criando layouts personalizados 2D/3D
  • Construindo interfaces interativas baseadas em gestos
  • Implementando rotações de câmera ou visualização
  • Projetando componentes de jogo ou visualização escaláveis

Principais recursos

  • Construção simples e encadeável de matriz
  • Suporta rotação, escala, translação e inclinação
  • API intuitiva para operações de transformação comuns
  • Funciona diretamente com a propriedade transform do Container
  • Leve e sem dependências

Indicado para

  • Desenvolvedores Flutter que precisam de controle preciso de matriz
  • Designers de interface trabalhando em layouts animados ou interativos
  • Criadores de jogos ou aplicativos de visualização
  • Iniciantes aprendendo sobre transformações 3D no Flutter

Considerações

  • Não destinado a cálculos matemáticos pesados
  • Requer conhecimento dos conceitos de Matrix4
  • Limitado a utilitários relacionados à transformação
  • Sem suporte embutido para animação
  • Melhor usado junto com controladores de animação para efeitos dinâmicos

README original

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

pub package

matrix4_transform

Have you noticed the transform parameter in the Container and Transform widgets, which lets you move, rotate, resize, and flip?

This package provides a helper math class that makes it easy to create Matrix4 transformations.

Example:

// Rotates the Container 45 degrees and then
// translates 25 pixels to the right. 
Container(
   transform:
     Matrix4Transform()
       .rotateDegrees(45, origin: Offset(25, 25))
       .translate(x: 25)
       .matrix4,
   child: ...
);

To see it in action, run the example in the example tab.

How to use it

Matrix4Transform is immutable (in contrast, Matrix4 is mutable).

First create a Matrix4Transform:

Matrix4Transform();

Then call the methods to transform it. For example:

Matrix4Transform()
   .scale(1.5)
   .upRight(35)
   .rotate(pi/2);

In the end, call matrix4:

Matrix4 myMatrix 
   = Matrix4Transform()
     .scale(1.5)
     .upRight(35)
     .rotate(pi/2)
     .matrix4;                        

Note: The transformations will be applied in order, and their order may change the end result.

If you already have a matrix4 and want to further transform it, you can use the from constructor:

Matrix4 myMatrix = ...;

var myTransform = Matrix4Transform.from(myMatrix);

Methods you can use

  • rotate(double angleRadians, {Offset origin})
  • rotateDegrees(double angleDegrees, {Offset origin})
  • rotateByCenterDegrees(double angleDegrees, Size size)
  • rotateByCenter(_toRadians(angleDegrees), size)
  • translate({double x = 0, double y = 0})
  • translateOriginalCoordinates({double x = 0, double y = 0})
  • scale(double factor, {Offset origin})
  • scaleBy({double x = 1, double y = 1, Offset origin})
  • scaleHorizontally(double factor)
  • scaleVertically(double factor)
  • translateOffset(Offset offset)
  • up(double distance)
  • down(double distance)
  • right(double distance)
  • left(double distance)
  • direction(double directionRadians, double distance)
  • directionDegrees(double directionDegrees, double distance)
  • upRight(double distance)
  • upLeft(double distance)
  • downRight(double distance)
  • downLeft(double distance)
  • flipDiagonally({Offset origin})
  • flipHorizontally({Offset origin})
  • flipVertically({Offset origin})

And, of course:

  • Matrix4 toMatrix4

Tween

A Matrix4TransformTween is provided in this package, and can be used in animations.

Animate it

A Matrix4Transform can be used to animate:

  • AlignPositioned or AnimatedAlignPositioned widgets from the AlignPositioned package, that accept a Matrix4Transform directly. The center of rotation/scale can be defined by their alignment parameter.

  • Any widget that accepts a Matrix4 transformation parameter, like Container, or AnimatedContainer. Note: Since Matrix4Tween will not animate linearly as you'd expect, it's possible that the intermediary transformations will be "strange", although the start and end should be correct.


Special thanks to Martin Kamleithner and Simon Lightfoot.


By Marcelo Glasberg

glasberg.dev
github.com/marcglasberg
linkedin.com/in/marcglasberg/
twitter.com/glasbergmarcelo
stackoverflow.com/users/3411681/marcg
medium.com/@marcglasberg

My article in the official Flutter documentation:

The Flutter packages I've authored:

My Medium Articles:

Categorias

Repositório-fonte

Projetos que usam este pacote