Tilt widget

Learn about Tilt widget parameters. Tilt widget only manages gesture, sensor, and animation state.

Tilt widget only manages gesture, sensor, and animation state (no UI rendering).
You can compose the Tilt container widget within the Tilt widget to wrap different effects.

Gesture priority

When multiple gestures are enabled, they are triggered based on priority:

Touch > Hover > Controller > Sensors

Tilt widget parameters

ParameterTypeDefaultDescription
child requiredWidget-Create a widget in which its child widgets have the relevant tilt state.
tiltControllerTiltController?nullController for custom tilt input.
disableboolfalseDisable all effects.
fpsint120Gesture triggered frames.
tiltConfigTiltConfigTiltConfig()Tilt effect config.
onGestureMovevoid Function(TiltDataModel, GesturesType)?nullGesture move callback.
onGestureLeavevoid Function(TiltDataModel, GesturesType)?nullGesture leave callback.

TiltController

final TiltController tiltController = TiltController();

...


void dispose() {
  tiltController.dispose();
  super.dispose();
}

...

/// Handle the "move" input event.
/// Should be used together with `leave` to indicate the end of the gesture.
tiltController.move(position: Offset(xx, xx));

/// Handle the "leave" input event.
/// Stop using the current gesture.
tiltController.leave(position: Offset(xx, xx));

ParameterTypeDefaultDescription
position requiredOffset-The current trigger position,
It will have the tilt effect of the corresponding position.
e.g.
There is a widget size, width: 10, height: 10,
(0, 0): Maximum tilt top left.
(10, 10): Maximum tilt bottom right.
gesturesTypeGesturesTypeGesturesType.controllerTrigger gesture type.
It is triggered according to the gesture priority.
If you need to customize the control with animation or other means.
Recommended use of GesturesType.controller.
If other types are used for triggering,
Then it will be affected by the configuration and effects associated with that type.
e.g.
When custom triggering GesturesType.sensors.
If TiltConfig.enableSensorRevert is configured to be false,
it will also not revert to the initial state.

TiltConfig

ParameterTypeDefaultDescription
disableboolfalseOnly disable the tilt effect.
initialOffset?nullInitial tilt progress, range (x, y): (1, 1) to (-1, -1),
you can exceed the range, but the maximum tilt angle during gesture movement is always tilted according to [TiltConfig.angle].
e.g. (0.0, 0.0) center
(1.0, 1.0) Maximum tilt top left [TiltConfig.angle].
angledouble10.0Maximum tilt angle.
e.g. 180 will flip.
directionList<TiltDirection>?nullTilt Direction, multiple directions, customized direction values.
enableReverseboolfalseTilt reverse, can be tilted up or down.
enableGestureSensorsbooltrueGyroscope sensor triggered tilt.
Only the following gestures:
GesturesType.sensors
sensorFactordouble10.0Sensor trigger factor (sensitivity).
Only the following gestures:
GesturesType.sensors
enableSensorRevertbooltrueEnable sensor tilt revert, will revert to the initial state.
Only the following gestures:
GesturesType.sensors
sensorRevertFactordouble0.05Sensor revert factor (damping), range of values: 0-1.
Only the following gestures:
GesturesType.sensors
sensorMoveDurationDurationDuration(milliseconds: 50)Animation duration during sensor move.
Only the following gestures:
GesturesType.sensors
enableGestureHoverbooltrueHover gesture triggered tilt.
Only the following gestures:
GesturesType.hover
enableGestureTouchbooltrueTouch gesture triggered tilt.
Only the following gestures:
GesturesType.touch
enableRevertbooltrueEnable tilt revert, will revert to the initial state.
Only the following gestures:
GesturesType.touch
GesturesType.hover
GesturesType.controller
enableOutsideAreaMovebooltrueTilt can continue to be triggered outside the area.
Only the following gestures:
GesturesType.touch
GesturesType.controller
enterDurationDurationDuration(milliseconds: 1000)Animation duration during gesture enter, must be used with [moveDuration] and [enterToMoveDuration].
Only the following gestures:
GesturesType.touch
GesturesType.hover
moveDurationDurationDuration(milliseconds: 100)Animation duration during gesture move.
Only the following gestures:
GesturesType.touch
GesturesType.hover
enterToMoveDurationDurationDuration(milliseconds: 600)The duration of the transition from enter to move, must be used with [enterDuration] and [moveDuration].
Only the following gestures:
GesturesType.touch
GesturesType.hover
leaveDurationDurationDuration(milliseconds: 300)Animation duration after gesture leave.
Only the following gestures:
GesturesType.touch
GesturesType.hover
moveCurveCurveCurves.linearAnimation curve during gesture move.
Only the following gestures:
GesturesType.touch
GesturesType.hover
enterToMoveCurveCurveCurves.easeOutCubicThe curve of the transition from enter to move, must be used with [enterToMoveDuration].
Only the following gestures:
GesturesType.touch
GesturesType.hover
leaveCurveCurveCurves.linearAnimation curve after gesture leave.
Only the following gestures:
GesturesType.touch
GesturesType.hover
controllerMoveDurationDurationDuration(milliseconds: 100)Animation duration during controller gesture move.
Only the following gestures:
GesturesType.controller
controllerLeaveDurationDurationDuration(milliseconds: 300)Animation duration after controller gesture leave.
Only the following gestures:
GesturesType.controller