Skip to content

Commit d7f5702

Browse files
committed
Simulator #33
1 parent 1ef50ef commit d7f5702

File tree

2 files changed

+23
-16
lines changed

2 files changed

+23
-16
lines changed

lib/codelessly_sdk.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ export 'src/data/local_database.dart';
1515
export 'src/data/network_data_repository.dart';
1616
export 'src/data/web_data_repository.dart';
1717
export 'src/functions/functions.dart';
18+
export 'src/functions/functions_repository.dart';
1819
export 'src/logging/codelessly_logger.dart';
1920
export 'src/logging/error_handler.dart';
2021
export 'src/logging/stat_tracker.dart';

lib/src/functions/functions_repository.dart

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -235,38 +235,43 @@ class FunctionsRepository {
235235

236236
static Future<void> navigate(
237237
BuildContext context,
238-
NavigationAction action,
239-
) async {
240-
final ScopedValues scopedValues = ScopedValues.of(context);
241-
final parsedParams = substituteVariablesInMap(action.params, scopedValues);
238+
NavigationAction action, {
239+
Codelessly? codelessly,
240+
CodelesslyWidgetController? codelesslyController,
241+
ScopedValues? scopedValues,
242+
}) async {
243+
final ScopedValues effectiveScopedValues =
244+
scopedValues ?? ScopedValues.of(context);
245+
final parsedParams =
246+
substituteVariablesInMap(action.params, effectiveScopedValues);
242247

243248
_log('Performing navigation action with params: $parsedParams');
244249

245-
final Codelessly codelessly = context.read<Codelessly>();
246-
final String? myLayoutId = codelessly.currentNavigatedLayoutId;
247-
final String? myCanvasId = codelessly.currentNavigatedCanvasId;
250+
final Codelessly effectiveCodelessly =
251+
codelessly ?? context.read<Codelessly>();
252+
final String? myLayoutId = effectiveCodelessly.currentNavigatedLayoutId;
253+
final String? myCanvasId = effectiveCodelessly.currentNavigatedCanvasId;
248254

249255
if (action.navigationType == NavigationType.pop) {
250256
await Navigator.maybePop(context, parsedParams);
251257
} else {
252258
// Check if a layout exists for the action's [destinationId].
253-
final String? layoutId = codelessly
259+
final String? layoutId = effectiveCodelessly
254260
.dataManager.publishModel?.layouts[action.destinationId]?.id ??
255-
codelessly.dataManager.publishModel?.layouts.values
261+
effectiveCodelessly.dataManager.publishModel?.layouts.values
256262
.firstWhereOrNull(
257263
(layout) => layout.canvasIds.contains(action.destinationId))
258264
?.id;
259265

260266
_log('looking for layout with canvas id: [${action.destinationId}]');
261267
for (final layout
262-
in codelessly.dataManager.publishModel!.layouts.values) {
268+
in effectiveCodelessly.dataManager.publishModel!.layouts.values) {
263269
_log(
264270
'layout [${layout.id}] canvas ids: [${layout.canvasIds.join(', ')}]');
265271
}
266272

267273
if (layoutId == null) {
268-
final Codelessly codelessly = context.read<Codelessly>();
269-
codelessly.errorHandler.captureException(
274+
effectiveCodelessly.errorHandler.captureException(
270275
CodelesslyException.layoutNotFound(
271276
message:
272277
'Could not find a layout with a canvas id of [${action.destinationId}]',
@@ -276,10 +281,11 @@ class FunctionsRepository {
276281
return;
277282
}
278283

279-
final parentController = context.read<CodelesslyWidgetController>();
284+
final parentController =
285+
codelesslyController ?? context.read<CodelesslyWidgetController>();
280286
final effectiveController = parentController.copyWith(
281287
layoutID: layoutId,
282-
codelessly: codelessly,
288+
codelessly: effectiveCodelessly,
283289
);
284290

285291
if (action.navigationType == NavigationType.push) {
@@ -296,7 +302,7 @@ class FunctionsRepository {
296302
// to, because the Navigator.push future has completed and came
297303
// back to this screen.
298304
if (context.mounted) {
299-
codelessly.notifyNavigationListeners(
305+
effectiveCodelessly.notifyNavigationListeners(
300306
context,
301307
layoutId: myLayoutId,
302308
canvasId: myCanvasId,
@@ -317,7 +323,7 @@ class FunctionsRepository {
317323
// to, because the Navigator.push future has completed and came
318324
// back to this screen.
319325
if (context.mounted) {
320-
codelessly.notifyNavigationListeners(
326+
effectiveCodelessly.notifyNavigationListeners(
321327
context,
322328
layoutId: myLayoutId,
323329
canvasId: myCanvasId,

0 commit comments

Comments
 (0)