Как увеличить максимальные границы превышения для ElasticOutCurve во Flutter? - PullRequest
0 голосов
/ 27 мая 2019

для ElasticOutCurve , я хотел бы увеличить максимальное значение границ превышения. Я пытался создать собственную кривую или увеличить период, пока что не повезло. Кто-нибудь знает, как этого добиться? Большое спасибо.

1 Ответ

1 голос
/ 29 мая 2019

Сначала давайте взглянем на источник ElasticOutCurve (из источника флаттера ):

class ElasticOutCurve extends Curve {
  /// Creates an elastic-out curve.
  ///
  /// Rather than creating a new instance, consider using [Curves.elasticOut].
  const ElasticOutCurve([this.period = 0.4]);

  /// The duration of the oscillation.
  final double period;

  @override
  double transformInternal(double t) {
    final double s = period / 4.0;
    return math.pow(2.0, -10 * t) * math.sin((t - s) * (math.pi * 2.0) / period) + 1.0;
  }

  @override
  String toString() {
    return '$runtimeType($period)';
  }
}

Мы видим, что все, что они делают, это какая-то базовая математика.

Вот график, показывающий кривую ослабления из алгоритма флютера:

Chart with flutter algo

А вот что произойдет, если вы умножите секцию (pow * sin) на 3:

Chart with x3

Вся заслуга в Wolfram Alpha для чартов.

Если вы играли с разными константами, вы также можете настроить их другими способами, хотя вы должны быть уверены, что они всегда начинаются с 0 и заканчиваются на 1.

К сожалению, команда Flutter не сделала кривую немного более гибкой, но поскольку флаттер является открытым исходным кодом, достаточно легко скопировать их кривую, чтобы создать собственную.

...