Skip to content

Commit 516837d

Browse files
committed
Make FAB of Scaffold an action item.
1 parent 2c88671 commit 516837d

8 files changed

+26
-14
lines changed

lib/src/functions/functions_repository.dart

+11-6
Original file line numberDiff line numberDiff line change
@@ -592,18 +592,23 @@ class FunctionsRepository {
592592
);
593593
}
594594

595+
/// Triggers actions on given [node] or [reactions] with given [type].
596+
/// Returns `true` if any action was triggered, `false` otherwise.
597+
/// If [reactions] is not provided, it will use [node]'s reactions.
598+
/// If [value] is provided, it will be passed to the action.
595599
static bool triggerAction(
596600
BuildContext context,
597601
ReactionMixin node,
598-
TriggerType type, [
602+
TriggerType type, {
599603
dynamic value,
600-
]) {
601-
final reactions = node.reactions
602-
.where((reaction) => reaction.trigger.type == TriggerType.changed);
604+
List<Reaction>? reactions,
605+
}) {
606+
final filteredReactions = (reactions ?? node.reactions)
607+
.where((reaction) => reaction.trigger.type == type);
603608

604-
if (reactions.isEmpty) return false;
609+
if (filteredReactions.isEmpty) return false;
605610

606-
for (final reaction in reactions) {
611+
for (final reaction in filteredReactions) {
607612
FunctionsRepository.performAction(
608613
context,
609614
reaction.action,

lib/src/transformers/node_transformers/passive_canvas_transformer.dart

+7
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import 'package:codelessly_api/codelessly_api.dart';
22
import 'package:flutter/material.dart';
33

44
import '../../../codelessly_sdk.dart';
5+
import '../../functions/functions_repository.dart';
56

67
class PassiveCanvasTransformer extends NodeWidgetTransformer<CanvasNode> {
78
PassiveCanvasTransformer(super.getNode, super.manager);
@@ -34,6 +35,7 @@ class PassiveCanvasTransformer extends NodeWidgetTransformer<CanvasNode> {
3435
node.id,
3536
props.floatingActionButton!,
3637
useFonts: false,
38+
onPressed: () => onFaBPressed(context, node),
3739
)
3840
: null;
3941
Widget? bottomNavigationBar = navigationBarPlaceholder ??
@@ -120,6 +122,11 @@ class PassiveCanvasTransformer extends NodeWidgetTransformer<CanvasNode> {
120122
);
121123
}
122124

125+
void onFaBPressed(BuildContext context, CanvasNode node) {
126+
FunctionsRepository.triggerAction(context, node, TriggerType.click,
127+
reactions: node.properties.floatingActionButton?.reactions);
128+
}
129+
123130
@override
124131
Widget buildWidget(
125132
CanvasNode node,

lib/src/transformers/node_transformers/passive_checkbox_transformer.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ class PassiveCheckboxTransformer extends NodeWidgetTransformer<CheckboxNode> {
7373
node: node, property: 'value', value: internalValue);
7474

7575
FunctionsRepository.triggerAction(
76-
context, node, TriggerType.changed, internalValue);
76+
context, node, TriggerType.changed, value: internalValue);
7777
}
7878
}
7979

lib/src/transformers/node_transformers/passive_progressbar_transformer.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ class PassiveProgressBarTransformer
7676
node: node, property: 'currentValue', value: value);
7777

7878
FunctionsRepository.triggerAction(
79-
context, node, TriggerType.changed, value);
79+
context, node, TriggerType.changed, value: value);
8080
}
8181
}
8282

lib/src/transformers/node_transformers/passive_radio_transformer.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ class PassiveRadioTransformer extends NodeWidgetTransformer<RadioNode> {
7272
FunctionsRepository.setPropertyValue(context,
7373
node: node, property: 'groupValue', value: value);
7474

75-
FunctionsRepository.triggerAction(context, node, TriggerType.click, value);
75+
FunctionsRepository.triggerAction(context, node, TriggerType.click, value: value);
7676
}
7777

7878
void onAction(Reaction reaction) {

lib/src/transformers/node_transformers/passive_slider_transformer.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ class PassiveSliderTransformer extends NodeWidgetTransformer<SliderNode> {
7575
node: node, property: 'value', value: internalValue);
7676

7777
FunctionsRepository.triggerAction(
78-
context, node, TriggerType.changed, internalValue);
78+
context, node, TriggerType.changed, value: internalValue);
7979
}
8080
}
8181

lib/src/transformers/node_transformers/passive_switch_transformer.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,8 @@ class PassiveSwitchTransformer extends NodeWidgetTransformer<SwitchNode> {
7272
FunctionsRepository.setPropertyValue(context,
7373
node: node, property: 'value', value: internalValue);
7474

75-
FunctionsRepository.triggerAction(
76-
context, node, TriggerType.changed, internalValue);
75+
FunctionsRepository.triggerAction(context, node, TriggerType.changed,
76+
value: internalValue);
7777
}
7878
}
7979

lib/src/transformers/node_transformers/passive_text_field_transformer.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ class PassiveTextFieldTransformer extends NodeWidgetTransformer<TextFieldNode> {
150150
node: node, property: 'inputValue', value: inputValue);
151151

152152
FunctionsRepository.triggerAction(
153-
context, node, TriggerType.changed, inputValue);
153+
context, node, TriggerType.changed, value: inputValue);
154154
}
155155

156156
void onSubmitted(
@@ -159,7 +159,7 @@ class PassiveTextFieldTransformer extends NodeWidgetTransformer<TextFieldNode> {
159159
String inputValue,
160160
) =>
161161
FunctionsRepository.triggerAction(
162-
context, node, TriggerType.changed, inputValue);
162+
context, node, TriggerType.changed, value: inputValue);
163163
}
164164

165165
class PassiveTextFieldWidget extends StatefulWidget {

0 commit comments

Comments
 (0)