Pakete, Repositories und App-Kategorien suchen

Paketdetailsv4.0.1

matrix4_transform

Eine Hilfsklasse für Mathematik zum einfachen Erstellen von Matrix4-Transformationen, die Sie im transform-Parameter des Containers und an anderen Stellen verwenden können.

AndroidiOSWebmacOSWindowsLinux
30-Tage-Downloads
73.100
Likes
185
Pub-Punkte
150

Paket installieren

flutter pub add matrix4_transform

Paketübersicht

Aus öffentlichen Paketdaten erstellte Orientierung.

Ein leichtgewichtiger Dart-Utility-Package, der die Erstellung von Matrix4-Transformationen für 2D- und 3D-Grafiken in Flutter vereinfacht. Er bietet intuitive Methoden zum Erstellen von Transformationsmatrizen für die Verwendung mit Widgets wie Container über den transform-Parameter, wodurch eine präzise Steuerung von Rotation, Skalierung, Translation und Verzerrung möglich ist. Ideal für Animationen, benutzerdefinierte Layouts und interaktive UI-Elemente, die erweiterte Transformationen erfordern. Das Paket ist plattformunabhängig und lässt sich nahtlos in Flutter-Projekte integrieren.

Anwendungsfälle

  • Animation von Benutzeroberflächenelementen mit komplexen Transformationen
  • Benutzerdefinierte 2D/3D-Layouts erstellen
  • Interaktive, gestenbasierte Schnittstellen erstellen
  • Kamera- oder Ansichtsrotationen implementieren
  • Skalierbare Spiel- oder Visualisierungskomponenten gestalten

Hauptmerkmale

  • Einfache, verkettbare Matrixerstellung
  • Unterstützt Rotation, Skalierung, Translation und Scherung
  • Intuitive API für häufige Transformationsoperationen
  • Arbeitet direkt mit der transform-Eigenschaft von Container
  • Leichtgewichtig und abhängigkeitsfrei

Geeignet für

  • Flutter-Entwickler, die präzise Matrixsteuerung benötigen
  • UI-Designer, die an animierten oder interaktiven Layouts arbeiten
  • Entwickler von Spielen oder Visualisierungsanwendungen
  • Anfänger lernen über 3D-Transformationen in Flutter

Hinweise

  • Nicht für intensive mathematische Berechnungen vorgesehen
  • Erfahrung mit Matrix4-Konzepten erforderlich
  • Beschränkt auf Transformations-Utilities
  • Keine eingebaute Animationsunterstützung
  • Am besten zusammen mit Animationscontrollern für dynamische Effekte verwendet

Original-README

Originaler README-Schnappschuss aus dem verknüpften Quell-Repository. Aktuelle Inhalte finden Sie im Repository.

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:

Kategorien

Quell-Repository

Projekte, die dieses Paket verwenden