Skip to content

Commit 4213ad7

Browse files
jtmcdolespydon
andauthored
Add a SliderProperty (#121)
* Add a SliderProperty * Re-trigger check --------- Co-authored-by: Lukas Klingsbo <[email protected]> Co-authored-by: Lukas Klingsbo <[email protected]>
1 parent c08c59a commit 4213ad7

File tree

3 files changed

+61
-0
lines changed

3 files changed

+61
-0
lines changed

lib/src/story.dart

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,28 @@ class DashbookContext {
237237
);
238238
}
239239

240+
double sliderProperty(
241+
String name,
242+
double defaultValue, {
243+
String? tooltipMessage,
244+
ControlProperty? visibilityControlProperty,
245+
}) {
246+
return addProperty(
247+
Property<double>.withBuilder(
248+
name,
249+
defaultValue,
250+
tooltipMessage: tooltipMessage,
251+
visibilityControlProperty: visibilityControlProperty,
252+
builder: (property, onChanged, key) => p.SliderProperty(
253+
property: property,
254+
onChanged: onChanged,
255+
key: key,
256+
),
257+
),
258+
);
259+
260+
}
261+
240262
Color colorProperty(
241263
String name,
242264
Color defaultValue, {

lib/src/widgets/property_widgets/properties.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,5 @@ export 'edge_insets_property.dart';
55
export 'list_property.dart';
66
export 'number_property.dart';
77
export 'options_property.dart';
8+
export 'slider_property.dart';
89
export 'text_property.dart';
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import 'package:dashbook/dashbook.dart';
2+
import 'package:flutter/material.dart';
3+
4+
class SliderProperty extends StatefulWidget {
5+
final Property<double> property;
6+
final PropertyChanged onChanged;
7+
8+
const SliderProperty({
9+
required this.property,
10+
required this.onChanged,
11+
super.key,
12+
});
13+
14+
@override
15+
State<StatefulWidget> createState() =>
16+
SliderPropertyState(property.getValue());
17+
}
18+
19+
class SliderPropertyState extends State<SliderProperty> {
20+
double value;
21+
SliderPropertyState(this.value);
22+
23+
@override
24+
Widget build(BuildContext context) {
25+
return PropertyScaffold(
26+
tooltipMessage: widget.property.tooltipMessage,
27+
label: widget.property.name,
28+
child: Slider(
29+
value: value,
30+
onChanged: (newValue) {
31+
value = newValue;
32+
widget.property.value = newValue;
33+
widget.onChanged();
34+
},
35+
),
36+
);
37+
}
38+
}

0 commit comments

Comments
 (0)