This candidate includes the changes documented below for 6.2.0, which has not been published on pub.dev. The 6.3.0 changes below also include the post-merge compatibility guards: ambiguous legacy gauge, chart and signature payloads fail closed without discarding the original document JSON; direct node decoding rejects contradictory variant signatures; and list stack modes cannot both be enabled in a document.
CopyToClipboardActioncopies formula/bound text; newdragEndandkeyDowntriggers and drag/pointer support coexist with prior triggers.ShowDialogAction.fullHeightcontrols full-height bottom sheets without replacing existing popover, placement, insets or height-factor behavior.- New list
layout: stackpositions items by bound x/y; olderstacked: trueremains a separate centered deck mode. Enabling both is rejected instead of silently reinterpreting saved lists. Variableextrametadata and spacer construction options remain available.
- The #43 numeric/area plot is
PlotChartNode(chartPlot), separate from #48's categoricalChartNode(chartSeries). Untaggedchartdocuments require exclusive raw keys; empty/shared-only and mixed signatures stay unresolved without discarding their original JSON. - ListView wrap and run spacing, input decoration content padding, typed corner radius and edge insets bindings, batch cloud storage operations, toast font weight and bindable offset, and dialog insets/height limit.
- Navigation pop keeps the older empty destination ID compatibility key.
gaugenode (GaugeNode,GaugeProperties,GaugeZone): a dial with a bindablevalue, zone bands, LED segments, ticks and labels, a target notch, a needle and value animation.chartnode (ChartNode,ChartProperties,ChartSeries,ChartReferenceLine): bar, line and timeline charts bound to a list throughvariables.data; bar, line, area and tick series with stacks, per-item colors, dashes, end dots and fill-between; reference lines; bindableselectedIndexand achangedtrigger; a timeline'snowColorcolors its now marker.PaintModel.gradientTileMode(clamp, repeated, mirror) for repeating gradients such as stripes.BlendMixin.pulse(PulseModel): a looping fade of a node's opacity.- Rows can wrap:
RowColumnNode.wrap,spacingandrunSpacinglay a row's children out in lines like Flutter'sWrap. ShowDialogAction.anchor(DialogAnchor.trigger),placement,anchorGapandanchorOffset: a dialog can open as a popover next to the node that ran it.copyWithkeepsnonBlockingandenabled.ShowToastAction.accentColor(a 4 px leading edge),cornerRadiusandmaxWidth.- Slider thumbs can be rectangles:
SliderProperties.thumbShape,thumbWidth,thumbHeight,thumbCornerRadius,thumbBorderColor,thumbBorderWidthandthumbGripColor. MaterialIcon.fromJsonreads a Flutter-style name with a style suffix (home_outlined) as the base name in that style, so it draws.VariableData.isComputedandisFormulaValue: a variable whose value is a${= ...}formula is computed;getValue()returns null for it.- Gauge and chart nodes read JSON without
properties; grid delegates, scroll settings and placeholder type lists default when left out; a spacer reads JSON without its positioning mode, aspect lock and reactions.
MotionModelon every node (BaseNode.motion): offset, scale, opacity, rotation, 3D tilt with perspective and origin, an animated transition (duration and curve), continuous spin,loop(restart or back and forth),enter,enterFrom,delayMsand a bindablereplayKey. Values bind asmotion.<name>variables.
timer(TriggerModel.intervalMs) andkeyPress(TriggerModel.key) on canvases;swipeLeft/Right/Up/DownanddoubleTapon frames, rectangles, buttons, icons and text, besidecursorEnterandcursorExit. Trigger JSON naminghoverEnterorhoverExitreads ascursorEnterandcursorExit(TriggerType.aliases).
ListViewProperties.stacked(items drawn on top of each other) andwrapwithwrapSpacing,wrapRunSpacingandwrapAlignment.- Sliders:
orientation(vertical),inverted, thumb stroke, and aroundedRectthumb shape with width, height and corners. - Row/column JSON with
itemSpacingis read asspacing.
- JSON with a separate
formulafor a computed variable is read into its value. - Bindable
effectsVisible,strokeWeight,cornerRadius,fontWeightand a slider'smin/maxas property variables. variableSyntaxIdentifierPatternmatches a${= ...}formula whole, object literals included.EdgeInsetsModel.fromJsonreads{left, top, right, bottom}and{horizontal, vertical}; placeholders and lists read JSON without their editor-only keys.
SignatureNode(signature), a draw-to-sign pad. Its value is the list of strokes drawn (each a list of[x, y]points), bindable throughvariables.valueand settable with a set value action;changedfires when a stroke ends. Properties: ink color and width, background, border and error border, corner radius, placeholder, sign line, and bindableerrorandenabled.BaseNode.loopAnimation(LoopAnimation: pulse, fade, scale or spin, with duration, delay, reverse, curve and from/to scale, opacity or turns), on every node type and left out of the JSON when null.loopAnimationEnabledcan be bound to turn it on and off.- Nodes with a click trigger also offer
cursorEnterandcursorExit; the trigger docs say whathover,cursorEnterandcursorExitmean. DialogPresentation.sideSheet, andShowDialogAction.sheetWidth,maxHeightFactor(1: no cap) andshowDragHandle(false) for sheets, so saved bottom sheets look as before.copyWithkeepsnonBlockingandenabled.ConfirmAction.presentation,sheetWidth,maxHeightFactorandshowDragHandle, as onShowDialogAction.ShowToastAction.accentColor,accentWidth(4),iconColor,fontFamilyandcornerRadius.FrameNode.contentFit(aFit, null for none) andcontentAlignment(center).TextFieldNode.propertyVariableslistserrorTextanderror.- All new fields are left out of the JSON at their defaults.
GridDelegateProperties.shrinkWrapRows: each row of a grid is as tall as its tallest item (like aRowin anIntrinsicHeight) instead of a fixedmainAxisExtentorchildAspectRatio. Default false, left out of the JSON.CornerRadius.fromJsonaccepts a bare number (a circular radius on every corner), likeEdgeInsetsModeldoes.ApiCallAction.onSuccessandonError: actions to run after the call answers with a 2xx status, or after it fails or answers with another.ActionModel.childActionsandselfAndNestedActionswalk actions nested in conditionals, for-each loops and API call handlers.NavigationAction.destinationIddefaults to'': a pop needs none, and for a pop it names where to go when there is nothing to go back to. It is still always written, for SDKs that require it.PaintModel.saturation(default 1, left out of the JSON when 1): an image fill's color saturation; 0 is greyscale.CanvasProperties.path: an optional URL path for a screen, such asjournalorguide/:id, for links that open it with its parameters.- Styling for the runtime's own UI, all optional and left out of the JSON
when unset, so saved designs keep their look:
ShowToastAction:actionColor,showClose,closeColor,border(BorderSideModel),shadows(drop shadowEffects),padding,maxWidth,messageStyle,actionStyle,iconSize, andbottomOffsets(perScreenBreakpoint, e.g.{"mobile": 84}, seebottomOffsetFor).ConfirmAction:border,shadows,titleStyle,messageStyle,buttonStyle,buttonRadius,buttonBorder,buttonShadows,confirmTextColor,cancelColor,cancelTextColor.DropdownProperties:menuStyle(DropdownMenuStyleModel: an anchored menu card's color, border, radius, shadows, offset, sizes, paddings, selected and hover row colors, selected text style and check mark) anditemImage(a URL or item template such as${item.image}),itemImageSize,itemImageRadius.TextStyleModel: a partial text style (font family, weight, italic, size, line height, letter spacing, color).
LineChartNode(lineChart) andLineChartProperties: a data-driven line chart. The series, domain, bands, grid lines, area bands, reference lines, x ticks, markers and vertical lines are bound throughvariables(see the class docs for their JSON shapes); colors, insets, curve style, text styles and the scrub readout are properties.BaseNode.squeezable("squeezable": true, defaultfalseand left out of the JSON): a node that wraps its content (SizeFit.shrinkWrap) on its Row/Column's main axis may shrink below it when the Row/Column runs out of space, likeFlexible(fit: FlexFit.loose)around a shrink-wrapped child.DialogPresentation.popoveris a distinct trigger-anchored presentation; legacypresentation: 'popover'preserves explicit anchor placement, gap and offset, and rejects contradictory modal anchor settings.SpacerNodeacceptsvariablesandmultipleVariablesin its constructor.
SpacerNode.fromJsondefaultspositioningMode(align),aspectRatioLock(false) andreactions([]) like every other node, andGridViewNode.fromJsondefaultsisScrollable(true) anduseFlutterListView(false). Both still write those keys for older readers.
- Row/column
spacing: a gap between children along the main axis, taken out before expanded children share the free space. - Row/column
wrapandrunSpacing: children wrap onto further runs, like Flutter'sWrap.
PaintModel.gradientRepeatEvery: a linear gradient repeats every N px instead of stretching across the box (hazard stripes, tick patterns).- Progress bars take
shape: arc: a gauge with start and sweep angles, stroke width, tick count and color, a needle and colored zonebands(ProgressBand).
ShowDialogAction.presentation(dialog, bottom sheet, or adaptive: a sheet below 600 px) andalignmentfor where a dialog opens.DelayAction.duration: a variable or formula for the wait, used instead ofmillisecondswhen it gives a number.
VariableData.formulastores a separate computed expression and survives JSON round-trips alongside formula values stored directly invalue.
SignatureNode(signature): a box to sign in. Itsvalueis a list of strokes, each a list of[x, y]points normalized to the box;inkColor,strokeWidthandreadOnlyare inSignatureProperties.SpacerNodeparses JSON withoutpositioningMode,aspectRatioLockorreactions, like other nodes. Its constructor didn't take them, so the generatedfromJsonrequired them.
TriggerType.holdfires once the target has been held for the trigger'sduration(milliseconds, 1200 by default). Frames, rectangles, rows and columns offer it.- Rows and columns declare the click and long-press triggers they already ran, so the actions panel offers them.
DialogPresentation.fullScreen: a show dialog action can cover the whole screen, like a photo viewer.- A navigate-back (
pop) action reads from JSON withoutdestinationId, which it has no use for. It is still written, as'', for readers that require it.
strokeWeightis a bindable style property of every node with strokes.flexis one of the properties every node can bind, set by a condition or change with an action.IconNodedeclaresiconColorandiconNameas properties that can be bound, set by conditions or changed by actions;iconNamenames the Material Symbol to show.
- List, grid, page and tab views and spacers parse from minimal node JSON:
fields with constructor defaults (
isScrollable,useFlutterListView,allowedTypes,deniedTypes, ...) may be left out.
- Circular loading indicators take
startAngleandsweepAngle, so one can draw an arc or a gauge;minimumPaddingcounts only the part of the stroke outside the circle. ShowDialogAction.presentationalso acceptspopover, distinct from a dialog, bottom sheet or adaptive sheet.
TextNode.tabularFigures: digits of equal width for clocks and counters.
BaseNode.transitionMs: opacity, draw scale and solid fill changes ease in.BaseNode.drawScale(bindable asdrawScale): draw a node larger or smaller around its center without changing layout.BaseNode.pulse(PulseModel): a looping opacity and scale animation.
InteractionState(hover, focus, pressed, selected, disabled) andBaseNode.interactionStates: sparse property overrides per state.Variant.overridesfor property-override states;PropertyOverridePatchapplies, diffs and merges them.- Query-status variants (loading, empty, error) with an optional skeleton.
CollectionSchemaandSchemaFieldfor typed collections.CloudDataAction(create, update, delete, get, query, count, sum, average) andCloudBatchActionbuilt from schemas, without JSON.QueryableMixin.paging(scroll or a Show more button) andQueryableMixin.loadRelatedfor reference fields.CloudFilesAction.access: uploads are private to the uploader by default.
AuthOperationadds Google, Apple and email-link sign-in andupdatePhoto.TriggerModel.debounceMsand thevalueChangedtrigger.BaseNode.tooltipandBaseNode.zoomable.VariableType.choicewith named options.ThemeTokensfor what the runtime draws itself.- A value read as a paint turns an image link into an image paint.
ButtonProperties.buttonColoris nullable and defaults tonull, the button type's default colour. It was black, and black was left out of the JSON, so a missing key now reads asnulland an explicit black is written and read back as black.ShowToastAction.backgroundColorandtextColorare nullable and default tonull(the app's theme). Saved toasts, which omitted the old defaults, now take the theme's colours.copyWithgainsclearBackgroundColorandclearTextColor.
- Responsive variances:
ScreenBreakpoint(mobile, tablet, desktop; widths 600 and 1024, design widths 390/834/1440), an optionalVariant.breakpoint(omitted from JSON when unset), andVarianceNode.isResponsive,variantForBreakpointandvariantForWidth. ShowToastAction: a button (actionLabelandactions, e.g. Undo), aToastStyleand aToastPosition(top or bottom).ConfirmActioncan show a canvas as its dialog (dialogId,params), which answers through a Navigate back action whose params holdconfirmed, and has optional colour, radius and barrier overrides for the built-in dialog.TextFieldProperties.maxLines:null(unlimited lines) is written as an explicitnulland reads back asnull; a missing key still reads as 1.VariableData.getValue()returns an empty text variable as''instead ofnull, and anullvalue is stored as''instead of'null'.AuthOperation.sendEmailVerification,updatePasswordanddeleteAccount.DelayAction(ActionType.delay): waitsmillisecondsbefore the next action runs.CanvasProperties.signInRedirectId: a screen that needs a signed-in user sends signed-out users to that canvas (requiresSignIn).ListViewNode.statusVariableandGridViewNode.statusVariable: a text variable a cloud list writes its query status into (kQueryStatusLoading,kQueryStatusEmpty,kQueryStatusError,kQueryStatusLoaded), for loading, empty and error states.ConfirmAction(ActionType.confirm): asks the user to confirm with a title, message and button labels (optionally destructive), then runsactionson confirm orcancelActionson cancel.
- Web view nodes always write their
webviewType,mapModeandembedTypediscriminators, so they read back from JSON. - Empty action lists, maps and sets are left out of JSON (conditional, for-each and cloud files actions, API call parameters, call function params, else conditions, condition groups, variable extras, text field autofill hints and variance properties); 5.2.0 and 5.3.0 read the shorter JSON back to equal objects.
NodeProcessor.updateNoderewrites edge pins from the node's box only for freeform children with no alignment (NodeProcessor.edgePinsPosition); children of rows and columns and aligned children keep their pins.
ShowToastAction(ActionType.showToast): shows a short message at the bottom of the screen, with an optional icon, colors, duration and offset.- Every node with fills, strokes or opacity now lists
fill,strokeandopacityin its property variables, and every node listswidthandheight, so conditions, bound variables and set value actions can change them at runtime.
AuthAction(ActionType.auth): sign up, sign in, sign out, update the profile and send a password reset email (AuthOperation), with an optional error variable.ConditionalAction(ActionType.conditional): an expression with then/else action lists, so action chains can branch.ForEachAction(ActionType.forEach): runs actions for each item of a list variable.CloudFilesAction(ActionType.cloudFiles): picks and uploads images to the project's storage, or deletes a file, running nested actions per file.
RowColumnNodehas a corner radius.- 8-digit
#AARRGGBBcolors set the paint's opacity when none is given. - Dates in list and map variables encode as ISO 8601 strings
(
encodeJsonValue), andVariableType.fromObjectTypemapsDateTimeto text.
BadgeNode('badge'): Material 3Badgeas a dot, label or count (BadgeType), optionally anchored to another node throughchildID.BadgePropertiesmirrors Flutter'sbackgroundColor,textColor,textStyle,smallSize,largeSize,padding,isLabelVisibleandBadge.count'smaxCount, plusBadgeAlignmentand anoffsetX/offsetYoffset (Flutter's defaultOffset(4, -4)).ChipNode('chip'): Material 3Chip,ActionChip,ChoiceChip,FilterChipandInputChip(ChipType).ChipPropertiescovers the label and its style, an icon or image avatar, the delete icon and its color, selection withshowCheckmark/checkmarkColor, colors, border, corner radius, elevation, paddings (Material 3 defaults: 8 px padding, 8 px horizontal label padding),tooltipandautofocus. Choice and filter chips expose aselectedproperty variable.SegmentedButtonNode('segmentedButton'): Material 3SegmentedButton<String>built fromButtonSegmentModels, withselected,multiSelectionEnabled,emptySelectionAllowed,showSelectedIcon,selectedIcon,direction, border, foreground and background colors for both states and a stadium-shaped default corner radius. The selection is exposed as theselectedproperty variable.- All three are registered with
NodeJsonConverter.
- These nodes first appeared on the unreleased
migrate-json-serializablebranch. JSON written with it still loads: keys are unchanged where a field was renamed to its Flutter name (dotSizeholdsBadgeProperties.smallSize,labelStyleholdsBadgeProperties.textStyle,selectedSegmentsholdsSegmentedButtonProperties.selected,selectedColor/unselectedColorholdselectedBackgroundColor/backgroundColor), and field access uses the same keys. - As with every other node, fields that equal their defaults are omitted.
- Require Dart 3.13.
- Replace the forked
codelessly_json_annotationandcodelessly_json_serializablewith the standardjson_annotationandjson_serializable. Custom nodes should importpackage:json_annotation/json_annotation.dart.DateTimeConverteris now exported by this package. - Upgrade to equatable 3, which removes
EquatableMixin; models mix inEquatableinstead. - Remove the unused blend and
valueconstructor parameters ofLoadingIndicatorNode,ProgressBarNodeandDividerNode, which were silently discarded. - Remove the unused
automaticChevronparameter ofExpansionTileProperties.copyWith.
- Serialized JSON is unchanged: fields that equal their defaults are still
omitted, now by a small build step in
tool/json_defaults_builder. Golden tests pin the output against 4.4.0. - Cloud database query
whereFilters/orderByFiltersare omitted when empty; they read back as empty lists.
- Mirror new Flutter values:
TextAlignHorizontalEnum.start/end,ButtonTypeEnum.filled/filledTonal,FABLocation.endContained,TextInputTypeEnum.webSearch/twitter,AutovalidateModeC.onUnfocus/onUserInteractionIfError,SliderTrackShapeEnum.gapped,SliderValueIndicatorShape.drop/roundedRectangleandCShapeBorder.roundedSuperellipse. - Add Flutter parameters that were missing:
AppBarProperties.foregroundColor,scrolledUnderElevationTabBarProperties.tabAlignment(newTabAlignmentC),dividerHeightRadioProperties.side,innerRadius,backgroundColorSliderProperties.showValueIndicator(newShowValueIndicatorC),secondaryTrackValue,secondaryActiveTrackColor,paddingListTileProperties.minTileHeight,titleAlignment(newListTileTitleAlignmentC)MaterialLoadingIndicatorProperties.strokeAlign,trackGapExpansionTileProperties.showTrailingIcon,shape,collapsedShape,cornerRadiusTextMixin.softWrap,textScaleFactorMultiSourceIconModel.fill,weight,grade,opticalSize(the Material Symbols variable-font axes)PageViewProperties.allowImplicitScrolling
- Document the Flutter replacements for deprecated
cacheExtent(scrollCacheExtent) andRadio.groupValue(RadioGroup). - New nodes use Material 3 defaults: switches use Material 3, buttons are stadium-shaped with 24 px horizontal padding, FABs are rounded rectangles (radius 16) with Material 3 elevations, a 56 px extended height and 8 px icon spacing, list and expansion tiles use 16/24 px content padding, tab indicators size to the label, and navigation bars use elevation 3 (M3) and 8 (M2).
- Designs saved before 5.0.0 keep their look: a missing key still reads as
the old default, and re-saving them writes the same JSON. The new
JsonLegacyDefaultannotation supports this for non-literal defaults.
- Register
PlaceholderNodewithNodeJsonConverter; layouts containing one failed to deserialize. ListTileNode.empty/fromPropertiesandExpansionTileNode.emptyno longer leave late fields uninitialized.FloatingActionButtonNode.emptyandEmbeddedVideoNode.emptyuse their own sizes.copyWithkeeps Dividerthickness, Dropdownenabled/dense/expanded/autoFocus/enableFeedback, FABlocation, M2 navigation bar notch settings.- Remove the
contentPaddingparameter ofInputDecorationModel.copyWith, which was ignored; a text field's content padding is its node padding. - Equality includes previously ignored fields of ExpansionTile, grid delegates, Dropdown, Divider, FAB, ListTile, TabBar, icons, web views, submit actions, Vimeo videos, condition groups and visual density.
TypedValue.toEdgeInsetsModelconverts numbers and lists again.- Add field access for
TextFieldPropertiesand the navigation bar properties.
- Add CornerRadius typedValue.
- Fix icon props deserialization for backwards compatibility.
- Create new Placeholders node.
- Add enable and disable node feature.
- Add new BlendModes support.
- Enable RenderedLayoutModel for buttons and dropdowns.
- Fix dropdown onChanged callback value.
- Fix lint issues.
- Add
NodeBox.fromCentermethod. - Use TextProp instead of StartEndProp.
- Fix AppBar constraints.
- Add
Brightnessproperty for Codelessly emulator support.
- Update codelessly_json_serializable to v4.9.0.
- Require Dart SDK v3.5 or higher.
- Owner field & admin Role migration.
- Create
wherequery API. - Add new
VariableType.image. - Add Date decoder.
- New TextInputField features! This is the first batch of improvements to the TextInput component and includes the following:
- Added Autofill Hints support.
- Added Text Input Validator.
- Added Text Input Formatter.
- Added Submit Keyboard Action selector.
- Update external components with reactions.
- Add click and long click reactions to rectangle node.
- Update Checkbox shrinkwrap and padding sizing.
- Change default Stroke cap to none.
- Optimize node sorting algorithm.
- Custom Layout IDs support! Now you can give your CloudUIs a name which makes identifying them much easier.
- Teams v1 support.
- Initial CloudUI support for Layout Groups.
- Display different layouts for different screen sizes.
- Fix text node not allowing actions.
- New StyleSheets support! Define common color and text styles.
- Update GridView
childAlignmentproperty. Minor refactor. - Improve Edge Pins.
- Fix edge pins not being saved.
- Clamp edge pins to positive values in wrapping parent layouts.
- Remove Montserrat font.
- Implement isTrue and isFalse operators for conditions.
- Refactor operator filtering to use index if available.
- New AutoComplete support for Variables.
- Fix disable automatic padding from Frames with strokes.
- Official v1 release!
- Update triggers types.
- Fix integer functions crashing with NaN and infinite values.
- Codelessly Data support. Save and write data to Codelessly Cloud.
- New GridView widget.
- Codelessly Data Query Filters support. Sort and filter data.
- Variable improvements.
- Include 'set' and 'replace' operations for list operations.
- Add new ${value} predefined variable to expose internal node data. TextFields only for now.
- Track internal value with new NodeProvider InheritedWidget per-widget.
- TextField improvements.
- Add support for actions on prefix and suffix icons on text fields.
- Fix set operation on map not showing input field.
- Implement proper TextFieldModel minimum size computation.
- Add support for TextInputType.numberWithOptions.
- JSON improvements.
- Fix json variable controller highlighting.
- Fix json syntax highlighting for storage operations.
- Fix focus nodes for json variable input fields.
- List improvements.
- Add insertAll option for list operations
- Refactor insert list operation to use json input field.
- Add copy-paste and shortcuts support for actions.
- Add support for non-blocking actions.
- Implement option to enable/disable action.
- Add firebase queries support for grid view.
- Add support for number operations.
- Fix drag and drop insert to the edge of Accordion, Expansion Tile, ListView, and PageView.
- Migrate Variables and Conditions to use permissions model.
- TextField Improvements
- Fix shrink-wrapping conflict with expands property.
- Fix text field model not calculating text field height properly for shrink-wrapping.
- Allow min lines and max lines input fields to clear.
- Fix shrink-wrap height calculation being affected by isDense property.
- Implement safe area for canvases.
- Fix scroll physics and always scrollable option.
- New Dialogs feature! 100% customizable dialogs with customizable close button, background, and padding.
- New show dialog action.
- New show dialog settings panel.
- Fix Edge Pins not syncing with server.
- Fix PageView triggers not executing.
- Embedded Canvases V1.
- Embed canvases into layouts.
- Local Storage V1.
- Store and persist data locally.
- Optimize JSON data to reduce data usage and storage by 80%.
- Remove dependency on Flutter.
- New shrink-wrap support for Buttons. Buttons can now resize based on the content inside them.
- New shrink-wrapping support for Slider, Switch, and Radio Button components.
- Fix ListView and PageView reverse scroll direction not enabled.
- Add
resolvedConstraintoverride.
- Load APIs V1.
- Fix ExpansionTiles layout and functionality issues.
- Fix reactions not being modified.
- Add hover and splash color to dropdown node.
- Miscellaneous fixes.
- New
SetMapVariableActionsupport for map variables. - Support more conditions.
isEmpty,isNotEmpty,containsisOdd,isEven,isNull
- Add
removefor list type variable. - Remove deprecations and update formatting and documentation.
- Scrolling V1. Enable scrolling for Columns, Frames, and Canvases.
- Create list operations and index for List
SetVariableAction.
- New simplified variables system. Variables passed into the CodelesslyWidget can now be referenced by name in the Codelessly Editor.
CodelesslyWidget(
data: {
'title': 'My Title',
'productData': { // JSON Data
'nested': {
'json': {
'path': 'Hey there!',
}
}
}
}
)
// Now you can access the variable directly in the Codelessly Editor.
${title} - 'My Title'
// Or, using the `data` object.
${data.title} - 'My Title'
${data.productData.nested.json.path} - 'Hey there!'
- Add
>=,<=, and== nulloperators. - Add data and variable support for dropdown component.
- Add Material 3 Switch UI component.
- Add Rounded Circular Progress Indicator component.
- Improve InkWell behavior. Show Inkwell effect on top of other widgets.
- Prototype implementation of custom widget embedding feature.
- Optimize SDK size by 90% by switching to SVG icons.
- Enable variables copy and paste.
- Enable conditions copy and paste.
- Fix canvas fill condition not working when there's only 1 fill.
- Text field and code-gen improvements.
- Add
showCounterfor input decoration. - Fix text field counter text not working properly.
- Fix text field with incorrect sizing in codegen.
- Add support for Tabs.
- Add TextField support for variables.
- Add FAB support for variables.
- Update type support to support null values.
- Add improved Variables type support.
- Add Variables and Conditions support.
- Update SDK constraints.
- Update ReadMe.
- Upgrade to Flutter 3.10 and Dart 3.
- Add support for Listview and Pageview.
- Add support for API call action.
- Remove
ScrollLinkableMixin. - Add method to compare two font weights.
- Add method to generate a random ID.
- Update example.md.
- Update documentation.
- Initial Release.