ProgressModel class
A progress bar widget with optional animation support.
The progress bar can be rendered statically using viewAs or animated using the update loop and setPercent commands.
Example (Static)
// Simple static progress bar
final progress = ProgressModel(width: 40);
print(progress.viewAs(0.5)); // 50% complete
Example (Animated)
class DownloadModel implements Model {
final ProgressModel progress;
final double downloaded;
DownloadModel({ProgressModel? progress, this.downloaded = 0})
: progress = progress ?? ProgressModel();
@override
(Model, Cmd?) update(Msg msg) {
// Handle progress animation frames
final (newProgress, cmd) = progress.update(msg);
if (newProgress != progress) {
return (
DownloadModel(progress: newProgress as ProgressModel, downloaded: downloaded),
cmd,
);
}
// Handle download progress updates
if (msg is DownloadProgressMsg) {
final newPercent = msg.bytes / msg.total;
final (updatedProgress, animCmd) = progress.setPercent(newPercent);
return (
DownloadModel(progress: updatedProgress, downloaded: newPercent),
animCmd,
);
}
return (this, null);
}
@override
String view() => progress.view();
}
- Inheritance
-
- Object
- Model
- ViewComponent
- ProgressModel
Constructors
-
ProgressModel({int width = _defaultWidth, String full = defaultFullCharHalfBlock, String fullColor = '#7571F9', String empty = defaultEmptyCharBlock, String emptyColor = '#606060', bool showPercentage = true, String percentFormat = ' %3.0f%%', Style? percentageStyle, double frequency = _defaultFrequency, double damping = _defaultDamping, bool useGradient = false, String gradientColorA = '#5A56E0', String gradientColorB = '#EE6FF8', List<
String> blend = const [], ColorFunc? colorFunc, bool scaleGradient = false, bool scaleBlend = false, bool indeterminate = false, double pulseWidth = 0.2, DateTime? startTime, double percentShown = 0, double targetPercent = 0, double velocity = 0, double pulseOffset = 0, int? id, int tag = 0}) - Creates a new progress bar model.
Properties
-
blend
→ List<
String> -
Blend of colors to use. When provided, overrides fullColor and useGradient.
final
- colorFunc → ColorFunc?
-
Function to dynamically color the progress bar.
Overrides blend, fullColor, and useGradient.
final
- damping → double
-
Spring damping (bounciness).
final
- empty → String
-
Character for empty sections.
final
- emptyColor → String
-
Color for empty sections.
final
- eta → String
-
Returns the estimated time remaining as a string (MM:SS).
no setter
- frequency → double
-
Spring frequency (speed).
final
- full → String
-
Character for filled sections.
final
- fullColor → String
-
Color for filled sections.
final
- gradientColorA → String
-
First color of the gradient.
final
- gradientColorB → String
-
Second color of the gradient.
final
- hashCode → int
-
The hash code for this object.
no setterinherited
- id → int
-
The progress bar's unique ID.
no setter
- indeterminate → bool
-
Whether the progress bar is in indeterminate mode.
final
- isAnimating → bool
-
Whether the progress bar is currently animating.
no setter
- percent → double
-
The target percentage.
no setter
- percentageStyle → Style
-
Style for the percentage text.
final
- percentFormat → String
-
Format string for the percentage (e.g., " %3.0f%%").
final
- percentShown → double
-
The current visible percentage (for animation).
no setter
- pulseOffset → double
-
The current pulse offset (for indeterminate mode).
no setter
- pulseWidth → double
-
Width of the pulse in indeterminate mode (as a fraction of total width).
final
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- scaleBlend → bool
-
Whether to scale the blend to the filled portion.
final
- scaleGradient → bool
-
Whether to scale the gradient to the filled portion.
final
- showPercentage → bool
-
Whether to show the percentage text.
final
- startTime → DateTime?
-
When the progress started (for ETA calculation).
final
- tag → int
-
Current frame tag (exposed for testing/inspection).
no setter
- useGradient → bool
-
Whether to use a gradient fill.
final
- width → int
-
Total width of the progress bar, including percentage.
final
Methods
-
copyWith(
{int? width, String? full, String? fullColor, String? empty, String? emptyColor, bool? showPercentage, String? percentFormat, Style? percentageStyle, bool? useGradient, String? gradientColorA, String? gradientColorB, List< String> ? blend, ColorFunc? colorFunc, bool? scaleGradient, bool? scaleBlend, bool? indeterminate, double? pulseWidth, DateTime? startTime, double? percentShown, double? targetPercent, double? velocity, double? pulseOffset, int? tag, double? frequency, double? damping}) → ProgressModel - Creates a copy with the given fields replaced.
-
decrPercent(
double v) → (ProgressModel, Cmd?) - Decrements the percentage by the given amount.
-
incrPercent(
double v) → (ProgressModel, Cmd?) - Increments the percentage by the given amount.
-
init(
) → Cmd? -
Returns an optional command to execute on program startup.
override
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
setPercent(
double p, {bool animate = true}) → (ProgressModel, Cmd?) - Sets the target percentage and returns a command for animation.
-
toString(
) → String -
A string representation of this object.
inherited
-
update(
Msg msg) → (ProgressModel, Cmd?) -
Updates the component state in response to a message.
override
-
view(
) → String -
Renders the current model state for display.
override
-
viewAs(
double percent) → String - Renders the progress bar at the given percentage (static rendering).
-
withColorFunc(
ColorFunc fn) → ProgressModel - Returns a copy of the model with the given color function.
-
withColors(
List< String> colors) → ProgressModel - Returns a copy of the model with the given colors.
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited
Static Methods
-
withDefaultBlend(
{int width = _defaultWidth}) → ProgressModel - Creates a new progress bar with the default blend of colors (purple to pink).