1. @protected
TextDirection getEffectiveTextDirection(BuildContext context)

The value to pass to RenderFlex.textDirection.

This value is derived from the textDirection property and the ambient Directionality. The value is null if there is no need to specify the text direction. In practice there's always a need to specify the direction except for vertical flexes (e.g. Columns) whose crossAxisAlignment is not dependent on the text direction (not start or end). In particular, a Row always needs a text direction because the text direction controls its layout order. (For Columns, the layout order is controlled by verticalDirection, which is always specified as it does not depend on an inherited widget and defaults to VerticalDirection.down.)

This method exists so that subclasses of Flex that create their own render objects that are derived from RenderFlex can do so and still use the logic for providing a text direction only when it is necessary.

Source

@protected
TextDirection getEffectiveTextDirection(BuildContext context) {
  return textDirection ?? (_needTextDirection ? Directionality.of(context) : null);
}