CircularPercentIndicator constructor

CircularPercentIndicator({
  1. Key? key,
  2. double percent = 0.0,
  3. double lineWidth = 5.0,
  4. double startAngle = 0.0,
  5. required double diameter,
  6. Color fillColor = Colors.transparent,
  7. Color backgroundColor = const Color(0xFFB8C7CB),
  8. Color? progressColor,
  9. double backgroundWidth = -1,
  10. LinearGradient? linearGradient,
  11. bool animation = false,
  12. int animationDuration = 500,
  13. Widget? header,
  14. Widget? footer,
  15. Widget? center,
  16. bool addAutomaticKeepAlive = true,
  17. CircularStrokeCap? circularStrokeCap,
  18. Color? arcBackgroundColor,
  19. ArcType? arcType,
  20. bool animateFromLastPercent = false,
  21. bool reverse = false,
  22. Curve curve = Curves.linear,
  23. MaskFilter? maskFilter,
  24. bool restartAnimation = false,
  25. VoidCallback? onAnimationEnd,
  26. Widget? widgetIndicator,
  27. bool rotateLinearGradient = false,
})

Implementation

CircularPercentIndicator(
    {Key? key,
    this.percent = 0.0,
    this.lineWidth = 5.0,
    this.startAngle = 0.0,
    required this.diameter,
    this.fillColor = Colors.transparent,
    this.backgroundColor = const Color(0xFFB8C7CB),
    Color? progressColor,
    // negative values are ignored, replaced with lineWidth
    this.backgroundWidth = -1,
    this.linearGradient,
    this.animation = false,
    this.animationDuration = 500,
    this.header,
    this.footer,
    this.center,
    this.addAutomaticKeepAlive = true,
    this.circularStrokeCap,
    this.arcBackgroundColor,
    this.arcType,
    this.animateFromLastPercent = false,
    this.reverse = false,
    this.curve = Curves.linear,
    this.maskFilter,
    this.restartAnimation = false,
    this.onAnimationEnd,
    this.widgetIndicator,
    this.rotateLinearGradient = false})

    // Expect only a linearGradient or a progressColor given.
    // Assert breaks the example page... strange as both non-null would
    // expect to be evaluated the same way as the argument error thrower..
    : /* assert(linearGradient != null && progressColor != null), */
      super(key: key) {
  if (linearGradient != null && progressColor != null) {
    throw ArgumentError(
      'Cannot provide both linearGradient and progressColor',
    );
  }
  // Custom logic warning defaults to red if no colour or gradient is set...
  // Should remove the custom progressColor mutability for maintainability
  _progressColor = progressColor ?? Colors.red;

  assert(startAngle >= 0.0);
  if (percent < 0.0 || percent > 1.0) {
    throw Exception(
      "Percent value must be a double between 0.0 and 1.0",
    );
  }

  if (arcType == null && arcBackgroundColor != null) {
    throw ArgumentError(
      'arcType is required with arcBackgroundColor',
    );
  }
}