@@ -13,92 +13,80 @@ class PassiveSliderTransformer extends NodeWidgetTransformer<SliderNode> {
1313 BuildContext context,
1414 WidgetBuildSettings settings,
1515 ) {
16- return buildFromNode (context, node, settings);
16+ if (settings.isPreview) {
17+ return PreviewSliderWidget (
18+ node: node,
19+ settings: settings,
20+ );
21+ } else {
22+ return PassiveSliderWidget (
23+ node: node,
24+ settings: settings,
25+ );
26+ }
1727 }
28+ }
1829
19- Widget buildFromProps (
20- BuildContext context, {
21- required SliderProperties props,
22- required double height,
23- required double width,
24- double value = 0 ,
25- required WidgetBuildSettings settings,
26- }) {
27- final node = SliderNode (
28- id: '' ,
29- name: 'Slider' ,
30- basicBoxLocal: NodeBox (0 , 0 , width, height),
31- retainedOuterBoxLocal: NodeBox (0 , 0 , width, height),
32- properties: props,
33- value: value,
34- );
35- return buildFromNode (context, node, settings);
36- }
30+ class PreviewSliderWidget extends StatefulWidget {
31+ const PreviewSliderWidget ({
32+ super .key,
33+ required this .node,
34+ required this .settings,
35+ });
3736
38- Widget buildPreview ({
39- SliderProperties ? properties,
40- SliderNode ? node,
41- double height = kSliderDefaultHeight,
42- double width = kSliderDefaultWidth,
43- double value = 0 ,
44- ValueChanged <double >? onChanged,
45- WidgetBuildSettings settings = const WidgetBuildSettings (
46- debugLabel: 'buildPreview' ,
47- replaceVariablesWithSymbols: true ,
48- ),
49- }) {
50- final previewNode = SliderNode (
51- properties: properties ?? node? .properties ?? SliderProperties (),
52- id: '' ,
53- name: 'Slider' ,
54- value: value,
55- basicBoxLocal: NodeBox (0 , 0 , width, height),
56- retainedOuterBoxLocal: NodeBox (0 , 0 , width, height),
57- );
58- previewNode.value = value;
59- return PassiveSliderWidget (
60- node: previewNode,
61- onChanged: (context, value) => onChanged? .call (value),
62- settings: settings,
63- );
64- }
37+ final SliderNode node;
38+ final WidgetBuildSettings settings;
6539
66- Widget buildFromNode (
67- BuildContext context,
68- SliderNode node,
69- WidgetBuildSettings settings,
70- ) {
71- return PassiveSliderWidget (
72- node: node,
73- settings: settings,
74- onChanged: (context, value) => onChanged (context, node, value),
75- );
76- }
40+ @override
41+ State <PreviewSliderWidget > createState () => _PreviewSliderWidgetState ();
42+ }
7743
78- void onChanged (BuildContext context, SliderNode node, double internalValue) {
79- NodeStateProvider .setState (context, internalValue);
80- FunctionsRepository .setPropertyValue (context,
81- node: node, property: 'value' , value: internalValue);
44+ class _PreviewSliderWidgetState extends State <PreviewSliderWidget > {
45+ double effectiveValue = 0 ;
8246
83- FunctionsRepository .triggerAction (
84- context, node: node, TriggerType .changed, value: internalValue);
47+ @override
48+ Widget build (BuildContext context) {
49+ return TransformerSlider (
50+ node: widget.node,
51+ settings: widget.settings,
52+ onChanged: (value) => setState (() {
53+ effectiveValue = value;
54+ }),
55+ value: effectiveValue,
56+ );
8557 }
8658}
8759
8860class PassiveSliderWidget extends StatelessWidget {
8961 final SliderNode node;
9062 final WidgetBuildSettings settings;
9163 final List <VariableData > variablesOverrides;
92- final void Function (BuildContext context, double value)? onChanged;
9364
9465 const PassiveSliderWidget ({
9566 super .key,
9667 required this .node,
9768 required this .settings,
98- required this .onChanged,
9969 this .variablesOverrides = const [],
10070 });
10171
72+ void onChanged (BuildContext context, double internalValue) {
73+ NodeStateProvider .setState (context, internalValue);
74+
75+ FunctionsRepository .setPropertyValue (
76+ context,
77+ node: node,
78+ property: 'value' ,
79+ value: internalValue,
80+ );
81+
82+ FunctionsRepository .triggerAction (
83+ context,
84+ node: node,
85+ TriggerType .changed,
86+ value: internalValue,
87+ );
88+ }
89+
10290 @override
10391 Widget build (BuildContext context) {
10492 final ScopedValues scopedValues = ScopedValues .of (
@@ -112,8 +100,34 @@ class PassiveSliderWidget extends StatelessWidget {
112100 ) ??
113101 node.value;
114102
115- // final double value = variables.getDoubleById(node.variables['value'] ?? '',
116- // defaultValue: node.value);
103+ return TransformerSlider (
104+ node: node,
105+ settings: settings,
106+ variablesOverrides: variablesOverrides,
107+ onChanged: (value) => onChanged (context, value),
108+ value: value,
109+ );
110+ }
111+ }
112+
113+ class TransformerSlider extends StatelessWidget {
114+ const TransformerSlider ({
115+ super .key,
116+ required this .node,
117+ required this .settings,
118+ required this .onChanged,
119+ required this .value,
120+ this .variablesOverrides = const [],
121+ });
122+
123+ final SliderNode node;
124+ final WidgetBuildSettings settings;
125+ final List <VariableData > variablesOverrides;
126+ final ValueChanged <double >? onChanged;
127+ final double value;
128+
129+ @override
130+ Widget build (BuildContext context) {
117131 final SliderTrackShape trackShape;
118132 if (node.properties.trackShape == SliderTrackShapeEnum .rectangle) {
119133 trackShape = const RectangularSliderTrackShape ();
@@ -170,7 +184,7 @@ class PassiveSliderWidget extends StatelessWidget {
170184 ),
171185 child: Slider (
172186 value: value,
173- onChanged: (value) => onChanged? . call (context, value) ,
187+ onChanged: onChanged,
174188 autofocus: node.properties.autofocus,
175189 min: node.properties.min,
176190 max: node.properties.max,
0 commit comments