directional_rotation

A widget that implicitly rotates its child to the provided angle in the direction allowed by the constraints: closest, furthest, clockwise, or counter-clockwise.

Usage

import 'package:directional_rotation/directional_rotation.dart';

DirectionalRotation accepts an angle, in degrees by default, and implicitly rotates its child to the angle whenever the angle is updated.

/// Whenever [angle] is modified, the [DirectionalRotation]
/// will rotate its child to the new [angle].
var angle = 180.0;

DirectionalRotation(
  angle: angle,
  child: MyWidget(),
);

Scale

The angle can be normalized to any scale. By default, angle equates to degrees (a scale of 360.)

/// This [DirectionalRotation] is normalized to a `0` to `1` scale and currently
/// rotated to `0.5`, which is the equivalent of `180` on the default scale.
DirectionalRotation(
  angle: 0.5,
  scale: 1.0,
  child: MyWidget(),
);

Duration

With the default settings, the duration of each animation will be factored by the difference between the old angle and the new angle, whenever angle is updated. In this case, duration will equate to one whole rotation.

factorDuration can be set to false to have each animation last the entire duration.

duration defaults to 1 second.

/// If [angle] was changed from `0` to `180`, the duration of the
/// animation would be factored by `0.5` and last `500` milliseconds.
DirectionalRotation(
  angle: 180,
  duration: Duration(seconds: 1),
  child: MyWidget(),
);

/// In this case, where [factorDuration] is `false`, the duration
/// will last for the entire second.
DirectionalRotation(
  angle: 180,
  duration: Duration(seconds: 1),
  factorDuration: false,
  child: MyWidget(),
);

Directionality

By default the child will rotate in the direction that has the shorest span to the new angle from the current angle, whenever angle is updated.

Direction can be set to change how the direction of the rotation is determined.

/// This [DirectionalRotation] will only rotate its child
/// in a clockwise direction.
DirectionalRotation(
  angle: 0,
  direction: RotationDirection.clockwise,
  child: MyWidget(),
);

/// This [DirectionalRotation] will only rotate its child
/// in a counter-clockwise direction.
DirectionalRotation(
  angle: 0,
  direction: RotationDirection.counterClockwise,
  child: MyWidget(),
);

/// This [DirectionalRotation] will rotate its child in the direction with
/// the shortest span from the current angle to the new angle.
DirectionalRotation(
  angle: 0,
  direction: RotationDirection.closest,
  child: MyWidget(),
);

/// This [DirectionalRotation] will rotate its child in the direction with
/// the longest span from the current angle to the new angle.
DirectionalRotation(
  angle: 0,
  direction: RotationDirection.furthest,
  child: MyWidget(),
);

Libraries

directional_rotation
A widget that implicitly rotates its child to the provided angle in the direction allowed by the constraints: closest, furthest, clockwise, or counter-clockwise.