Skip to main content


A material design circular progress indicator, which spins to indicate that the application is busy.

A control that shows progress along a circle.

There are two kinds of circular progress indicators:

  • Determinate. Determinate progress indicators have a specific value at each point in time, and the value should increase monotonically from 0.0 to 1.0, at which time the indicator is complete. To create a determinate progress indicator, use a non-null value between 0.0 and 1.0.
  • Indeterminate. Indeterminate progress indicators do not have a specific value at each point in time and instead indicate that progress is being made without indicating how much progress remains. To create an indeterminate progress indicator, use a null value.


Live example

from time import sleep
import flet as ft

def main(page: ft.Page):
pr = ft.ProgressRing(width=16, height=16, stroke_width = 2)

ft.Text("Circular progress indicator", style="headlineSmall"),
ft.Row([pr, ft.Text("Wait for the completion...")]),
ft.Text("Indeterminate cicrular progress", style="headlineSmall"),
[ft.ProgressRing(), ft.Text("I'm going to run for ages...")],

for i in range(0, 101):
pr.value = i * 0.01



Color of the circular track being filled by the circular indicator.


The progress indicator's color.


The Semantics.label for this progress indicator.


The Semantics.value for this progress indicator.


The relative position of the stroke. Value typically ranges be -1.0 (inside stroke) and 1.0 (outside stroke).

Defaults to 0 - centered.


The progress indicator's line ending. Value is StrokeCap enum, which has the following possible values:

  • BUTT - begin and end contours with a flat edge and no extension
  • ROUND - begin and end contours with a semi-circle extension
  • SQUARE - begin and end contours with a half square extension.


The width of the line used to draw the circle.


The text displayed when hovering the mouse over the control.


The value of this progress indicator. A value of 0.0 means no progress and 1.0 means that progress is complete. The value will be clamped to be in the range 0.0-1.0. If null, this progress indicator is indeterminate, which means the indicator displays a predetermined animation that does not indicate how much actual progress is being made.