curve static method

Curve curve(
  1. DataSource source,
  2. List<Object> key,
  3. BuildContext context
)

Returns a Curve from the specified string.

The given key should specify a string. If that string matches one of the names of static curves defined in the Curves class, then that curve is returned. Otherwise, if the string was not null, and is present as a key in the curveDecoders map, then the matching decoder from that map is invoked. Otherwise, the default obtained from AnimationDefaults.curveOf is used (which is why a BuildContext is required).

Implementation

static Curve curve(DataSource source, List<Object> key, BuildContext context) {
  final String? type = source.v<String>(key);
  switch (type) {
    case 'linear':
      return Curves.linear;
    case 'decelerate':
      return Curves.decelerate;
    case 'fastLinearToSlowEaseIn':
      return Curves.fastLinearToSlowEaseIn;
    case 'ease':
      return Curves.ease;
    case 'easeIn':
      return Curves.easeIn;
    case 'easeInToLinear':
      return Curves.easeInToLinear;
    case 'easeInSine':
      return Curves.easeInSine;
    case 'easeInQuad':
      return Curves.easeInQuad;
    case 'easeInCubic':
      return Curves.easeInCubic;
    case 'easeInQuart':
      return Curves.easeInQuart;
    case 'easeInQuint':
      return Curves.easeInQuint;
    case 'easeInExpo':
      return Curves.easeInExpo;
    case 'easeInCirc':
      return Curves.easeInCirc;
    case 'easeInBack':
      return Curves.easeInBack;
    case 'easeOut':
      return Curves.easeOut;
    case 'linearToEaseOut':
      return Curves.linearToEaseOut;
    case 'easeOutSine':
      return Curves.easeOutSine;
    case 'easeOutQuad':
      return Curves.easeOutQuad;
    case 'easeOutCubic':
      return Curves.easeOutCubic;
    case 'easeOutQuart':
      return Curves.easeOutQuart;
    case 'easeOutQuint':
      return Curves.easeOutQuint;
    case 'easeOutExpo':
      return Curves.easeOutExpo;
    case 'easeOutCirc':
      return Curves.easeOutCirc;
    case 'easeOutBack':
      return Curves.easeOutBack;
    case 'easeInOut':
      return Curves.easeInOut;
    case 'easeInOutSine':
      return Curves.easeInOutSine;
    case 'easeInOutQuad':
      return Curves.easeInOutQuad;
    case 'easeInOutCubic':
      return Curves.easeInOutCubic;
    case 'easeInOutCubicEmphasized':
      return Curves.easeInOutCubicEmphasized;
    case 'easeInOutQuart':
      return Curves.easeInOutQuart;
    case 'easeInOutQuint':
      return Curves.easeInOutQuint;
    case 'easeInOutExpo':
      return Curves.easeInOutExpo;
    case 'easeInOutCirc':
      return Curves.easeInOutCirc;
    case 'easeInOutBack':
      return Curves.easeInOutBack;
    case 'fastOutSlowIn':
      return Curves.fastOutSlowIn;
    case 'slowMiddle':
      return Curves.slowMiddle;
    case 'bounceIn':
      return Curves.bounceIn;
    case 'bounceOut':
      return Curves.bounceOut;
    case 'bounceInOut':
      return Curves.bounceInOut;
    case 'elasticIn':
      return Curves.elasticIn;
    case 'elasticOut':
      return Curves.elasticOut;
    case 'elasticInOut':
      return Curves.elasticInOut;
    default:
      if (type != null) {
        final ArgumentDecoder<Curve>? decoder = curveDecoders[type];
        if (decoder != null) {
          return decoder(source, key);
        }
      }
      return AnimationDefaults.curveOf(context);
  }
}