Skip to content

Commit f0cec29

Browse files
committed
ProgressRing
1 parent 73bca4f commit f0cec29

File tree

5 files changed

+82
-36
lines changed

5 files changed

+82
-36
lines changed

client/lib/controls/create_control.dart

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,19 @@
1-
import 'dart:convert';
2-
31
import 'package:flet_view/controls/container.dart';
42
import 'package:flet_view/controls/icon.dart';
53
import 'package:flet_view/controls/image.dart';
64
import 'package:flet_view/controls/list_view.dart';
75
import 'package:flet_view/controls/snack_bar.dart';
86
import 'package:flet_view/models/control_type.dart';
9-
import 'package:flet_view/utils/alignment.dart';
10-
import 'package:flet_view/utils/borders.dart';
11-
import 'package:flet_view/utils/edge_insets.dart';
127
import 'package:flutter/material.dart';
138
import 'package:flutter_redux/flutter_redux.dart';
149

1510
import '../models/control.dart';
1611
import '../models/control_view_model.dart';
1712
import '../models/app_state.dart';
18-
import '../utils/theme.dart';
1913
import 'grid_view.dart';
2014
import 'icon_button.dart';
2115
import 'outlined_button.dart';
16+
import 'progress_ring.dart';
2217
import 'row.dart';
2318
import 'text_button.dart';
2419
import 'textfield.dart';
@@ -51,6 +46,8 @@ Widget createControl(Control? parent, String id, bool parentDisabled) {
5146
return IconControl(control: controlView.control);
5247
case ControlType.image:
5348
return ImageControl(parent: parent, control: controlView.control);
49+
case ControlType.progressRing:
50+
return ProgressRingControl(control: controlView.control);
5451
case ControlType.elevatedButton:
5552
return ElevatedButtonControl(
5653
parent: parent,
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import 'package:flet_view/controls/create_control.dart';
2+
import 'package:flet_view/utils/colors.dart';
3+
import 'package:flutter/material.dart';
4+
5+
import '../models/control.dart';
6+
7+
class ProgressRingControl extends StatelessWidget {
8+
final Control? parent;
9+
final Control control;
10+
11+
const ProgressRingControl({Key? key, this.parent, required this.control})
12+
: super(key: key);
13+
14+
@override
15+
Widget build(BuildContext context) {
16+
debugPrint("ProgressRing build: ${control.id}");
17+
18+
var value = control.attrDouble("value", null);
19+
var strokeWidth = control.attrDouble("strokeWidth", 4)!;
20+
var color = HexColor.fromString(context, control.attrString("color", "")!);
21+
var bgColor =
22+
HexColor.fromString(context, control.attrString("bgColor", "")!);
23+
24+
return constrainedControl(
25+
CircularProgressIndicator(
26+
value: value,
27+
strokeWidth: strokeWidth,
28+
color: color,
29+
backgroundColor: bgColor,
30+
),
31+
parent,
32+
control);
33+
}
34+
}

docs/roadmap.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
* [x] Column (flex - default mode, wrap)
1313
* [x] Stack
1414
* [x] ListView
15-
* [ ] GridView
15+
* [x] GridView
1616
* Basic controls
1717
* [x] Text
1818
* [x] Icon
@@ -547,9 +547,9 @@ Properties:
547547

548548
- scrollDirection - `vertical` (default), `horizontal`.
549549
- padding
550-
- crossAxisCount
551-
- mainAxisSpacing
552-
- crossAxisSpacing
550+
- runsCount
551+
- spacing
552+
- runSpacing
553553

554554
## Card
555555

sdk/python/flet/progress_ring.py

Lines changed: 1 addition & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@
1111
except:
1212
from typing_extensions import Literal
1313

14-
LabelPosition = Literal[None, "left", "top", "right", "bottom"]
15-
1614

1715
class ProgressRing(ConstrainedControl):
1816
def __init__(
@@ -29,8 +27,6 @@ def __init__(
2927
# Specific
3028
#
3129
value: OptionalNumber = None,
32-
label: str = None,
33-
label_position: LabelPosition = None,
3430
stroke_width: OptionalNumber = None,
3531
color: str = None,
3632
bgcolor: str = None,
@@ -47,8 +43,6 @@ def __init__(
4743
data=data,
4844
)
4945
self.value = value
50-
self.label = label
51-
self.label_position = label_position
5246
self.stroke_width = stroke_width
5347
self.color = color
5448
self.bgcolor = bgcolor
@@ -66,26 +60,7 @@ def value(self):
6660
def value(self, value: OptionalNumber):
6761
self._set_attr("value", value)
6862

69-
# label
70-
@property
71-
def label(self):
72-
return self._get_attr("label")
73-
74-
@label.setter
75-
def label(self, value):
76-
self._set_attr("label", value)
77-
78-
# label_position
79-
@property
80-
def label_position(self):
81-
return self._get_attr("labelPosition")
82-
83-
@label_position.setter
84-
@beartype
85-
def label_position(self, value: LabelPosition):
86-
self._set_attr("label_position", value)
87-
88-
# bar_height
63+
# stroke_width
8964
@property
9065
def stroke_width(self):
9166
return self._get_attr("strokeWidth")
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import logging
2+
from datetime import datetime
3+
from time import sleep
4+
5+
import flet
6+
from flet import Column, ElevatedButton, Image, Page, Row, Text, Theme, padding
7+
from flet.progress_ring import ProgressRing
8+
from flet.stack import Stack
9+
10+
# logging.basicConfig(level=logging.DEBUG)
11+
12+
13+
def main(page: Page):
14+
page.title = "Images Example"
15+
page.theme_mode = "light"
16+
page.padding = padding.all(10)
17+
page.update()
18+
19+
pr = ProgressRing(width=16, height=16, stroke_width=2)
20+
r = Row([pr, Text("Wait for the completion...")])
21+
22+
pr2 = ProgressRing()
23+
c = Column(
24+
[pr2, Text("I'm going to run for ages...")], horizontal_alignment="center"
25+
)
26+
27+
page.add(
28+
Text("Circle progress indicator", style="headlineSmall"),
29+
r,
30+
Text("Indeterminate cicrular progress", style="headlineSmall"),
31+
c,
32+
)
33+
34+
for i in range(0, 101):
35+
pr.value = i * 0.01
36+
sleep(0.1)
37+
page.update()
38+
39+
40+
flet.app(name="test1", port=8550, target=main, view=flet.WEB_BROWSER)

0 commit comments

Comments
 (0)