resolve method
Resolves this placement with the current text direction
Basic usage:
controller.showFlyout(
placementMode: FlyoutPlacementMode.bottomLeft.resolve(Directionality.of(context)),
);
See also:
- TextDirection, a direction in which text flows.
Implementation
FlyoutPlacementMode resolve(TextDirection direction) {
assert(
this != FlyoutPlacementMode.auto,
'Can not resolve directionality of an auto placement',
);
final isRtl = direction == TextDirection.rtl;
switch (this) {
case FlyoutPlacementMode.bottomCenter:
case FlyoutPlacementMode.topCenter:
return this;
case FlyoutPlacementMode.bottomLeft:
return isRtl ? FlyoutPlacementMode.bottomRight : this;
case FlyoutPlacementMode.topLeft:
return isRtl ? FlyoutPlacementMode.topRight : this;
case FlyoutPlacementMode.left:
return isRtl ? FlyoutPlacementMode.right : this;
case FlyoutPlacementMode.bottomRight:
return isRtl ? FlyoutPlacementMode.bottomLeft : this;
case FlyoutPlacementMode.topRight:
return isRtl ? FlyoutPlacementMode.topLeft : this;
case FlyoutPlacementMode.right:
return isRtl ? FlyoutPlacementMode.left : this;
case FlyoutPlacementMode.auto:
default:
return this;
}
}