toJson method
Abstract function that concrete classes must implement. This must encode the internal data model to a JSON compatible representation.
While not required, it is suggested to call removeNull before returning.
Implementation
@override
Map<String, dynamic> toJson() {
return JsonClass.removeNull({
'autofocus': false == autofocus ? null : autofocus,
'borderRadius': ThemeEncoder.encodeBorderRadius(borderRadius),
'canRequestFocus': true == canRequestFocus ? null : canRequestFocus,
'customBorder': ThemeEncoder.encodeShapeBorder(customBorder),
'enableFeedback': true == enableFeedback ? null : enableFeedback,
'excludeFromSemantics':
false == excludeFromSemantics ? null : excludeFromSemantics,
'focusColor': ThemeEncoder.encodeColor(focusColor),
'focusNode': focusNode,
'highlightColor': ThemeEncoder.encodeColor(highlightColor),
'hoverColor': ThemeEncoder.encodeColor(hoverColor),
'hoverDuration': hoverDuration?.inMilliseconds,
'mouseCursor': ThemeEncoder.encodeMouseCursor(mouseCursor),
'onDoubleTap': onDoubleTap,
'onFocusChange': onFocusChange,
'onHighlightChanged': onHighlightChanged,
'onHover': onHover,
'onLongPress': onLongPress,
'onSecondaryTap': onSecondaryTap,
'onSecondaryTapCancel': onSecondaryTapCancel,
'onSecondaryTapDown': onSecondaryTapDown,
'onSecondaryTapUp': onSecondaryTapUp,
'onTap': onTap,
'onTapCancel': onTapCancel,
'onTapDown': onTapDown,
'onTapUp': onTapUp,
'overlayColor': overlayColor,
'radius': radius,
'splashColor': ThemeEncoder.encodeColor(splashColor),
'splashFactory': ThemeEncoder.encodeInteractiveInkFeatureFactory(
splashFactory,
),
'statesController': statesController,
'child': child?.toJson(),
...args,
});
}