codelessly_sdk
library
Classes
AdaptiveNodeBox
A Widget that will fit its child to the size of the BaseNode
, taking
into account the node's BaseNode.horizontalFit
and BaseNode.verticalFit
.
AdaptiveSizeFitBox
A Widget that will fit its child to the size of the SizeC
, taking
into account the SizeFit
values.
ApiResponseVariableUtils
Helper utility class to easily convert ApiResponseVariable
to a map and
update different statuses.
AppBarDefaults
AssetModel
Defines an asset that is utilized throughout node data as an id and
looked up for information about the asset based on that id.
AuthData
Holds data returned from the server after a successful handshake.
AuthManager
An abstraction for providing authentication to the SDK.
BaseErrorHandler
Abstraction for handling any error that the SDK throws.
BuildSettings
A class that holds information about how to build a node.
ButtonDefaults
CacheManager
Abstraction for caching UI data locally for better performance.
CConfigured
CEmpty
CError
CheckBoxDefaults
CLoaded
CLoading
CloudDatabase
Allows access to cloud storage. Implementations of this class should be
able to store and retrieve data from the cloud storage in secure manner.
This is mainly used to store data on cloud via actions for the SDK.
CloudDatabaseVariableUtils
Helper utility class to easily update different statuses for cloud storage variable
Codelessly
The entry point for accessing the Codelessly SDK.
CodelesslyAuthManager
An implementation of that uses Firebase auth.
CodelesslyCacheManager
Handles caching of any data that needs to be cached via Hive.
CodelesslyConfig
Holds initialization configuration options for the SDK.
CodelesslyContext
Holds data passed from the Codelessly instance down the widget tree where
all of the WidgetNodeTransformer
s have access to it.
CodelesslyErrorHandler
Can be used to capture all the exceptions, errors and events
inside the SDK.
CodelesslyLogger
CodelesslyStatTracker
A StatTracker implementation that sends the stats to Codelessly's server.
CodelesslyWidget
SDK widget that requires the SDK to be initialized beforehand.
CodelesslyWidgetController
The provides advanced explicit control over
the state of the instantiated CodelesslyWidget that it is attached to.
ComponentData
Holds component's node data and containing rect size data.
CStatus
CupertinoLoadingIndicatorDefaults
CustomComponent
A model to hold custom component data.
DataManager
Orchestrates the data flow for the SDK.
DividerDefaults
ExpansionTileDefaults
FirebaseDataRepository
Handles the data flow of SDKPublishModel from the server.
FirestoreCloudDatabase
A implementation that uses Firestore as the backend.
This is used to store data via actions for the SDK.
FloatingActionButtonDefaults
FontFamilyModel
Holds information about font family.
FontFileData
FontNameBin
FontParser
FontVariantModel
Holds information about a font variant in a font family.
GridViewBuilder
HiveLocalDatabase
A LocalDatabase implementation that uses Hive
as the underlying storage.
This is used to store data via actions for the SDK.
HttpApiData
HttpKeyValuePair
IconDefaults
IndexedItem
IndexedItemProvider
ListTileDefaults
ListViewBuilder
ListViewItemSeparator
LocalDatabase
Allows access to local storage on the device. Implementations of this class
should be able to store and retrieve data from the device's local storage.
This is mainly used to store data via actions for the SDK.
LocalDataRepository
The local data repository is responsible for storing and retrieving the
published model and associated layouts and font files from CacheManager .
LookupMap <T >
An extension type that allows for automatic correction of custom ids to
the original id.
LoopingList <T >
A helper class that loops or repeats the values of a given list.
M2NavigationBarDefaults
M3NavigationBarDefaults
ManagedListenableBuilder
MaterialLoadingIndicatorDefaults
NetworkDataRepository
An abstract class that represents the operations that a DataManager will
need to utilize to offer a complete usage experience of a Codelessly
layout.
NodeRegistry
In the SDK we are not using GetIt, so this singleton should help making
the nodes available when they are needed.
NodeStateProviderWidget
Makes it so NodeStateProvider
's state is kept around and not recreated
on every widget rebuild.
NodeTransformerManager <O , BC , BS extends BuildSettings , NT extends NodeTypeTransformer <BaseNode , dynamic , dynamic , BuildSettings > >
The base class for all node transformers. It holds a registry that maps
node types to their relevant transformers.
NodeTypeTransformer <N extends BaseNode , O , BX , BS extends BuildSettings >
This is the base class for all transformers.
NodeWidgetTransformer <N extends BaseNode >
This is the base class for all widget transformers, transforming
BaseNode
s into Flutter Widget s.
Observable <T >
A custom Value notifier that lets you set the value without notifying
listeners via set method.
PassiveAccordionTransformer
PassiveAccordionWidget
PassiveAppBarTransformer
PassiveAppBarWidget
PassiveButtonTransformer
PassiveButtonWidget
PassiveCanvasTransformer
PassiveCanvasWidget
PassiveCheckboxTransformer
PassiveCheckboxWidget
PassiveDividerTransformer
PassiveDividerWidget
PassiveDropdownTransformer
PassiveDropdownWidget
PassiveEmbeddedVideoTransformer
PassiveEmbeddedVideoWidget
PassiveExpansionTileTransformer
PassiveExpansionTileWidget
PassiveExternalComponentTransformer
PassiveExternalComponentWidget
PassiveFloatingActionButtonTransformer
PassiveFloatingActionButtonWidget
PassiveGridViewTransformer
PassiveGridViewWidget
PassiveIconTransformer
PassiveIconWidget
PassiveListTileTransformer
PassiveListTileWidget
PassiveListViewTransformer
PassiveListViewWidget
PassiveLoadingIndicatorTransformer
PassiveLoadingIndicatorWidget
PassiveNavigationBarTransformer
PassiveNavigationBarWidget
PassiveNodeTransformerManager
This is the passive implementation of the NodeTransformerManager ,
registering all the transformers that are available in the SDK.
PassivePageViewTransformer
PassivePageViewWidget
PassivePlaceholderTransformer
PassiveProgressBarTransformer
PassiveProgressBarWidget
PassiveRadioTransformer
PassiveRadioWidget
PassiveRectangleTransformer
PassiveRectangleWidget
PassiveRowColumnTransformer
PassiveRowColumnWidget
PassiveSinglePlaceholderTransformer
PassiveSinglePlaceholderWidget
PassiveSliderTransformer
PassiveSliderWidget
PassiveSpacerTransformer
PassiveStackTransformer
PassiveSwitchTransformer
PassiveSwitchWidget
PassiveTabBarTransformer
PassiveTabBarWidget
PassiveTextFieldTransformer
PassiveTextFieldWidget
PassiveTextTransformer
PassiveTextWidget
PassiveVarianceTransformer
PassiveVarianceWidget
PassiveWebViewTransformer
PassiveWebViewWidget
PortalPreviewWidget
PrivacyBase
Represents the privacy controls of a given model that this mixin
is applied to.
ProgressBarDefaults
PropertyValueDelegate
A delegate class that helps retrieving the value of a node property from
multiple sources such as conditions, variables, data, and node values.
RadioDefaults
RawWebViewWidget
RelativeTransform
ScopedValues
A class that holds the scoped values for a widget/context. This is helpful
access context bound data in a widget tree. This makes it so that you don't
have to pass context around to access data and end up using context
across async gaps. This collects all the data you need in one place
before-hand so that you can access it later.
SDKLayoutConditions
A model that defines variables for a layout.
SDKLayoutVariables
A model that defines variables for a layout.
SDKPublishFont
Represents a single variation of a common font.
SDKPublishLayout
SDKPublishModel
A model that represents the collection of published layouts.
SDKPublishUpdates
SliderDefaults
StatTracker
A class that tracks statistics of various operations in the SDK.
StrictNodeBox
A Widget that will fit its child to the size of the BaseNode
, it will
not take into account the node's BaseNode.horizontalFit
and
BaseNode.verticalFit
. It will strictly use the
BaseNode.middleBoxLocal
as the size of the node.
StripePainter
StrokePainter
This stroke painter is needed because Flutter's built in stroke for
containers only does inside strokes and doesn't do dotted borders.
SvgIcon
SvgIconImage
SwitchDefaults
TabBarDefaults
TextFieldDefaults
TextUtils
ThemeDefaults
UltimateImageBuilder
Ultimate widget to build image from url, bytes or paint. Supports Gifs and
SVGs too!
VariableMatch
Parsed data from a variable path using variablePathRegex
.
VariableSpan
A TextSpan that represents a variable by rendering an "FX" symbol instead
of the variable name.
VimeoVideoPreviewUI
WebDataRepository
A NetworkDataRepository implementation that utilizes the Firebase Cloud
Functions to retrieve the relevant data.
WebViewPreviewWidget
WidgetBuildSettings
A class that holds information about how to build a node that is to be
output as a Flutter widget.
WidgetNodeTransformerManager
A wrapper class for both PassiveNodeTransformerManager and
ActiveNodeTransformerManager
.
YoutubeVideoPreviewUI
Functions
apiNameToVariableName (String name )
→ String
applyGradientRotation (List <num > ? t1 , double angle )
→ List <num >
buildFills (BaseNode node , {Map <int , TypedBytes > imageBytes = const {} , double ? imageOpacity , double ? imageRotation , ImageFillBuilder ? imageFillBuilder , bool useInk = true , bool obscureImages = false , required WidgetBuildSettings settings , required ScopedValues scopedValues })
→ List <Widget >
buildStrokes (BaseNode node , ScopedValues scopedValues )
→ List <Widget >
buildVimeoEmbedUrl ({required EmbeddedVimeoVideoProperties properties , required double ? width , required double ? height , required String baseUrl })
→ String
buildYoutubeEmbedUrl ({required EmbeddedYoutubeVideoProperties properties , required double ? width , required double ? height , required String baseUrl })
→ String
colorToRGB (Color color )
→ ColorRGB
Converts a Flutter Color to a ColorRGB
object.
colorToRGBA (Color color )
→ ColorRGBA
Converts a Flutter Color to a ColorRGBA
object.
constructQueryFromRef (Query<Map <String , dynamic > > ref , {required List <WhereQueryFilter > whereFilters , required List <OrderByQueryFilter > orderByOperations , int ? limit , required ScopedValues scopedValues , required NullSubstitutionMode nullSubstitutionMode })
→ Query<Map <String , dynamic > >
Constructs a Query
on top of given Query
reference using given whereFilters
and orderByOperations
.
convertAlignmentToPosition ({required double parentWidth , required double parentHeight , required double childWidth , required double childHeight , required double alignmentX , required double alignmentY })
→ Vec
convertNodeToButtonType (ButtonTypeEnum type , ButtonNode node )
→ void
createMasterButtonStyle (ButtonNode node , {double ? elevation , required ScopedValues scopedValues })
→ ButtonStyle
Flutter's ButtonStyle parameters do different things depending on the button
type. So we have to manually change them.
dashPath (Path path , double length , [double ? gap , double ? distance = 0 ])
→ Path
Converts a path
to a dashed Path with a given length
and gap
.
The distance
parameter can be used to offset the dash pattern.
decomposeRelativeTransform (List <num > ? t1 )
→ RelativeTransform
defaultGetClipBehavior (BaseNode node )
→ Clip
defaultGradientTransform ()
→ List <num >
deriveFontFamily ({required String family , required String style , required FontWeightNumeric? weight })
→ String
deserializeCosmicValue (Object ? value )
→ DateTime ?
Returns empty string if the url is not a valid vimeo video url.
Returns empty string if the url is not a valid youtube video url.
getAccessorsForType (VariableType type )
→ List <Accessor >
Defines accessors for a variable based on its type.
getApiResponseAccessorsForType (VariableType dataType )
→ List <Accessor >
Defines accessors for an api variable based on the type of date it holds.
getApisToLoadForCanvas (CanvasNode canvasNode )
→ Set <String >
Returns a list of api ids that should be loaded for a given canvasNode
.
getBorderRadius (BaseNode node )
→ BorderRadius ?
getBoxShape (dynamic node )
→ BoxShape
getButtonShape (ButtonNode node , ScopedValues scopedValues )
→ OutlinedBorder ?
getCloudDataVariableAccessorsForType (VariableType dataType )
→ List <Accessor >
Defines accessors for a cloud data variable based on the type of date it holds.
getEffectiveChildSizeForImage (BaseNode node , PaintModel paint , {double ? scaleX , double ? scaleY })
→ SizeC
Get effective child size for image position calculation for rendering
alignment overlay for images.
getFontFamilyNameAndVariant (FontName fontName , {FontFamilyModel ? familyModel })
→ String
Returns the Flutter-usable font family name for the given fontName
.
getLargestNodeForWrappingStack (BaseNode parent , List <BaseNode > sibling )
→ BaseNode?
If the parent
is wrapping on an axis, one of its siblings
is going to be
laid out without Positioned or Align, marking the child as the best
candidate for the Stack to figure out its own size.
getLinearGradientAlignment (double rotationDeg )
→ void
getShape ({required CShapeBorder shape , required CornerRadius radius , ColorRGBA? borderColor , double ? borderWidth })
→ OutlinedBorder
getShapeFromMixin (ShapeBorderMixin mixin , {bool onlyShape = false })
→ OutlinedBorder ?
getSliderLabel (SliderNode node , double value )
→ String ?
getTallestNode (Iterable <BaseNode > siblings )
→ BaseNode?
Retrieves the tallest child from given siblings
.
getVideoUrl (EmbeddedVideoSource source , String baseUrl )
→ String
baseUrl
param allows to override the base url of the video.
getWidestNode (Iterable <BaseNode > siblings )
→ BaseNode?
Retrieves the widest child from given siblings
.
greatestCommonDivisor (int a , int b )
→ int
Returns the greatest common divisor (gcd) of two integers using Euclid's
algorithm.
greatestCommonDivisorOfMany (List <int > integers )
→ int
Returns the greatest common divisor (gcd) of the input integers using
Euclid's algorithm.
isCustomPositionRequiredForImage (PaintModel paint , SizeC nodeSize )
→ bool
This fixes an issue with Flutter's image aligning. Flutter can't align
image with given alignment when the widget and image both have same size.
This is a workaround for that. It uses a stack in that case.
leastCommonMultiple (int a , int b )
→ int
Returns the least common multiple (lcm) of two integers using Euclid's
algorithm.
leastCommonMultipleOfMany (List <int > integers )
→ int
Returns the least common multiple (lcm) of many BigInt using Euclid's
algorithm.
main (List <String > args )
→ void
mostCommon <T > (List <T > list )
→ T?
Returns the most common value in a list.
Returns null for ties.
nearestValue (double goal , List <double > array )
→ double
retrieveBoxShadow (BaseNode node , ScopedValues scopedValues )
→ List <BoxShadow >
retrieveColorFromPaint (PaintModel paint )
→ Color
Converts a PaintModel
to a Color object.
retrieveCommonStackAlignment (BaseNode parent , List <BaseNode > nodes )
→ AlignmentModel
retrieveFillColor (GeometryMixin node )
→ Color
Converts the fills of a given node
to a single Color object.
retrieveGradient (PaintModel paint )
→ Gradient ?
retrieveIconWidget (MultiSourceIconModel icon , [double ? size , Color ? themeColor ])
→ Widget ?
retrieveNavBarItemIconWidget (MultiSourceIconModel icon , [double ? size , Color ? themeColor ])
→ Widget
retrieveStrokeColor (GeometryMixin node , [int index = 0 , bool all = false ])
→ Color
Converts the strokes of a given node
to a single Color object.
sanitizeCloudDataForUse (Map <String , dynamic > data , {required String docId })
→ Map <String , dynamic >
Returns a sanitized version of the given data
to be used in the SDK
and variables.
Updates the SDKConstants.createdAt
and SDKConstants.updatedAt
fields
with the current time.
sanitizeCloudDataToSend (Map <String , dynamic > data , {required String ? docId , bool hidePrivateFields = false })
→ Map <String , dynamic >
Returns a sanitized version of the given data
to be sent to the cloud
storage.
Updates the SDKConstants.createdAt
and SDKConstants.updatedAt
fields
with the current time.
serializedCosmicValue (Object ? value )
→ String ?
Returns a sanitized date string from the given value
.
Converts different representation of date to a string representation.
transformNodeFromIconButton (ButtonNode node )
→ void
transformNodeToIconButton (ButtonNode node )
→ void
wrapWithInkWell (BuildContext context , BaseNode node , List <Widget > children )
→ List <Widget >
wrapWithPaddedScrollable ({required ScrollableMixin node , EdgeInsets ? padding , Clip ? clipBehavior , required Widget child })
→ Widget
wrapWithPadding (BaseNode node , List <Widget > children , {required AlignmentModel stackAlignment , bool applyPadding = true })
→ List <Widget >
wrapWithPaddingAndScroll (BaseNode node , List <Widget > children , {required AlignmentModel stackAlignment , bool applyPadding = true })
→ List <Widget >
Typedefs
BreakpointsListener
= void Function(BuildContext context , Breakpoint breakpoint )
BuildWidgetFromID
= Widget Function(String id , BuildContext context )
BuildWidgetFromNode
= Widget Function(BaseNode node , BuildContext context )
CodelesslyFunction <T >
= FutureOr <T > Function(BuildContext context , CodelesslyContext reference , Map <String , dynamic > params )
A function signature passing functions into CodelesslyWidget .
CodelesslyWidgetErrorBuilder
= Widget Function(BuildContext context , dynamic exception )
Allows creation of a custom error screen for when a Codelessly layout
fails to load.
CodelesslyWidgetLayoutBuilder
= Widget Function(BuildContext context , Widget layout )
Allows wrapping a loaded Codelessly layout with any widget for additional
control over the rendering.
ExceptionCallback
= void Function(CodelesslyException e )
A typedef
that defines the callback for CodelesslyErrorHandler .
It allows supplementary handling of any captured exceptions that the SDK
throws.
ImageFillBuilder
= Widget Function(String url , double width , double height , PaintModel paint , TypedBytes ? bytes , bool useInk , bool obscureImages )
LayoutRetrieverBuilder
= Widget Function(BuildContext context , SizeC bounds , String pageID , String layoutID , String canvasID )
LookupMapRecord <T >
= ({Map <String , T > dataMap , Map <String , String > lookupMap } )
A record typedef that holds a lookup map and a data map.
This is used to create a LookupMap extension type.
NavigationListener
= void Function(BuildContext context )
TypedBytes
= ({Uint8List bytes , ResourceType type } )
Allows to carry information about the type of bytes. This is useful when
decoding is required and the type of bytes is necessary to know how to
decode them.
WidgetInserter
= Widget Function(Widget child )
Exceptions / Errors
CodelesslyException
A generic exception intended to be used inside the SDK to throw exceptions
to user facing interfaces.