Commit 5fc6cc71 by Rizal Hermawan

feat (widget-parse-method) : This package can accept variable submissions from…

feat (widget-parse-method) : This package can accept variable submissions from application. Story #3
parent 5b1e4b02
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
# #
# For more info see: https://dart.dev/go/dot-packages-deprecation # For more info see: https://dart.dev/go/dot-packages-deprecation
# #
# Generated by pub on 2021-06-16 11:37:19.886806. # Generated by pub on 2021-06-23 16:39:43.392636.
args:file:///D:/flutter/2.0.4-stable/.pub-cache/hosted/pub.dartlang.org/args-2.1.1/lib/ args:file:///D:/flutter/2.0.4-stable/.pub-cache/hosted/pub.dartlang.org/args-2.1.1/lib/
async:file:///D:/flutter/2.0.4-stable/.pub-cache/hosted/pub.dartlang.org/async-2.5.0/lib/ async:file:///D:/flutter/2.0.4-stable/.pub-cache/hosted/pub.dartlang.org/async-2.5.0/lib/
boolean_selector:file:///D:/flutter/2.0.4-stable/.pub-cache/hosted/pub.dartlang.org/boolean_selector-2.1.0/lib/ boolean_selector:file:///D:/flutter/2.0.4-stable/.pub-cache/hosted/pub.dartlang.org/boolean_selector-2.1.0/lib/
......
...@@ -4,7 +4,7 @@ import 'package:flutter/widgets.dart'; ...@@ -4,7 +4,7 @@ import 'package:flutter/widgets.dart';
class AlignWidgetParser extends WidgetParser { class AlignWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return Align( return Align(
alignment: map.containsKey("alignment") alignment: map.containsKey("alignment")
? parseAlignment(map["alignment"]) ? parseAlignment(map["alignment"])
...@@ -16,7 +16,7 @@ class AlignWidgetParser extends WidgetParser { ...@@ -16,7 +16,7 @@ class AlignWidgetParser extends WidgetParser {
? map["heightFactor"]?.toDouble() ? map["heightFactor"]?.toDouble()
: null, : null,
child: WidgetParserBuilder.buildFromMap( child: WidgetParserBuilder.buildFromMap(
map["child"], buildContext, listener), map["child"], buildContext, listener, variable),
); );
} }
......
...@@ -4,20 +4,20 @@ import 'package:flutter/material.dart'; ...@@ -4,20 +4,20 @@ import 'package:flutter/material.dart';
class AppBarWidgetParser extends WidgetParser { class AppBarWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
var appBarWidget = AppBar( var appBarWidget = AppBar(
key: map.containsKey("key") ? createKeyForWidget(map["key"]) : null, key: map.containsKey("key") ? createKeyForWidget(map["key"]) : null,
title: map.containsKey("title") title: map.containsKey("title")
? WidgetParserBuilder.buildFromMap( ? WidgetParserBuilder.buildFromMap(
map["title"], buildContext, listener) map["title"], buildContext, listener, variable)
: null, : null,
leading: map.containsKey("leading") leading: map.containsKey("leading")
? WidgetParserBuilder.buildFromMap( ? WidgetParserBuilder.buildFromMap(
map["leading"], buildContext, listener) map["leading"], buildContext, listener, variable)
: null, : null,
actions: map.containsKey("actions") actions: map.containsKey("actions")
? WidgetParserBuilder.buildWidgets( ? WidgetParserBuilder.buildWidgets(
map["actions"], buildContext, listener) map["actions"], buildContext, listener, variable)
: null, : null,
centerTitle: centerTitle:
map.containsKey("centerTitle") ? map["centerTitle"] as bool? : false, map.containsKey("centerTitle") ? map["centerTitle"] as bool? : false,
......
...@@ -3,11 +3,11 @@ import 'package:flutter/widgets.dart'; ...@@ -3,11 +3,11 @@ import 'package:flutter/widgets.dart';
class AspectRatioWidgetParser extends WidgetParser { class AspectRatioWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return AspectRatio( return AspectRatio(
aspectRatio: map["aspectRatio"]?.toDouble(), aspectRatio: map["aspectRatio"]?.toDouble(),
child: WidgetParserBuilder.buildFromMap( child: WidgetParserBuilder.buildFromMap(
map["child"], buildContext, listener), map["child"], buildContext, listener, variable),
); );
} }
......
...@@ -3,14 +3,14 @@ import 'package:flutter/widgets.dart'; ...@@ -3,14 +3,14 @@ import 'package:flutter/widgets.dart';
class BaselineWidgetParser extends WidgetParser { class BaselineWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return Baseline( return Baseline(
baseline: map["baseline"]?.toDouble(), baseline: map["baseline"]?.toDouble(),
baselineType: map["baselineType"] == "alphabetic" baselineType: map["baselineType"] == "alphabetic"
? TextBaseline.alphabetic ? TextBaseline.alphabetic
: TextBaseline.ideographic, : TextBaseline.ideographic,
child: WidgetParserBuilder.buildFromMap( child: WidgetParserBuilder.buildFromMap(
map["child"], buildContext, listener), map["child"], buildContext, listener, variable),
); );
} }
......
...@@ -3,7 +3,7 @@ import 'package:flutter/widgets.dart'; ...@@ -3,7 +3,7 @@ import 'package:flutter/widgets.dart';
class CenterWidgetParser extends WidgetParser { class CenterWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return Center( return Center(
widthFactor: map.containsKey("widthFactor") widthFactor: map.containsKey("widthFactor")
? map["widthFactor"]?.toDouble() ? map["widthFactor"]?.toDouble()
...@@ -12,7 +12,7 @@ class CenterWidgetParser extends WidgetParser { ...@@ -12,7 +12,7 @@ class CenterWidgetParser extends WidgetParser {
? map["heightFactor"]?.toDouble() ? map["heightFactor"]?.toDouble()
: null, : null,
child: WidgetParserBuilder.buildFromMap( child: WidgetParserBuilder.buildFromMap(
map["child"], buildContext, listener), map["child"], buildContext, listener, variable),
); );
} }
......
...@@ -4,22 +4,13 @@ import 'package:flutter/widgets.dart'; ...@@ -4,22 +4,13 @@ import 'package:flutter/widgets.dart';
class ClipRRectWidgetParser extends WidgetParser { class ClipRRectWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
var radius = map['borderRadius'].toString().split(",");
double topLeft = double.parse(radius[0]);
double topRight = double.parse(radius[1]);
double bottomLeft = double.parse(radius[2]);
double bottomRight = double.parse(radius[3]);
var clipBehaviorString = map['clipBehavior']; var clipBehaviorString = map['clipBehavior'];
return ClipRRect( return ClipRRect(
borderRadius: BorderRadius.only( borderRadius: map.containsKey('borderRadius') ? parseBorderRadius(map['borderRadius']) : null,
topLeft: Radius.circular(topLeft),
topRight: Radius.circular(topRight),
bottomLeft: Radius.circular(bottomLeft),
bottomRight: Radius.circular(bottomRight)),
clipBehavior: parseClipBehavior(clipBehaviorString), clipBehavior: parseClipBehavior(clipBehaviorString),
child: WidgetParserBuilder.buildFromMap( child: WidgetParserBuilder.buildFromMap(
map["child"], buildContext, listener), map["child"], buildContext, listener, variable),
); );
} }
......
import 'package:widgetparser/widgetparser.dart'; import 'package:widgetparser/widgetparser.dart';
import 'package:widgetparser/src/utils.dart'; import 'package:widgetparser/src/utils.dart';
import 'package:widgetparser/src/json_schema.dart'; import 'package:widgetparser/src/json_schema_helper.dart';
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
class ContainerWidgetParser extends WidgetParser { class ContainerWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
Alignment alignment = parseAlignment(map['alignment']); Alignment alignment = parseAlignment(map['alignment']);
Color? color = parseHexColor(map['color']); Color? color = parseHexColor(map['color']);
BoxConstraints constraints = parseBoxConstraints(map['constraints']); BoxConstraints constraints = parseBoxConstraints(map['constraints']);
...@@ -14,7 +14,7 @@ class ContainerWidgetParser extends WidgetParser { ...@@ -14,7 +14,7 @@ class ContainerWidgetParser extends WidgetParser {
Map<String, dynamic>? childMap = map['child']; Map<String, dynamic>? childMap = map['child'];
Widget? child = childMap == null Widget? child = childMap == null
? null ? null
: WidgetParserBuilder.buildFromMap(childMap, buildContext, listener); : WidgetParserBuilder.buildFromMap(childMap, buildContext, listener, variable);
var containerWidget = Container( var containerWidget = Container(
alignment: alignment, alignment: alignment,
...@@ -30,21 +30,21 @@ class ContainerWidgetParser extends WidgetParser { ...@@ -30,21 +30,21 @@ class ContainerWidgetParser extends WidgetParser {
const containerSchema = ''' const containerSchema = '''
{ {
"\$schema\": $schemaUrl, "\$schema\": "$schemaUrl",
"\$ref\": "${refSchema}Container", "\$ref\": "${refSchema}Container",
"definitions": { "definitions": {
"Container": { "Container": {
"type": "object", "type": "object",
"additionalProperties": false, "additionalProperties": true,
"properties": { "properties": {
"widget": { "widget": {
"type": "string" "type": "string"
}, },
"alignment": ${WidgetSchema.alignment}, "alignment": ${SchemaHelper.alignment},
"padding": { "padding": {
"type": "string" "type": "string"
}, },
"color": ${WidgetSchema.color}, "color": ${SchemaHelper.color},
"margin": { "margin": {
"type": "string" "type": "string"
}, },
...@@ -69,11 +69,11 @@ class ContainerWidgetParser extends WidgetParser { ...@@ -69,11 +69,11 @@ class ContainerWidgetParser extends WidgetParser {
], ],
"title": "Container" "title": "Container"
}, },
"Child": ${WidgetSchema.child}, "Child": ${SchemaHelper.child},
"Constraints": ${WidgetSchema.constraints}, "Constraints": ${SchemaHelper.constraints},
"Decoration": ${WidgetSchema.decoration}, "Decoration": ${SchemaHelper.decoration},
"BorderRadius": ${WidgetSchema.borderRadius}, "BorderRadius": ${SchemaHelper.borderRadius},
"BoxShadow": ${WidgetSchema.boxShadow} "BoxShadow": ${SchemaHelper.boxShadow}
} }
} }
'''; ''';
...@@ -112,12 +112,12 @@ class ContainerWidgetParser extends WidgetParser { ...@@ -112,12 +112,12 @@ class ContainerWidgetParser extends WidgetParser {
// } // }
// } // }
Map<String, dynamic> jsonSchemaResult = jsonSchemaValidation(containerSchema, map); // Map<String, dynamic> jsonSchemaResult = jsonSchemaValidation(containerSchema, map);
if (!jsonSchemaResult['validates']) { // if (!jsonSchemaResult['validates']) {
return jsonSchemaErrorWidget(jsonSchemaResult['validator']); // return jsonSchemaErrorWidget(jsonSchemaResult['validator']);
} else { // } else {
return containerWidget; return containerWidget;
} //}
} }
@override @override
......
...@@ -5,7 +5,7 @@ import 'package:flutter/material.dart'; ...@@ -5,7 +5,7 @@ import 'package:flutter/material.dart';
class DropCapTextParser extends WidgetParser { class DropCapTextParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return DropCapText( return DropCapText(
data: map.containsKey('data') ? map['data'] : null, data: map.containsKey('data') ? map['data'] : null,
selectable: map.containsKey('selectable') ? map['selectable'] : false, selectable: map.containsKey('selectable') ? map['selectable'] : false,
...@@ -20,7 +20,7 @@ class DropCapTextParser extends WidgetParser { ...@@ -20,7 +20,7 @@ class DropCapTextParser extends WidgetParser {
? parseTextAlign(map['textAlign']) ? parseTextAlign(map['textAlign'])
: TextAlign.start, : TextAlign.start,
dropCap: map.containsKey('dropCap') dropCap: map.containsKey('dropCap')
? parseDropCap(map['dropCap'], buildContext, listener) ? parseDropCap(map['dropCap'], buildContext, listener, variable)
: null, : null,
dropCapPadding: map.containsKey('dropCapPadding') dropCapPadding: map.containsKey('dropCapPadding')
? parseEdgeInsetsGeometry(map['dropCapPadding']) as EdgeInsets? ? parseEdgeInsetsGeometry(map['dropCapPadding']) as EdgeInsets?
......
...@@ -3,10 +3,10 @@ import 'package:flutter/widgets.dart'; ...@@ -3,10 +3,10 @@ import 'package:flutter/widgets.dart';
class ExpandedWidgetParser extends WidgetParser { class ExpandedWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return Expanded( return Expanded(
child: WidgetParserBuilder.buildFromMap( child: WidgetParserBuilder.buildFromMap(
map["child"], buildContext, listener)!, map["child"], buildContext, listener, variable)!,
flex: map.containsKey("flex") ? map["flex"] : 1, flex: map.containsKey("flex") ? map["flex"] : 1,
); );
} }
......
...@@ -4,14 +4,14 @@ import 'package:flutter/widgets.dart'; ...@@ -4,14 +4,14 @@ import 'package:flutter/widgets.dart';
class FittedBoxWidgetParser extends WidgetParser { class FittedBoxWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return FittedBox( return FittedBox(
alignment: map.containsKey("alignment") alignment: map.containsKey("alignment")
? parseAlignment(map["alignment"]) ? parseAlignment(map["alignment"])
: Alignment.center, : Alignment.center,
fit: map.containsKey("fit") ? parseBoxFit(map["fit"])! : BoxFit.contain, fit: map.containsKey("fit") ? parseBoxFit(map["fit"])! : BoxFit.contain,
child: WidgetParserBuilder.buildFromMap( child: WidgetParserBuilder.buildFromMap(
map["child"], buildContext, listener), map["child"], buildContext, listener, variable),
); );
} }
......
import 'package:flutter/widgets.dart';
import 'package:widgetparser/widgetparser.dart';
class FormWidgetParser extends WidgetParser {
@override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return Form(
child: map.containsKey('child') ? WidgetParserBuilder.buildFromMap(map["child"], buildContext, listener, variable)! : SizedBox(),
onWillPop: map.containsKey('onWillPop') ? () => listener!.run(buildContext, map['onWillPop']) : null,
onChanged: map.containsKey('onChanged') ? () => listener!.run(buildContext, map['onChanged']) : null
);
}
@override
String get widgetName => "Form";
@override
Type get widgetType => Form;
}
\ No newline at end of file
...@@ -5,12 +5,15 @@ import 'package:widgetparser/src/utils.dart'; ...@@ -5,12 +5,15 @@ import 'package:widgetparser/src/utils.dart';
class GestureDetectorWidgetParser extends WidgetParser { class GestureDetectorWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
var gestureDetectorWidget = GestureDetector( var gestureDetectorWidget = GestureDetector(
key: map.containsKey('key') ? createKeyForWidget(map['key']) : null, key: map.containsKey('key') ? createKeyForWidget(map['key']) : null,
child: WidgetParserBuilder.buildFromMap(map['child'], buildContext, listener), child: WidgetParserBuilder.buildFromMap(map['child'], buildContext, listener, variable),
onTap: map.containsKey('onTap') ? () => listener!.run(buildContext, map['onTap']) : null, onTap: map.containsKey('onTap') ? () => listener!.run(buildContext, map['onTap']) : null,
onTapDown: map.containsKey('onTapDown') ? (TapDownDetails tapDownDetails) => listener!.run(buildContext, map['onTapDown']) : null, onTapDown: map.containsKey('onTapDown') ? (TapDownDetails tapDownDetails) {
map['onTapDown']['parameters']['tapDownDetails'] = tapDownDetails;
return listener!.run(buildContext, map['onTapDown']);
} : null,
onTapUp: map.containsKey('onTapUp') ? (TapUpDetails tapUpDetails) => listener!.run(buildContext, map['onTapUp']) : null, onTapUp: map.containsKey('onTapUp') ? (TapUpDetails tapUpDetails) => listener!.run(buildContext, map['onTapUp']) : null,
onTapCancel: map.containsKey('onTapCancel') ? () => listener!.run(buildContext, map['onTapCancel']) : null, onTapCancel: map.containsKey('onTapCancel') ? () => listener!.run(buildContext, map['onTapCancel']) : null,
onSecondaryTap: map.containsKey('onSecondaryTap') ? () => listener!.run(buildContext, map['onSecondaryTap']) : null, onSecondaryTap: map.containsKey('onSecondaryTap') ? () => listener!.run(buildContext, map['onSecondaryTap']) : null,
......
...@@ -5,7 +5,7 @@ import 'package:flutter/material.dart'; ...@@ -5,7 +5,7 @@ import 'package:flutter/material.dart';
class IconWidgetParser extends WidgetParser { class IconWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return Icon( return Icon(
map.containsKey('data') map.containsKey('data')
? getIconUsingPrefix(name: map['data']) ? getIconUsingPrefix(name: map['data'])
......
...@@ -4,13 +4,13 @@ import 'package:flutter/material.dart'; ...@@ -4,13 +4,13 @@ import 'package:flutter/material.dart';
class IconButtonWidgetParser extends WidgetParser { class IconButtonWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
EdgeInsets? padding = parseEdgeInsetsGeometry(map['padding']) as EdgeInsets; EdgeInsets? padding = parseEdgeInsetsGeometry(map['padding']) as EdgeInsets;
return IconButton( return IconButton(
key: map.containsKey("key") ? createKeyForWidget(map["key"]) : null, key: map.containsKey("key") ? createKeyForWidget(map["key"]) : null,
iconSize: map.containsKey('iconSize') ? map['iconSize'] : 24.0, iconSize: map.containsKey('iconSize') ? map['iconSize'] : 24.0,
icon: WidgetParserBuilder.buildFromMap(map['icon'], buildContext, listener)!, icon: WidgetParserBuilder.buildFromMap(map['icon'], buildContext, listener, variable)!,
padding: map.containsKey('padding') ? padding : EdgeInsets.all(8.0), padding: map.containsKey('padding') ? padding : EdgeInsets.all(8.0),
color: map.containsKey('color') ? parseHexColor(map['color']) : null, color: map.containsKey('color') ? parseHexColor(map['color']) : null,
focusColor: map.containsKey('focusColor') ? parseHexColor(map['focusColor']) : null, focusColor: map.containsKey('focusColor') ? parseHexColor(map['focusColor']) : null,
......
...@@ -6,7 +6,7 @@ import 'package:flutter/widgets.dart'; ...@@ -6,7 +6,7 @@ import 'package:flutter/widgets.dart';
class AssetImageWidgetParser extends WidgetParser { class AssetImageWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
String name = map['name']; String name = map['name'];
String? semanticLabel = String? semanticLabel =
map.containsKey('semanticLabel') ? map['semanticLabel'] : null; map.containsKey('semanticLabel') ? map['semanticLabel'] : null;
...@@ -69,7 +69,7 @@ class AssetImageWidgetParser extends WidgetParser { ...@@ -69,7 +69,7 @@ class AssetImageWidgetParser extends WidgetParser {
class NetworkImageWidgetParser extends WidgetParser { class NetworkImageWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
String src = map['src']; String src = map['src'];
String? semanticLabel = String? semanticLabel =
map.containsKey('semanticLabel') ? map['semanticLabel'] : null; map.containsKey('semanticLabel') ? map['semanticLabel'] : null;
......
...@@ -4,7 +4,7 @@ import 'package:flutter/widgets.dart'; ...@@ -4,7 +4,7 @@ import 'package:flutter/widgets.dart';
class IndexedStackWidgetParser extends WidgetParser { class IndexedStackWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return IndexedStack( return IndexedStack(
index: map.containsKey("index") ? map["index"] : 0, index: map.containsKey("index") ? map["index"] : 0,
...@@ -15,7 +15,7 @@ class IndexedStackWidgetParser extends WidgetParser { ...@@ -15,7 +15,7 @@ class IndexedStackWidgetParser extends WidgetParser {
? parseTextDirection(map["textDirection"]) ? parseTextDirection(map["textDirection"])
: null, : null,
children: WidgetParserBuilder.buildWidgets( children: WidgetParserBuilder.buildWidgets(
map['children'], buildContext, listener), map['children'], buildContext, listener, variable),
); );
} }
......
...@@ -5,11 +5,11 @@ import 'package:widgetparser/src/utils.dart'; ...@@ -5,11 +5,11 @@ import 'package:widgetparser/src/utils.dart';
class InkWellWidgetParser extends WidgetParser { class InkWellWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return InkWell( return InkWell(
key: map.containsKey('key') ? createKeyForWidget(map['key']) : null, key: map.containsKey('key') ? createKeyForWidget(map['key']) : null,
child: WidgetParserBuilder.buildFromMap(map['child'], buildContext, listener), child: WidgetParserBuilder.buildFromMap(map['child'], buildContext, listener, variable),
onTap: map.containsKey('onTap') ? () => listener!.run(buildContext, map['onTap']) : null, onTap: map.containsKey('onTap') ? () => listener!.run(buildContext, map['onTap']) : null,
onTapDown: map.containsKey('onTapDown') ? (TapDownDetails tapDownDetails) => listener!.run(buildContext, map['onTapDown']) : null, onTapDown: map.containsKey('onTapDown') ? (TapDownDetails tapDownDetails) => listener!.run(buildContext, map['onTapDown']) : null,
onTapCancel: map.containsKey('onTapCancel') ? () => listener!.run(buildContext, map['onTapCancel']) : null onTapCancel: map.containsKey('onTapCancel') ? () => listener!.run(buildContext, map['onTapCancel']) : null
......
...@@ -3,13 +3,13 @@ import 'package:flutter/material.dart'; ...@@ -3,13 +3,13 @@ import 'package:flutter/material.dart';
class LimitedBoxWidgetParser extends WidgetParser { class LimitedBoxWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return LimitedBox( return LimitedBox(
maxWidth: map.containsKey("maxWidth") ? map['maxWidth'] : double.infinity, maxWidth: map.containsKey("maxWidth") ? map['maxWidth'] : double.infinity,
maxHeight: maxHeight:
map.containsKey("maxHeight") ? map['maxHeight'] : double.infinity, map.containsKey("maxHeight") ? map['maxHeight'] : double.infinity,
child: WidgetParserBuilder.buildFromMap( child: WidgetParserBuilder.buildFromMap(
map['child'], buildContext, listener), map['child'], buildContext, listener, variable),
); );
} }
......
...@@ -6,7 +6,7 @@ import '../utils.dart'; ...@@ -6,7 +6,7 @@ import '../utils.dart';
class ListTileWidgetParser extends WidgetParser { class ListTileWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
bool isThreeLine = bool isThreeLine =
map.containsKey("isThreeLine") ? map["isThreeLine"] : false; map.containsKey("isThreeLine") ? map["isThreeLine"] : false;
EdgeInsetsGeometry? contentPadding = map.containsKey("contentPadding") EdgeInsetsGeometry? contentPadding = map.containsKey("contentPadding")
...@@ -16,20 +16,20 @@ class ListTileWidgetParser extends WidgetParser { ...@@ -16,20 +16,20 @@ class ListTileWidgetParser extends WidgetParser {
bool enabled = map.containsKey("enabled") ? map["enabled"] : true; bool enabled = map.containsKey("enabled") ? map["enabled"] : true;
Widget? leading = map.containsKey("leading") Widget? leading = map.containsKey("leading")
? WidgetParserBuilder.buildFromMap( ? WidgetParserBuilder.buildFromMap(
map["leading"], buildContext, listener) map["leading"], buildContext, listener, variable)
: null; : null;
bool selected = map.containsKey("selected") ? map["selected"] : false; bool selected = map.containsKey("selected") ? map["selected"] : false;
Widget? subtitle = map.containsKey("subtitle") Widget? subtitle = map.containsKey("subtitle")
? WidgetParserBuilder.buildFromMap( ? WidgetParserBuilder.buildFromMap(
map["subtitle"], buildContext, listener) map["subtitle"], buildContext, listener, variable)
: null; : null;
Widget? title = map.containsKey("title") Widget? title = map.containsKey("title")
? WidgetParserBuilder.buildFromMap( ? WidgetParserBuilder.buildFromMap(
map["title"], buildContext, listener) map["title"], buildContext, listener, variable)
: null; : null;
Widget? trailing = map.containsKey("trailing") Widget? trailing = map.containsKey("trailing")
? WidgetParserBuilder.buildFromMap( ? WidgetParserBuilder.buildFromMap(
map["trailing"], buildContext, listener) map["trailing"], buildContext, listener, variable)
: null; : null;
// String? tapEvent = map.containsKey("tapEvent") ? map["tapEvent"] : null; // String? tapEvent = map.containsKey("tapEvent") ? map["tapEvent"] : null;
......
import 'dart:convert';
import 'package:widgetparser/widgetparser.dart'; import 'package:widgetparser/widgetparser.dart';
import 'package:widgetparser/src/utils.dart'; import 'package:widgetparser/src/utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
...@@ -7,7 +5,7 @@ import 'package:flutter/widgets.dart'; ...@@ -7,7 +5,7 @@ import 'package:flutter/widgets.dart';
class ListViewWidgetParser extends WidgetParser { class ListViewWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
var scrollDirection = Axis.vertical; var scrollDirection = Axis.vertical;
if (map.containsKey("scrollDirection") && if (map.containsKey("scrollDirection") &&
"horizontal" == map["scrollDirection"]) { "horizontal" == map["scrollDirection"]) {
...@@ -24,7 +22,7 @@ class ListViewWidgetParser extends WidgetParser { ...@@ -24,7 +22,7 @@ class ListViewWidgetParser extends WidgetParser {
var itemExtent = var itemExtent =
map.containsKey("itemExtent") ? map["itemExtent"]?.toDouble() : null; map.containsKey("itemExtent") ? map["itemExtent"]?.toDouble() : null;
var children = WidgetParserBuilder.buildWidgets( var children = WidgetParserBuilder.buildWidgets(
map['children'], buildContext, listener); map['children'], buildContext, listener, variable);
return ListView( return ListView(
scrollDirection: scrollDirection, scrollDirection: scrollDirection,
......
...@@ -4,10 +4,10 @@ import 'package:flutter/cupertino.dart'; ...@@ -4,10 +4,10 @@ import 'package:flutter/cupertino.dart';
class OffstageWidgetParser extends WidgetParser{ class OffstageWidgetParser extends WidgetParser{
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return Offstage( return Offstage(
offstage: map.containsKey("offstage")?map['offstage']:true, offstage: map.containsKey("offstage")?map['offstage']:true,
child: WidgetParserBuilder.buildFromMap(map['child'], buildContext, listener), child: WidgetParserBuilder.buildFromMap(map['child'], buildContext, listener, variable),
); );
} }
......
...@@ -3,14 +3,14 @@ import 'package:flutter/widgets.dart'; ...@@ -3,14 +3,14 @@ import 'package:flutter/widgets.dart';
class OpacityWidgetParser extends WidgetParser { class OpacityWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return Opacity( return Opacity(
opacity: map["opacity"]?.toDouble(), opacity: map["opacity"]?.toDouble(),
alwaysIncludeSemantics: map.containsKey("alwaysIncludeSemantics") alwaysIncludeSemantics: map.containsKey("alwaysIncludeSemantics")
? map["alwaysIncludeSemantics"] ? map["alwaysIncludeSemantics"]
: false, : false,
child: WidgetParserBuilder.buildFromMap( child: WidgetParserBuilder.buildFromMap(
map["child"], buildContext, listener), map["child"], buildContext, listener, variable),
); );
} }
......
...@@ -4,14 +4,14 @@ import 'package:flutter/cupertino.dart'; ...@@ -4,14 +4,14 @@ import 'package:flutter/cupertino.dart';
class OverflowBoxWidgetParser extends WidgetParser { class OverflowBoxWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return OverflowBox( return OverflowBox(
alignment: parseAlignment(map['alignment']), alignment: parseAlignment(map['alignment']),
minWidth: map.containsKey("minWidth")?map['minWidth']:null, minWidth: map.containsKey("minWidth")?map['minWidth']:null,
maxWidth: map.containsKey("maxWidth")?map['maxWidth']:null, maxWidth: map.containsKey("maxWidth")?map['maxWidth']:null,
minHeight: map.containsKey("minHeight")?map['minHeight']:null, minHeight: map.containsKey("minHeight")?map['minHeight']:null,
maxHeight: map.containsKey("maxHeight")?map['maxHeight']:null, maxHeight: map.containsKey("maxHeight")?map['maxHeight']:null,
child: WidgetParserBuilder.buildFromMap(map['child'], buildContext, listener), child: WidgetParserBuilder.buildFromMap(map['child'], buildContext, listener, variable),
); );
} }
......
...@@ -4,13 +4,13 @@ import 'package:flutter/widgets.dart'; ...@@ -4,13 +4,13 @@ import 'package:flutter/widgets.dart';
class PaddingWidgetParser extends WidgetParser { class PaddingWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return Padding( return Padding(
padding: map.containsKey("padding") padding: map.containsKey("padding")
? parseEdgeInsetsGeometry(map["padding"])! ? parseEdgeInsetsGeometry(map["padding"])!
: EdgeInsets.zero, : EdgeInsets.zero,
child: WidgetParserBuilder.buildFromMap( child: WidgetParserBuilder.buildFromMap(
map["child"], buildContext, listener), map["child"], buildContext, listener, variable),
); );
} }
......
...@@ -3,7 +3,7 @@ import 'package:flutter/widgets.dart'; ...@@ -3,7 +3,7 @@ import 'package:flutter/widgets.dart';
class PageViewWidgetParser extends WidgetParser { class PageViewWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
var scrollDirection = Axis.vertical; var scrollDirection = Axis.vertical;
if (map.containsKey("scrollDirection") && if (map.containsKey("scrollDirection") &&
...@@ -16,7 +16,7 @@ class PageViewWidgetParser extends WidgetParser { ...@@ -16,7 +16,7 @@ class PageViewWidgetParser extends WidgetParser {
pageSnapping: pageSnapping:
map.containsKey("pageSnapping") ? map["pageSnapping"] : true, map.containsKey("pageSnapping") ? map["pageSnapping"] : true,
children: WidgetParserBuilder.buildWidgets( children: WidgetParserBuilder.buildWidgets(
map['children'], buildContext, listener), map['children'], buildContext, listener, variable),
); );
} }
......
...@@ -4,7 +4,7 @@ import 'package:flutter/widgets.dart'; ...@@ -4,7 +4,7 @@ import 'package:flutter/widgets.dart';
class PlaceholderWidgetParser extends WidgetParser { class PlaceholderWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return Placeholder( return Placeholder(
color: map.containsKey('color') color: map.containsKey('color')
? parseHexColor(map['color'])! ? parseHexColor(map['color'])!
......
...@@ -4,7 +4,7 @@ import 'package:flutter/widgets.dart'; ...@@ -4,7 +4,7 @@ import 'package:flutter/widgets.dart';
class RowWidgetParser extends WidgetParser { class RowWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return Row( return Row(
crossAxisAlignment: map.containsKey('crossAxisAlignment') crossAxisAlignment: map.containsKey('crossAxisAlignment')
...@@ -26,7 +26,7 @@ class RowWidgetParser extends WidgetParser { ...@@ -26,7 +26,7 @@ class RowWidgetParser extends WidgetParser {
? parseVerticalDirection(map['verticalDirection']) ? parseVerticalDirection(map['verticalDirection'])
: VerticalDirection.down, : VerticalDirection.down,
children: WidgetParserBuilder.buildWidgets( children: WidgetParserBuilder.buildWidgets(
map['children'], buildContext, listener), map['children'], buildContext, listener, variable),
); );
} }
...@@ -39,7 +39,7 @@ class RowWidgetParser extends WidgetParser { ...@@ -39,7 +39,7 @@ class RowWidgetParser extends WidgetParser {
class ColumnWidgetParser extends WidgetParser { class ColumnWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return Column( return Column(
crossAxisAlignment: map.containsKey('crossAxisAlignment') crossAxisAlignment: map.containsKey('crossAxisAlignment')
...@@ -61,7 +61,7 @@ class ColumnWidgetParser extends WidgetParser { ...@@ -61,7 +61,7 @@ class ColumnWidgetParser extends WidgetParser {
? parseVerticalDirection(map['verticalDirection']) ? parseVerticalDirection(map['verticalDirection'])
: VerticalDirection.down, : VerticalDirection.down,
children: WidgetParserBuilder.buildWidgets( children: WidgetParserBuilder.buildWidgets(
map['children'], buildContext, listener), map['children'], buildContext, listener, variable),
); );
} }
......
...@@ -4,7 +4,7 @@ import 'package:flutter/widgets.dart'; ...@@ -4,7 +4,7 @@ import 'package:flutter/widgets.dart';
class SafeAreaWidgetParser extends WidgetParser { class SafeAreaWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
var left = map.containsKey("left") ? map["left"] : true; var left = map.containsKey("left") ? map["left"] : true;
var right = map.containsKey("right") ? map["right"] : true; var right = map.containsKey("right") ? map["right"] : true;
var top = map.containsKey("top") ? map["top"] : true; var top = map.containsKey("top") ? map["top"] : true;
...@@ -23,7 +23,7 @@ class SafeAreaWidgetParser extends WidgetParser { ...@@ -23,7 +23,7 @@ class SafeAreaWidgetParser extends WidgetParser {
minimum: edgeInsets as EdgeInsets, minimum: edgeInsets as EdgeInsets,
maintainBottomViewPadding: maintainBottomViewPadding, maintainBottomViewPadding: maintainBottomViewPadding,
child: WidgetParserBuilder.buildFromMap( child: WidgetParserBuilder.buildFromMap(
map["child"], buildContext, listener)!, map["child"], buildContext, listener, variable)!,
); );
} }
......
...@@ -5,27 +5,27 @@ import 'package:flutter/widgets.dart'; ...@@ -5,27 +5,27 @@ import 'package:flutter/widgets.dart';
class ScaffoldWidgetParser extends WidgetParser { class ScaffoldWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
var scaffoldWidget = Scaffold( var scaffoldWidget = Scaffold(
key: map.containsKey("key") ? createKeyForWidget(map["key"]) : null, key: map.containsKey("key") ? createKeyForWidget(map["key"]) : null,
appBar: map.containsKey("appBar") appBar: map.containsKey("appBar")
? WidgetParserBuilder.buildFromMap( ? WidgetParserBuilder.buildFromMap(
map["appBar"], buildContext, listener) as PreferredSizeWidget? map["appBar"], buildContext, listener, variable) as PreferredSizeWidget?
: null, : null,
body: map.containsKey("body") body: map.containsKey("body")
? WidgetParserBuilder.buildFromMap( ? WidgetParserBuilder.buildFromMap(
map["body"], buildContext, listener) map["body"], buildContext, listener, variable)
: null, : null,
floatingActionButton: map.containsKey("floatingActionButton") floatingActionButton: map.containsKey("floatingActionButton")
? WidgetParserBuilder.buildFromMap( ? WidgetParserBuilder.buildFromMap(
map["floatingActionButton"], buildContext, listener) map["floatingActionButton"], buildContext, listener, variable)
: null, : null,
backgroundColor: map.containsKey("backgroundColor") backgroundColor: map.containsKey("backgroundColor")
? parseHexColor(map["backgroundColor"]) ? parseHexColor(map["backgroundColor"])
: null, : null,
persistentFooterButtons: map.containsKey("persistentFooterButtons") persistentFooterButtons: map.containsKey("persistentFooterButtons")
? WidgetParserBuilder.buildWidgets( ? WidgetParserBuilder.buildWidgets(
map["persistentFooterButtons"], buildContext, listener) map["persistentFooterButtons"], buildContext, listener, variable)
: null, : null,
); );
......
...@@ -6,7 +6,7 @@ import 'package:flutter/material.dart'; ...@@ -6,7 +6,7 @@ import 'package:flutter/material.dart';
class SelectableTextWidgetParser implements WidgetParser { class SelectableTextWidgetParser implements WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
String? data = map['data']; String? data = map['data'];
String? textAlignString = map['textAlign']; String? textAlignString = map['textAlign'];
int? maxLines = map['maxLines']; int? maxLines = map['maxLines'];
...@@ -15,7 +15,7 @@ class SelectableTextWidgetParser implements WidgetParser { ...@@ -15,7 +15,7 @@ class SelectableTextWidgetParser implements WidgetParser {
var textSpan; var textSpan;
var textSpanParser = SelectableTextSpanParser(); var textSpanParser = SelectableTextSpanParser();
if (map.containsKey("textSpan")) { if (map.containsKey("textSpan")) {
textSpan = textSpanParser.parse(map['textSpan'], buildContext, listener); textSpan = textSpanParser.parse(map['textSpan'], buildContext, listener, variable);
} }
if (textSpan == null) { if (textSpan == null) {
...@@ -47,7 +47,7 @@ class SelectableTextWidgetParser implements WidgetParser { ...@@ -47,7 +47,7 @@ class SelectableTextWidgetParser implements WidgetParser {
} }
class SelectableTextSpanParser { class SelectableTextSpanParser {
TextSpan parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { TextSpan parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
Map<String, String>? recognizer = map.containsKey("recognizer") ? map['recognizer'] : null; Map<String, String>? recognizer = map.containsKey("recognizer") ? map['recognizer'] : null;
var textSpan = TextSpan( var textSpan = TextSpan(
text: map['text'], text: map['text'],
...@@ -57,16 +57,16 @@ class SelectableTextSpanParser { ...@@ -57,16 +57,16 @@ class SelectableTextSpanParser {
children: []); children: []);
if (map.containsKey('children')) { if (map.containsKey('children')) {
parseChildren(textSpan, map['children'], buildContext, listener); parseChildren(textSpan, map['children'], buildContext, listener, variable);
} }
return textSpan; return textSpan;
} }
void parseChildren( void parseChildren(
TextSpan textSpan, List<dynamic> childrenSpan, BuildContext buildContext, MethodListener? listener) { TextSpan textSpan, List<dynamic> childrenSpan, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
for (var childmap in childrenSpan) { for (var childmap in childrenSpan) {
textSpan.children!.add(parse(childmap, buildContext, listener)); textSpan.children!.add(parse(childmap, buildContext, listener, variable));
} }
} }
} }
...@@ -4,10 +4,10 @@ import 'package:flutter/widgets.dart'; ...@@ -4,10 +4,10 @@ import 'package:flutter/widgets.dart';
//Creates a box that will become as large as its parent allows. //Creates a box that will become as large as its parent allows.
class ExpandedSizedBoxWidgetParser extends WidgetParser { class ExpandedSizedBoxWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return SizedBox.expand( return SizedBox.expand(
child: WidgetParserBuilder.buildFromMap( child: WidgetParserBuilder.buildFromMap(
map["child"], buildContext, listener), map["child"], buildContext, listener, variable),
); );
} }
...@@ -20,12 +20,12 @@ class ExpandedSizedBoxWidgetParser extends WidgetParser { ...@@ -20,12 +20,12 @@ class ExpandedSizedBoxWidgetParser extends WidgetParser {
class SizedBoxWidgetParser extends WidgetParser { class SizedBoxWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return SizedBox( return SizedBox(
width: map["width"], width: map["width"],
height: map["height"], height: map["height"],
child: WidgetParserBuilder.buildFromMap( child: WidgetParserBuilder.buildFromMap(
map["child"], buildContext, listener), map["child"], buildContext, listener, variable),
); );
} }
......
...@@ -4,10 +4,10 @@ import 'package:flutter/widgets.dart'; ...@@ -4,10 +4,10 @@ import 'package:flutter/widgets.dart';
class PositionedWidgetParser extends WidgetParser { class PositionedWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return Positioned( return Positioned(
child: WidgetParserBuilder.buildFromMap( child: WidgetParserBuilder.buildFromMap(
map["child"], buildContext, listener)!, map["child"], buildContext, listener, variable)!,
top: map.containsKey("top") ? map["top"]?.toDouble() : null, top: map.containsKey("top") ? map["top"]?.toDouble() : null,
right: map.containsKey("right") ? map["right"]?.toDouble() : null, right: map.containsKey("right") ? map["right"]?.toDouble() : null,
bottom: map.containsKey("bottom") ? map["bottom"]?.toDouble() : null, bottom: map.containsKey("bottom") ? map["bottom"]?.toDouble() : null,
...@@ -26,7 +26,7 @@ class PositionedWidgetParser extends WidgetParser { ...@@ -26,7 +26,7 @@ class PositionedWidgetParser extends WidgetParser {
class StackWidgetParser extends WidgetParser { class StackWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return Stack( return Stack(
alignment: map.containsKey("alignment") alignment: map.containsKey("alignment")
...@@ -40,7 +40,7 @@ class StackWidgetParser extends WidgetParser { ...@@ -40,7 +40,7 @@ class StackWidgetParser extends WidgetParser {
? parseClip(map["clipBehavior"])! ? parseClip(map["clipBehavior"])!
: Clip.hardEdge, : Clip.hardEdge,
children: WidgetParserBuilder.buildWidgets( children: WidgetParserBuilder.buildWidgets(
map['children'], buildContext, listener), map['children'], buildContext, listener, variable),
); );
} }
......
...@@ -6,7 +6,7 @@ import 'package:flutter/widgets.dart'; ...@@ -6,7 +6,7 @@ import 'package:flutter/widgets.dart';
class TextWidgetParser implements WidgetParser { class TextWidgetParser implements WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
String? data = map['data']; String? data = map['data'];
String? textAlignString = map['textAlign']; String? textAlignString = map['textAlign'];
String? overflow = map['overflow']; String? overflow = map['overflow'];
...@@ -18,7 +18,7 @@ class TextWidgetParser implements WidgetParser { ...@@ -18,7 +18,7 @@ class TextWidgetParser implements WidgetParser {
var textSpan; var textSpan;
var textSpanParser = TextSpanParser(); var textSpanParser = TextSpanParser();
if (map.containsKey("textSpan")) { if (map.containsKey("textSpan")) {
textSpan = textSpanParser.parse(map['textSpan'], buildContext, listener); textSpan = textSpanParser.parse(map['textSpan'], buildContext, listener, variable);
} }
if (textSpan == null) { if (textSpan == null) {
...@@ -56,7 +56,7 @@ class TextWidgetParser implements WidgetParser { ...@@ -56,7 +56,7 @@ class TextWidgetParser implements WidgetParser {
} }
class TextSpanParser { class TextSpanParser {
TextSpan parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { TextSpan parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
Map<String, String>? recognizer = map.containsKey("recognizer") ? map['recognizer'] : null; Map<String, String>? recognizer = map.containsKey("recognizer") ? map['recognizer'] : null;
var textSpan = TextSpan( var textSpan = TextSpan(
text: map['text'], text: map['text'],
...@@ -66,16 +66,16 @@ class TextSpanParser { ...@@ -66,16 +66,16 @@ class TextSpanParser {
children: []); children: []);
if (map.containsKey('children')) { if (map.containsKey('children')) {
parseChildren(textSpan, map['children'], buildContext, listener); parseChildren(textSpan, map['children'], buildContext, listener, variable);
} }
return textSpan; return textSpan;
} }
void parseChildren( void parseChildren(
TextSpan textSpan, List<dynamic> childrenSpan, BuildContext buildContext, MethodListener? listener) { TextSpan textSpan, List<dynamic> childrenSpan, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
for (var childmap in childrenSpan) { for (var childmap in childrenSpan) {
textSpan.children!.add(parse(childmap, buildContext, listener)); textSpan.children!.add(parse(childmap, buildContext, listener, variable));
} }
} }
} }
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:widgetparser/widgetparser.dart';
import 'package:widgetparser/src/utils.dart';
class TextFormFieldWidgetParser extends WidgetParser {
@override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return TextFormField(
controller: TextEditingController(),
initialValue: map.containsKey('initialValue') ? map['initialValue'] : null,
decoration: map.containsKey('decoration') ? parseInputDecoration(map['decoration'], buildContext, listener, variable) : InputDecoration(),
keyboardType: map.containsKey('keyboardType') ? parseTextInputType(map['keyboardType']) : null,
textCapitalization: map.containsKey('textCapitalization') ? parseTextCapitalization(map['textCapitalization']) : TextCapitalization.none,
textInputAction: map.containsKey('textInputAction') ? parseTextInputAction(map['textInputAction']) : null,
style: map.containsKey('style') ? parseTextStyle(map['style']) : null,
textDirection: map.containsKey('textDirection') ? parseTextDirection(map['textDirection']) : null,
textAlign: map.containsKey('textAlign') ? parseTextAlign(map['textAlign']) : TextAlign.start,
textAlignVertical: map.containsKey('textAlignVertical') ? TextAlignVertical(y: map['textAlignVertical']) : null,
autofocus: map.containsKey('autofocus') ? map['autofocus'] as bool : false,
readOnly: map.containsKey('readOnly') ? map['readOnly'] as bool : false,
toolbarOptions: map.containsKey('toolbarOptions') ? parseToolbarOptions(map['toolbarOptions']) : null,
showCursor: map.containsKey('showCursor') ? map['showCursor'] as bool : null,
obscuringCharacter: map.containsKey('obscuringCharacter') ? map['obscuringCharacter'] : '•',
obscureText: map.containsKey('obscureText') ? map['obscureText'] as bool : false,
autocorrect: map.containsKey('autocorrect') ? map['autocorrect'] as bool : true,
enableSuggestions: map.containsKey('enableSuggestions') ? map['enableSuggestions'] as bool : true,
maxLines: map.containsKey('maxLines') ? map['maxLines'] : null,
minLines: map.containsKey('minLines') ? map['minLines'] : null,
expands: map.containsKey('expands') ? map['expands'] as bool : false,
maxLength: map.containsKey('maxLength') ? map['maxLength'] : false,
onChanged: map.containsKey('onChanged') ? (String textEditingValue) => listener!.run(buildContext, map['onChanged']) : null,
onTap: map.containsKey('onTap') ? () => listener!.run(buildContext, map['onTap']) : null,
onEditingComplete: map.containsKey('onEditingComplete') ? () => listener!.run(buildContext, map['onEditingComplete']) : null,
onFieldSubmitted: map.containsKey('onFieldSubmitted') ? (String textEditingValue) => listener!.run(buildContext, map['onFieldSubmitted']) : null,
onSaved: map.containsKey('onSaved') ? (String? textEditingValue) => listener!.run(buildContext, map['onSaved']) : null,
validator: map.containsKey('validator') ? (String? textEditingValue) => listener!.run(buildContext, map['validator']) : null,
enabled: map.containsKey('enabled') ? map['enabled'] as bool : null,
cursorWidth: map.containsKey('cursorWidth') ? map['cursorWidth'] : 2.0,
cursorHeight: map.containsKey('cursorHeight') ? map['cursorHeight'] : null,
cursorColor: map.containsKey('cursorColor') ? parseHexColor(map['cursorColor'])! : null,
keyboardAppearance: map.containsKey('keyboardAppearance') ? parseBrightness(map['keyboardAppearance']) : null,
scrollPadding: map.containsKey('scrollPadding') ? parseEdgeInsetsGeometry(map['scrollPadding']) as EdgeInsets : EdgeInsets.all(20.0),
enableInteractiveSelection: map.containsKey('enableInteractiveSelection') ? map['enableInteractiveSelection'] : true,
scrollPhysics: map.containsKey('scrollPhysics') ? parseScrollPhysics(map['scrollPhysics']) : null,
autovalidateMode: map.containsKey('autovalidateMode') ? parseAutovalidateMode(map['autovalidateMode']) : null,
);
}
@override
String get widgetName => "TextFormField";
@override
Type get widgetType => TextFormField;
}
\ No newline at end of file
...@@ -4,7 +4,7 @@ import 'package:flutter/widgets.dart'; ...@@ -4,7 +4,7 @@ import 'package:flutter/widgets.dart';
class WrapWidgetParser extends WidgetParser { class WrapWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return Wrap( return Wrap(
direction: map.containsKey("direction") direction: map.containsKey("direction")
? parseAxis(map["direction"]) ? parseAxis(map["direction"])
...@@ -28,7 +28,7 @@ class WrapWidgetParser extends WidgetParser { ...@@ -28,7 +28,7 @@ class WrapWidgetParser extends WidgetParser {
? parseVerticalDirection(map["verticalDirection"]) ? parseVerticalDirection(map["verticalDirection"])
: VerticalDirection.down, : VerticalDirection.down,
children: WidgetParserBuilder.buildWidgets( children: WidgetParserBuilder.buildWidgets(
map['children'], buildContext, listener) map['children'], buildContext, listener, variable)
); );
} }
......
const schemaUrl = "http://json-schema.org/draft-06/schema#"; const schemaUrl = "http://json-schema.org/draft-06/schema#";
const refSchema = "#/definitions/"; const refSchema = "#/definitions/";
class WidgetSchema { class SchemaHelper {
static const child = ''' static const child = '''
{ {
"type": "object", "type": "object",
"additionalProperties": false, "additionalProperties": true,
"properties": { "properties": {
"widget": { "widget": {
"type": "string", "type": "string",
"description": "the widget in question is the widget class from the flutter component or the class from the llswidget component", "description": "the widget in question is the widget class from the flutter component or the class from the llswidget component",
"minLength": 1, "minLength": 1
} }
}, },
"required": [ "required": [
...@@ -50,7 +50,7 @@ class WidgetSchema { ...@@ -50,7 +50,7 @@ class WidgetSchema {
static const decoration = ''' static const decoration = '''
{ {
"type": "object", "type": "object",
"additionalProperties": false, "additionalProperties": true,
"properties": { "properties": {
"borderRadius": { "borderRadius": {
"\$ref\": "${refSchema}BorderRadius" "\$ref\": "${refSchema}BorderRadius"
......
...@@ -5,7 +5,7 @@ import 'package:llswidget/llswidget.dart'; ...@@ -5,7 +5,7 @@ import 'package:llswidget/llswidget.dart';
class LLSButtonWidgetParser extends WidgetParser { class LLSButtonWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return LLSButton( return LLSButton(
key: map.containsKey("key") ? createKeyForWidget(map["key"]) : null, key: map.containsKey("key") ? createKeyForWidget(map["key"]) : null,
onPressed: map.containsKey('onPressed') ? () => listener!.run(buildContext, map['onPressed']) : null, onPressed: map.containsKey('onPressed') ? () => listener!.run(buildContext, map['onPressed']) : null,
...@@ -27,7 +27,7 @@ class LLSButtonWidgetParser extends WidgetParser { ...@@ -27,7 +27,7 @@ class LLSButtonWidgetParser extends WidgetParser {
clipBehavior: parseClipBehavior(map['clipBehavior']), clipBehavior: parseClipBehavior(map['clipBehavior']),
focusNode: map.containsKey('focusNode') ? map['focusNode'] : null, focusNode: map.containsKey('focusNode') ? map['focusNode'] : null,
autofocus: map.containsKey('autofocus') ? map['autofocus'] as bool : false, autofocus: map.containsKey('autofocus') ? map['autofocus'] as bool : false,
child: map.containsKey('child') ? WidgetParserBuilder.buildFromMap(map["child"], buildContext, listener) : SizedBox(), child: map.containsKey('child') ? WidgetParserBuilder.buildFromMap(map["child"], buildContext, listener, variable) : SizedBox(),
type: map.containsKey('type') ? parseLLSButtonType(map['type']) : LLSButtonType.solid, type: map.containsKey('type') ? parseLLSButtonType(map['type']) : LLSButtonType.solid,
shape: map.containsKey('shape') ? parseLLSButtonShape(map['shape']) : LLSButtonShape.standard, shape: map.containsKey('shape') ? parseLLSButtonShape(map['shape']) : LLSButtonShape.standard,
color: map.containsKey('color') ? parseHexColor(map['color'])! : LLSColors.PRIMARY, color: map.containsKey('color') ? parseHexColor(map['color'])! : LLSColors.PRIMARY,
...@@ -36,7 +36,7 @@ class LLSButtonWidgetParser extends WidgetParser { ...@@ -36,7 +36,7 @@ class LLSButtonWidgetParser extends WidgetParser {
size: map.containsKey('size') ? parseLLSSize(map['size']) : LLSSize.MEDIUM, size: map.containsKey('size') ? parseLLSSize(map['size']) : LLSSize.MEDIUM,
borderSide: map.containsKey('borderSide') ? parseBorderSide(map['borderSide']) : null, borderSide: map.containsKey('borderSide') ? parseBorderSide(map['borderSide']) : null,
text: map.containsKey('text') ? map['text'] : '', text: map.containsKey('text') ? map['text'] : '',
icon: map.containsKey('icon') ? WidgetParserBuilder.buildFromMap(map['icon'], buildContext, listener) : null, icon: map.containsKey('icon') ? WidgetParserBuilder.buildFromMap(map['icon'], buildContext, listener, variable) : null,
blockButton: map.containsKey('blockButton') ? map['blockButton'] as bool : null, blockButton: map.containsKey('blockButton') ? map['blockButton'] as bool : null,
fullWidthButton: map.containsKey('fullWidthButton') ? map['fullWidthButton'] as bool : null, fullWidthButton: map.containsKey('fullWidthButton') ? map['fullWidthButton'] as bool : null,
onLongPress: map.containsKey('onLongPress') ? () => listener!.run(buildContext, map['onLongPress']) : null, onLongPress: map.containsKey('onLongPress') ? () => listener!.run(buildContext, map['onLongPress']) : null,
......
...@@ -5,7 +5,7 @@ import 'package:llswidget/llswidget.dart'; ...@@ -5,7 +5,7 @@ import 'package:llswidget/llswidget.dart';
class LLSCardWidgetParser extends WidgetParser { class LLSCardWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
EdgeInsets? margin = parseEdgeInsetsGeometry(map['margin']) as EdgeInsets; EdgeInsets? margin = parseEdgeInsetsGeometry(map['margin']) as EdgeInsets;
return LLSCard( return LLSCard(
...@@ -17,9 +17,9 @@ class LLSCardWidgetParser extends WidgetParser { ...@@ -17,9 +17,9 @@ class LLSCardWidgetParser extends WidgetParser {
margin: margin, margin: margin,
clipBehavior: parseClipBehavior(map['clipBehavior']), clipBehavior: parseClipBehavior(map['clipBehavior']),
semanticContainer: map.containsKey('autofocus') ? map['autofocus'] as bool : null, semanticContainer: map.containsKey('autofocus') ? map['autofocus'] as bool : null,
title: map.containsKey('title') ? WidgetParserBuilder.buildFromMap(map['title'], buildContext, listener) as LLSListTile : LLSListTile(), title: map.containsKey('title') ? WidgetParserBuilder.buildFromMap(map['title'], buildContext, listener, variable) as LLSListTile : LLSListTile(),
content: map.containsKey('content') ? WidgetParserBuilder.buildFromMap(map['content'], buildContext, listener) : SizedBox(), content: map.containsKey('content') ? WidgetParserBuilder.buildFromMap(map['content'], buildContext, listener, variable) : SizedBox(),
image: map.containsKey('image') ? WidgetParserBuilder.buildFromMap(map['image'], buildContext, listener) as Image : null, image: map.containsKey('image') ? WidgetParserBuilder.buildFromMap(map['image'], buildContext, listener, variable) as Image : null,
showImage: map.containsKey('showImage') ? map['showImage'] as bool : false, showImage: map.containsKey('showImage') ? map['showImage'] as bool : false,
showOverlayImage: map.containsKey('showOverlayImage') ? map['showOverlayImage'] as bool : false, showOverlayImage: map.containsKey('showOverlayImage') ? map['showOverlayImage'] as bool : false,
// buttonBar: , // buttonBar: ,
......
...@@ -5,13 +5,13 @@ import 'package:llswidget/llswidget.dart'; ...@@ -5,13 +5,13 @@ import 'package:llswidget/llswidget.dart';
class LLSLabelWidgetParser extends WidgetParser { class LLSLabelWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return LLSLabel( return LLSLabel(
key: map.containsKey('key') ? createKeyForWidget(map['key']) : null, key: map.containsKey('key') ? createKeyForWidget(map['key']) : null,
type: parseLLSLabelType(map['type']), type: parseLLSLabelType(map['type']),
child: map.containsKey('child') ? WidgetParserBuilder.buildFromMap(map['child'], buildContext, listener) : null, child: map.containsKey('child') ? WidgetParserBuilder.buildFromMap(map['child'], buildContext, listener, variable) : null,
text: map.containsKey('text') ? map['text'] : '', text: map.containsKey('text') ? map['text'] : '',
icon: map.containsKey('icon') ? WidgetParserBuilder.buildFromMap(map['icon'], buildContext, listener) : null, icon: map.containsKey('icon') ? WidgetParserBuilder.buildFromMap(map['icon'], buildContext, listener, variable) : null,
dividerBorderRadius: map.containsKey('dividerBorderRadius') ? parseBorderRadius(map['dividerBorderRadius']) : null, dividerBorderRadius: map.containsKey('dividerBorderRadius') ? parseBorderRadius(map['dividerBorderRadius']) : null,
textColor: map.containsKey('textColor') ? parseHexColor(map['textColor'])! : LLSColors.DARK, textColor: map.containsKey('textColor') ? parseHexColor(map['textColor'])! : LLSColors.DARK,
dividerAlignment: map.containsKey('dividerAlignment') ? parseAlignment(map['dividerAlignment']) : null, dividerAlignment: map.containsKey('dividerAlignment') ? parseAlignment(map['dividerAlignment']) : null,
......
...@@ -5,18 +5,18 @@ import 'package:llswidget/llswidget.dart'; ...@@ -5,18 +5,18 @@ import 'package:llswidget/llswidget.dart';
class LLSListTileWidgetParser extends WidgetParser { class LLSListTileWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return LLSListTile( return LLSListTile(
key: map.containsKey('key') ? createKeyForWidget(map['key']) : null, key: map.containsKey('key') ? createKeyForWidget(map['key']) : null,
titleText: map.containsKey('titleText') ? map['titleText'] : null, titleText: map.containsKey('titleText') ? map['titleText'] : null,
subTitleText: map.containsKey('subTitleText') ? map['subTitleText'] : null, subTitleText: map.containsKey('subTitleText') ? map['subTitleText'] : null,
color: map.containsKey('color') ? parseHexColor(map['color'])! : LLSColors.WHITE, color: map.containsKey('color') ? parseHexColor(map['color'])! : LLSColors.WHITE,
avatar: map.containsKey('avatar') ? WidgetParserBuilder.buildFromMap(map['avatar'], buildContext, listener) : null, avatar: map.containsKey('avatar') ? WidgetParserBuilder.buildFromMap(map['avatar'], buildContext, listener, variable) : null,
title: map.containsKey('title') ? WidgetParserBuilder.buildFromMap(map['title'], buildContext, listener) : null, title: map.containsKey('title') ? WidgetParserBuilder.buildFromMap(map['title'], buildContext, listener, variable) : null,
subTitle: map.containsKey('subTitle') ? WidgetParserBuilder.buildFromMap(map['subTitle'], buildContext, listener) : null, subTitle: map.containsKey('subTitle') ? WidgetParserBuilder.buildFromMap(map['subTitle'], buildContext, listener, variable) : null,
description: map.containsKey('description') ? WidgetParserBuilder.buildFromMap(map['description'], buildContext, listener) : null, description: map.containsKey('description') ? WidgetParserBuilder.buildFromMap(map['description'], buildContext, listener, variable) : null,
icon: map.containsKey('icon') ? WidgetParserBuilder.buildFromMap(map['icon'], buildContext, listener) : null, icon: map.containsKey('icon') ? WidgetParserBuilder.buildFromMap(map['icon'], buildContext, listener, variable) : null,
padding: map.containsKey('padding') ? parseEdgeInsetsGeometry(map['padding']) as EdgeInsets : EdgeInsets.all(8), padding: map.containsKey('padding') ? parseEdgeInsetsGeometry(map['padding']) as EdgeInsets : EdgeInsets.all(8),
margin: map.containsKey('margin') ? parseEdgeInsetsGeometry(map['margin']) as EdgeInsets : EdgeInsets.symmetric(vertical: 8, horizontal: 16), margin: map.containsKey('margin') ? parseEdgeInsetsGeometry(map['margin']) as EdgeInsets : EdgeInsets.symmetric(vertical: 8, horizontal: 16),
enabled: map.containsKey('enabled') ? map['enabled'] as bool : true, enabled: map.containsKey('enabled') ? map['enabled'] as bool : true,
......
...@@ -8,6 +8,11 @@ import 'package:widgetparser/widgetparser.dart'; ...@@ -8,6 +8,11 @@ import 'package:widgetparser/widgetparser.dart';
import 'package:widgetparser/src/drop_cap_text.dart'; import 'package:widgetparser/src/drop_cap_text.dart';
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
void printWrapped(String text) {
final pattern = new RegExp('.{1,800}');
pattern.allMatches(text).forEach((match) => print(match.group(0)));
}
Map<String, dynamic> jsonSchemaValidation(widgetSchema, widgetJson) { Map<String, dynamic> jsonSchemaValidation(widgetSchema, widgetJson) {
JsonSchema schema = JsonSchema.createSchema(widgetSchema); JsonSchema schema = JsonSchema.createSchema(widgetSchema);
Validator validator = Validator(schema); Validator validator = Validator(schema);
...@@ -64,29 +69,6 @@ TextAlign parseTextAlign(String? textAlignString) { ...@@ -64,29 +69,6 @@ TextAlign parseTextAlign(String? textAlignString) {
return textAlign; return textAlign;
} }
String exportTextAlign(TextAlign? textAlign) {
String rt = "start";
if (textAlign == TextAlign.left) {
rt = "left";
}
if (textAlign == TextAlign.right) {
rt = "right";
}
if (textAlign == TextAlign.center) {
rt = "center";
}
if (textAlign == TextAlign.justify) {
rt = "justify";
}
if (textAlign == TextAlign.start) {
rt = "start";
}
if (textAlign == TextAlign.end) {
rt = "end";
}
return rt;
}
TextOverflow parseTextOverflow(String? textOverflowString) { TextOverflow parseTextOverflow(String? textOverflowString) {
TextOverflow textOverflow = TextOverflow.ellipsis; TextOverflow textOverflow = TextOverflow.ellipsis;
switch (textOverflowString) { switch (textOverflowString) {
...@@ -105,18 +87,6 @@ TextOverflow parseTextOverflow(String? textOverflowString) { ...@@ -105,18 +87,6 @@ TextOverflow parseTextOverflow(String? textOverflowString) {
return textOverflow; return textOverflow;
} }
String exportTextOverflow(TextOverflow? textOverflow) {
String rt = "ellipsis";
if (textOverflow == TextOverflow.clip) {
rt = "clip";
}
if (textOverflow == TextOverflow.fade) {
rt = "fade";
}
return rt;
}
TextDecoration parseTextDecoration(String? textDecorationString) { TextDecoration parseTextDecoration(String? textDecorationString) {
TextDecoration textDecoration = TextDecoration.none; TextDecoration textDecoration = TextDecoration.none;
switch (textDecorationString) { switch (textDecorationString) {
...@@ -136,23 +106,6 @@ TextDecoration parseTextDecoration(String? textDecorationString) { ...@@ -136,23 +106,6 @@ TextDecoration parseTextDecoration(String? textDecorationString) {
return textDecoration; return textDecoration;
} }
String exportTextDecoration(TextDecoration? decoration) {
var rt = "none";
if (decoration == TextDecoration.lineThrough) {
rt = "lineThrough";
}
if (decoration == TextDecoration.overline) {
rt = "overline";
}
if (decoration == TextDecoration.underline) {
rt = "underline";
}
return rt;
}
TextDirection parseTextDirection(String? textDirectionString) { TextDirection parseTextDirection(String? textDirectionString) {
TextDirection textDirection = TextDirection.ltr; TextDirection textDirection = TextDirection.ltr;
switch (textDirectionString) { switch (textDirectionString) {
...@@ -168,14 +121,6 @@ TextDirection parseTextDirection(String? textDirectionString) { ...@@ -168,14 +121,6 @@ TextDirection parseTextDirection(String? textDirectionString) {
return textDirection; return textDirection;
} }
String exportTextDirection(TextDirection? textDirection) {
String rt = "ltr";
if (textDirection == TextDirection.rtl) {
rt = "rtl";
}
return rt;
}
FontWeight parseFontWeight(String? textFontWeight) { FontWeight parseFontWeight(String? textFontWeight) {
FontWeight fontWeight = FontWeight.normal; FontWeight fontWeight = FontWeight.normal;
switch (textFontWeight) { switch (textFontWeight) {
...@@ -214,38 +159,6 @@ FontWeight parseFontWeight(String? textFontWeight) { ...@@ -214,38 +159,6 @@ FontWeight parseFontWeight(String? textFontWeight) {
return fontWeight; return fontWeight;
} }
String exportFontWeight(FontWeight? fontWeight) {
String rt = "normal";
if (fontWeight == FontWeight.w100) {
rt = "w100";
}
if (fontWeight == FontWeight.w200) {
rt = "w200";
}
if (fontWeight == FontWeight.w300) {
rt = "w300";
}
if (fontWeight == FontWeight.w400) {
rt = "w400";
}
if (fontWeight == FontWeight.w500) {
rt = "w500";
}
if (fontWeight == FontWeight.w600) {
rt = "w600";
}
if (fontWeight == FontWeight.w700) {
rt = "w700";
}
if (fontWeight == FontWeight.w800) {
rt = "w800";
}
if (fontWeight == FontWeight.w900) {
rt = "w900";
}
return rt;
}
Color? parseHexColor(String? hexColorString) { Color? parseHexColor(String? hexColorString) {
if (hexColorString == null) { if (hexColorString == null) {
return null; return null;
...@@ -455,27 +368,6 @@ CrossAxisAlignment parseCrossAxisAlignment(String? crossAxisAlignmentString) { ...@@ -455,27 +368,6 @@ CrossAxisAlignment parseCrossAxisAlignment(String? crossAxisAlignmentString) {
return CrossAxisAlignment.center; return CrossAxisAlignment.center;
} }
String exportCrossAxisAlignment(CrossAxisAlignment crossAxisAlignment) {
String rt = "center";
if (crossAxisAlignment == CrossAxisAlignment.start) {
rt = "start";
}
if (crossAxisAlignment == CrossAxisAlignment.end) {
rt = "end";
}
if (crossAxisAlignment == CrossAxisAlignment.center) {
rt = "center";
}
if (crossAxisAlignment == CrossAxisAlignment.stretch) {
rt = "stretch";
}
if (crossAxisAlignment == CrossAxisAlignment.baseline) {
rt = "baseline";
}
return rt;
}
MainAxisAlignment parseMainAxisAlignment(String? mainAxisAlignmentString) { MainAxisAlignment parseMainAxisAlignment(String? mainAxisAlignmentString) {
switch (mainAxisAlignmentString) { switch (mainAxisAlignmentString) {
case 'start': case 'start':
...@@ -494,22 +386,6 @@ MainAxisAlignment parseMainAxisAlignment(String? mainAxisAlignmentString) { ...@@ -494,22 +386,6 @@ MainAxisAlignment parseMainAxisAlignment(String? mainAxisAlignmentString) {
return MainAxisAlignment.start; return MainAxisAlignment.start;
} }
String exportMainAxisAlignment(MainAxisAlignment mainAxisAlignment) {
String rt = "start";
if (mainAxisAlignment == MainAxisAlignment.end) {
rt = "end";
} else if (mainAxisAlignment == MainAxisAlignment.center) {
rt = "center";
} else if (mainAxisAlignment == MainAxisAlignment.spaceBetween) {
rt = "spaceBetween";
} else if (mainAxisAlignment == MainAxisAlignment.spaceAround) {
rt = "spaceAround";
} else if (mainAxisAlignment == MainAxisAlignment.spaceEvenly) {
rt = "spaceEvenly";
}
return rt;
}
MainAxisSize parseMainAxisSize(String? mainAxisSizeString) => MainAxisSize parseMainAxisSize(String? mainAxisSizeString) =>
mainAxisSizeString == 'min' ? MainAxisSize.min : MainAxisSize.max; mainAxisSizeString == 'min' ? MainAxisSize.min : MainAxisSize.max;
...@@ -523,102 +399,6 @@ VerticalDirection parseVerticalDirection(String? verticalDirectionString) => ...@@ -523,102 +399,6 @@ VerticalDirection parseVerticalDirection(String? verticalDirectionString) =>
? VerticalDirection.up ? VerticalDirection.up
: VerticalDirection.down; : VerticalDirection.down;
String? exportBlendMode(BlendMode? blendMode) {
if (blendMode == null) {
return null;
}
String rt = "srcIn";
if (blendMode == BlendMode.clear) {
rt = "clear";
}
if (blendMode == BlendMode.src) {
rt = "src";
}
if (blendMode == BlendMode.dst) {
rt = "dst";
}
if (blendMode == BlendMode.srcOver) {
rt = "srcOver";
}
if (blendMode == BlendMode.dstOver) {
rt = "dstOver";
}
if (blendMode == BlendMode.srcIn) {
rt = "srcIn";
}
if (blendMode == BlendMode.dstIn) {
rt = "dstIn";
}
if (blendMode == BlendMode.srcOut) {
rt = "srcOut";
}
if (blendMode == BlendMode.dstOut) {
rt = "dstOut";
}
if (blendMode == BlendMode.srcATop) {
rt = "srcATop";
}
if (blendMode == BlendMode.dstATop) {
rt = "dstATop";
}
if (blendMode == BlendMode.xor) {
rt = "xor";
}
if (blendMode == BlendMode.plus) {
rt = "plus";
}
if (blendMode == BlendMode.modulate) {
rt = "modulate";
}
if (blendMode == BlendMode.screen) {
rt = "screen";
}
if (blendMode == BlendMode.overlay) {
rt = "overlay";
}
if (blendMode == BlendMode.darken) {
rt = "darken";
}
if (blendMode == BlendMode.lighten) {
rt = "lighten";
}
if (blendMode == BlendMode.colorDodge) {
rt = "colorDodge";
}
if (blendMode == BlendMode.colorBurn) {
rt = "colorBurn";
}
if (blendMode == BlendMode.hardLight) {
rt = "hardLight";
}
if (blendMode == BlendMode.softLight) {
rt = "softLight";
}
if (blendMode == BlendMode.difference) {
rt = "difference";
}
if (blendMode == BlendMode.exclusion) {
rt = "exclusion";
}
if (blendMode == BlendMode.multiply) {
rt = "multiply";
}
if (blendMode == BlendMode.hue) {
rt = "hue";
}
if (blendMode == BlendMode.saturation) {
rt = "saturation";
}
if (blendMode == BlendMode.color) {
rt = "color";
}
if (blendMode == BlendMode.luminosity) {
rt = "luminosity";
}
return rt;
}
BlendMode? parseBlendMode(String? blendModeString) { BlendMode? parseBlendMode(String? blendModeString) {
if (blendModeString == null || blendModeString.trim().length == 0) { if (blendModeString == null || blendModeString.trim().length == 0) {
return null; return null;
...@@ -714,29 +494,6 @@ BoxFit? parseBoxFit(String? boxFitString) { ...@@ -714,29 +494,6 @@ BoxFit? parseBoxFit(String? boxFitString) {
return null; return null;
} }
String exportBoxFit(BoxFit? boxFit) {
String rt = "contain";
if (boxFit == BoxFit.fill) {
rt = "fill";
}
if (boxFit == BoxFit.cover) {
rt = "cover";
}
if (boxFit == BoxFit.fitWidth) {
rt = "fitWidth";
}
if (boxFit == BoxFit.fitHeight) {
rt = "fitHeight";
}
if (boxFit == BoxFit.none) {
rt = "none";
}
if (boxFit == BoxFit.scaleDown) {
rt = "scaleDown";
}
return rt;
}
ImageRepeat? parseImageRepeat(String? imageRepeatString) { ImageRepeat? parseImageRepeat(String? imageRepeatString) {
if (imageRepeatString == null) { if (imageRepeatString == null) {
return null; return null;
...@@ -757,20 +514,6 @@ ImageRepeat? parseImageRepeat(String? imageRepeatString) { ...@@ -757,20 +514,6 @@ ImageRepeat? parseImageRepeat(String? imageRepeatString) {
} }
} }
String exportImageRepeat(ImageRepeat imageRepeat) {
String rt = "noRepeat";
if (imageRepeat == ImageRepeat.repeat) {
rt = "repeat";
}
if (imageRepeat == ImageRepeat.repeatX) {
rt = "repeatX";
}
if (imageRepeat == ImageRepeat.repeatY) {
rt = "repeatY";
}
return rt;
}
Rect? parseRect(String? fromLTRBString) { Rect? parseRect(String? fromLTRBString) {
if (fromLTRBString == null) { if (fromLTRBString == null) {
return null; return null;
...@@ -780,10 +523,6 @@ Rect? parseRect(String? fromLTRBString) { ...@@ -780,10 +523,6 @@ Rect? parseRect(String? fromLTRBString) {
double.parse(strings[2]), double.parse(strings[3])); double.parse(strings[2]), double.parse(strings[3]));
} }
String exportRect(Rect rect) {
return "${rect.left},${rect.top},${rect.right},${rect.bottom}";
}
FilterQuality? parseFilterQuality(String? filterQualityString) { FilterQuality? parseFilterQuality(String? filterQualityString) {
if (filterQualityString == null) { if (filterQualityString == null) {
return null; return null;
...@@ -802,24 +541,6 @@ FilterQuality? parseFilterQuality(String? filterQualityString) { ...@@ -802,24 +541,6 @@ FilterQuality? parseFilterQuality(String? filterQualityString) {
} }
} }
String exportFilterQuality(FilterQuality filterQuality) {
String rt = "low";
if (filterQuality == FilterQuality.none) {
rt = "none";
}
if (filterQuality == FilterQuality.low) {
rt = "low";
}
if (filterQuality == FilterQuality.medium) {
rt = "medium";
}
if (filterQuality == FilterQuality.high) {
rt = "high";
}
return rt;
}
String? getLoadMoreUrl(String? url, int currentNo, int? pageSize) { String? getLoadMoreUrl(String? url, int currentNo, int? pageSize) {
if (url == null) { if (url == null) {
return null; return null;
...@@ -857,16 +578,6 @@ StackFit? parseStackFit(String? value) { ...@@ -857,16 +578,6 @@ StackFit? parseStackFit(String? value) {
} }
} }
String exportStackFit(StackFit stackFit) {
String rt = "loose";
if (stackFit == StackFit.expand) {
rt = "expand";
} else if (stackFit == StackFit.passthrough) {
rt = "passthrough";
}
return rt;
}
Clip? parseClip(String? value) { Clip? parseClip(String? value) {
if (value == null) { if (value == null) {
return null; return null;
...@@ -886,20 +597,6 @@ Clip? parseClip(String? value) { ...@@ -886,20 +597,6 @@ Clip? parseClip(String? value) {
} }
} }
String exportClip(Clip clip) {
String rt = "hardEdge";
if (clip == Clip.none) {
rt = "none";
} else if (clip == Clip.hardEdge) {
rt = "hardEdge";
} else if (clip == Clip.antiAlias) {
rt = "antiAlias";
} else if (clip == Clip.antiAliasWithSaveLayer) {
rt = "antiAliasWithSaveLayer";
}
return rt;
}
Axis parseAxis(String? axisString) { Axis parseAxis(String? axisString) {
if (axisString == null) { if (axisString == null) {
return Axis.horizontal; return Axis.horizontal;
...@@ -937,22 +634,6 @@ WrapAlignment parseWrapAlignment(String? wrapAlignmentString) { ...@@ -937,22 +634,6 @@ WrapAlignment parseWrapAlignment(String? wrapAlignmentString) {
return WrapAlignment.start; return WrapAlignment.start;
} }
String exportWrapAlignment(WrapAlignment wrapAlignment) {
String rt = "start";
if (wrapAlignment == WrapAlignment.end) {
rt = "end";
} else if (wrapAlignment == WrapAlignment.center) {
rt = "center";
} else if (wrapAlignment == WrapAlignment.spaceBetween) {
rt = "spaceBetween";
} else if (wrapAlignment == WrapAlignment.spaceAround) {
rt = "spaceAround";
} else if (wrapAlignment == WrapAlignment.spaceEvenly) {
rt = "spaceEvenly";
}
return rt;
}
//WrapCrossAlignment //WrapCrossAlignment
WrapCrossAlignment parseWrapCrossAlignment(String? wrapCrossAlignmentString) { WrapCrossAlignment parseWrapCrossAlignment(String? wrapCrossAlignmentString) {
if (wrapCrossAlignmentString == null) { if (wrapCrossAlignmentString == null) {
...@@ -998,23 +679,6 @@ Clip parseClipBehavior(String? clipBehaviorString) { ...@@ -998,23 +679,6 @@ Clip parseClipBehavior(String? clipBehaviorString) {
return Clip.antiAlias; return Clip.antiAlias;
} }
String exportClipBehavior(Clip clip) {
if (clip == Clip.antiAliasWithSaveLayer) {
return "antiAliasWithSaveLayer";
}
if (clip == Clip.hardEdge) {
return "hardEdge";
}
if (clip == Clip.none) {
return "none";
}
return "antiAlias";
}
DropCapMode? parseDropCapMode(String? value) { DropCapMode? parseDropCapMode(String? value) {
if (value == null) { if (value == null) {
return null; return null;
...@@ -1032,25 +696,6 @@ DropCapMode? parseDropCapMode(String? value) { ...@@ -1032,25 +696,6 @@ DropCapMode? parseDropCapMode(String? value) {
} }
} }
String? exportDropCapMod(DropCapMode? mode) {
if (mode == null) {
return null;
}
switch (mode) {
case DropCapMode.inside:
return "inside";
case DropCapMode.baseline:
return "baseline";
case DropCapMode.aside:
return "aside";
case DropCapMode.upwards:
return "upwards";
default:
return "inside";
}
}
DropCapPosition? parseDropCapPosition(String? value) { DropCapPosition? parseDropCapPosition(String? value) {
if (value == null) { if (value == null) {
return null; return null;
...@@ -1066,121 +711,17 @@ DropCapPosition? parseDropCapPosition(String? value) { ...@@ -1066,121 +711,17 @@ DropCapPosition? parseDropCapPosition(String? value) {
} }
} }
String exportDropCapPosition(DropCapPosition? dropCapPosition) { DropCap? parseDropCap(Map<String, dynamic>? map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
String rt = "start";
if (dropCapPosition == DropCapPosition.end) {
rt = "end";
}
return rt;
}
DropCap? parseDropCap(Map<String, dynamic>? map, BuildContext buildContext, MethodListener? listener) {
if (map == null) { if (map == null) {
return null; return null;
} }
return DropCap( return DropCap(
width: map['width']?.toDouble(), width: map['width']?.toDouble(),
height: map['height']?.toDouble(), height: map['height']?.toDouble(),
child: WidgetParserBuilder.buildFromMap(map["child"], buildContext, listener), child: WidgetParserBuilder.buildFromMap(map["child"], buildContext, listener, variable),
); );
} }
String exportAlignmentDirectional(AlignmentDirectional alignmentDirectional){
if (alignmentDirectional == AlignmentDirectional.bottomCenter) {
return "bottomCenter";
}
if (alignmentDirectional == AlignmentDirectional.center) {
return "center";
}
if (alignmentDirectional == AlignmentDirectional.bottomEnd) {
return "bottomEnd";
}
if (alignmentDirectional == AlignmentDirectional.bottomStart) {
return "bottomStart";
}
if (alignmentDirectional == AlignmentDirectional.centerEnd) {
return "centerEnd";
}
if (alignmentDirectional == AlignmentDirectional.centerStart) {
return "centerStart";
}
if (alignmentDirectional == AlignmentDirectional.bottomCenter) {
return "bottomCenter";
}
if (alignmentDirectional == AlignmentDirectional.topCenter) {
return "topCenter";
}
if (alignmentDirectional == AlignmentDirectional.topEnd) {
return "topEnd";
}
if (alignmentDirectional == AlignmentDirectional.topStart) {
return "topStart";
}
return "topStart";
}
String exportAlignment(Alignment? alignment) {
if (alignment == null) {
return "center";
}
if (alignment == Alignment.center) {
return "center";
}
if (alignment == Alignment.bottomRight) {
return "bottomRight";
}
if (alignment == Alignment.bottomCenter) {
return "bottomCenter";
}
if (alignment == Alignment.bottomLeft) {
return "bottomLeft";
}
if (alignment == Alignment.centerLeft) {
return "centerLeft";
}
if (alignment == Alignment.centerRight) {
return "centerRight";
}
if (alignment == Alignment.topCenter) {
return "topCenter";
}
if (alignment == Alignment.topLeft) {
return "topLeft";
}
if (alignment == Alignment.topRight) {
return "topRight";
}
if (alignment == Alignment.bottomRight) {
return "bottomRight";
}
return "center";
}
Map<String, dynamic> exportConstraints(BoxConstraints constraints) {
return {
'minWidth': constraints.minWidth,
'maxWidth': constraints.maxWidth == double.infinity
? infinity
: constraints.maxWidth,
'minHeight': constraints.minHeight,
'maxHeight': constraints.maxHeight == double.infinity
? infinity
: constraints.maxHeight,
};
}
Key? createKeyForWidget(dynamic keyParams) { Key? createKeyForWidget(dynamic keyParams) {
if (keyParams == 'UniqueKey') { if (keyParams == 'UniqueKey') {
return UniqueKey(); return UniqueKey();
...@@ -1239,7 +780,7 @@ double parseLLSSize(String size) { ...@@ -1239,7 +780,7 @@ double parseLLSSize(String size) {
BorderSide parseBorderSide(Map<String, dynamic> borderSide) { BorderSide parseBorderSide(Map<String, dynamic> borderSide) {
return BorderSide( return BorderSide(
color: borderSide.containsKey('color') ? parseHexColor(borderSide['color'])! : LLSColors.PRIMARY, color: (borderSide.containsKey('color') ? parseHexColor(borderSide['color'])! : null)!,
width: borderSide.containsKey('width') ? borderSide['width'] : 0.1, width: borderSide.containsKey('width') ? borderSide['width'] : 0.1,
style: borderSide.containsKey('style') ? parseBorderStyle(borderSide['style']) : BorderStyle.none style: borderSide.containsKey('style') ? parseBorderStyle(borderSide['style']) : BorderStyle.none
); );
...@@ -1284,14 +825,21 @@ NetworkImage parseNetworkImage(String? url, {double? scale}) { ...@@ -1284,14 +825,21 @@ NetworkImage parseNetworkImage(String? url, {double? scale}) {
BorderRadius? parseBorderRadius(Map<String, dynamic> map) { BorderRadius? parseBorderRadius(Map<String, dynamic> map) {
String borderRadiusMethod = map['borderRadiusMethod']; String borderRadiusMethod = map['borderRadiusMethod'];
Map<String, dynamic> radius = map['radius']; List radius = map['radius'];
if (borderRadiusMethod == 'circular') { if (borderRadiusMethod == 'circular') {
return BorderRadius.circular(radius[0]); return BorderRadius.circular(radius[0]);
} else if (borderRadiusMethod == 'vertical') { } else if (borderRadiusMethod == 'vertical') {
if (radius.length >= 2) {
return BorderRadius.vertical(top: radius[0], bottom: radius[1]); return BorderRadius.vertical(top: radius[0], bottom: radius[1]);
}
return BorderRadius.vertical(top: radius[0], bottom: radius[0]);
} else if (borderRadiusMethod == 'horizontal') { } else if (borderRadiusMethod == 'horizontal') {
if (radius.length >= 2) {
return BorderRadius.horizontal(left: radius[0], right: radius[1]); return BorderRadius.horizontal(left: radius[0], right: radius[1]);
}
return BorderRadius.horizontal(left: radius[0], right: radius[0]);
} else if (borderRadiusMethod == 'only') { } else if (borderRadiusMethod == 'only') {
if (radius.length >= 4) {
return BorderRadius.only( return BorderRadius.only(
topLeft: radius[0], topLeft: radius[0],
topRight: radius[1], topRight: radius[1],
...@@ -1299,6 +847,13 @@ BorderRadius? parseBorderRadius(Map<String, dynamic> map) { ...@@ -1299,6 +847,13 @@ BorderRadius? parseBorderRadius(Map<String, dynamic> map) {
bottomLeft: radius[3] bottomLeft: radius[3]
); );
} }
return BorderRadius.only(
topLeft: radius[0],
topRight: radius[0],
bottomRight: radius[0],
bottomLeft: radius[0]
);
}
} }
Border parseBorder(Map<String, dynamic> map) { Border parseBorder(Map<String, dynamic> map) {
...@@ -1344,3 +899,240 @@ List<BoxShadow> parseBoxShadowList(List<dynamic> boxShadow) { ...@@ -1344,3 +899,240 @@ List<BoxShadow> parseBoxShadowList(List<dynamic> boxShadow) {
} }
return boxSList; return boxSList;
} }
InputDecoration parseInputDecoration(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return InputDecoration(
icon: map.containsKey('icon') ? WidgetParserBuilder.buildFromMap(map['icon'], buildContext, listener, variable) : null,
labelText: map.containsKey('labelText') ? map['labelText'] : null,
labelStyle: map.containsKey('labelStyle') ? parseTextStyle(map['labelStyle']) : null,
helperText: map.containsKey('helperText') ? map['helperText'] : null,
helperStyle: map.containsKey('helperStyle') ? parseTextStyle(map['helperStyle']) : null,
helperMaxLines: map.containsKey('helperMaxLines') ? map['helperMaxLines'] : null,
hintText: map.containsKey('hintText') ? map['hintText'] : null,
hintStyle: map.containsKey('hintStyle') ? parseTextStyle(map['hintStyle']) : null,
hintTextDirection: map.containsKey('hintTextDirection') ? parseTextDirection(map['hintTextDirection']) : null,
hintMaxLines: map.containsKey('hintMaxLines') ? map['hintMaxLines'] : null,
errorText: map.containsKey('errorText') ? map['errorText'] : null,
errorStyle: map.containsKey('errorStyle') ? parseTextStyle(map['errorStyle']) : null,
errorMaxLines: map.containsKey('errorMaxLines') ? map['errorMaxLines'] : null,
floatingLabelBehavior: map.containsKey('floatingLabelBehavior') ? parseFloatingLabelBehavior(map['floatingLabelBehavior']) : null,
isCollapsed: map.containsKey('isCollapsed') ? map['isCollapsed'] as bool : false,
isDense: map.containsKey('isDense') ? map['isDense'] as bool : null,
contentPadding: map.containsKey('contentPadding') ? parseEdgeInsetsGeometry(map['contentPadding'])! : null,
prefixIcon: map.containsKey('prefixIcon') ? WidgetParserBuilder.buildFromMap(map['prefixIcon'], buildContext, listener, variable) : null,
prefixIconConstraints: map.containsKey('prefixIconConstraints') ? parseBoxConstraints(map['prefixIconConstraints']) : null,
prefix: map.containsKey('prefix') ? WidgetParserBuilder.buildFromMap(map['prefix'], buildContext, listener, variable) : null,
prefixText: map.containsKey('prefixText') ? map['prefixText'] : null,
prefixStyle: map.containsKey('prefixStyle') ? parseTextStyle(map['prefixStyle']) : null,
suffixIcon: map.containsKey('suffixIcon') ? WidgetParserBuilder.buildFromMap(map['suffixIcon'], buildContext, listener, variable) : null,
suffix: map.containsKey('suffix') ? WidgetParserBuilder.buildFromMap(map['suffix'], buildContext, listener, variable) : null,
suffixText: map.containsKey('suffixText') ? map['suffixText'] : null,
suffixStyle: map.containsKey('suffixStyle') ? parseTextStyle(map['suffixStyle']) : null,
suffixIconConstraints: map.containsKey('suffixIconConstraints') ? parseBoxConstraints(map['suffixIconConstraints']) : null,
counter: map.containsKey('counter') ? WidgetParserBuilder.buildFromMap(map['counter'], buildContext, listener, variable) : null,
counterText: map.containsKey('counterText') ? map['counterText'] : null,
counterStyle: map.containsKey('counterStyle') ? parseTextStyle(map['counterStyle']) : null,
filled: map.containsKey('filled') ? map['filled'] as bool : null,
fillColor: map.containsKey('fillColor') ? parseHexColor(map['fillColor'])! : null,
focusColor: map.containsKey('focusColor') ? parseHexColor(map['focusColor'])! : null,
hoverColor: map.containsKey('hoverColor') ? parseHexColor(map['hoverColor'])! : null,
errorBorder: map.containsKey('errorBorder') ? parseInputBorder(map['errorBorder']) : null,
focusedBorder: map.containsKey('focusedBorder') ? parseInputBorder(map['focusedBorder']) : null,
focusedErrorBorder: map.containsKey('focusedErrorBorder') ? parseInputBorder(map['focusedErrorBorder']) : null,
disabledBorder: map.containsKey('disabledBorder') ? parseInputBorder(map['disabledBorder']) : null,
enabledBorder: map.containsKey('enabledBorder') ? parseInputBorder(map['enabledBorder']) : null,
border: map.containsKey('border') ? parseInputBorder(map['border']) : null,
enabled: (map.containsKey('enabled') ? map['enabled'] as bool : null)!,
semanticCounterText: map.containsKey('semanticCounterText') ? map['semanticCounterText'] : null,
alignLabelWithHint: map.containsKey('alignLabelWithHint') ? map['alignLabelWithHint'] as bool : null
);
}
FloatingLabelBehavior parseFloatingLabelBehavior(String floatingLabelBehavior) {
if (floatingLabelBehavior == 'auto') {
return FloatingLabelBehavior.auto;
} else if (floatingLabelBehavior == 'always') {
return FloatingLabelBehavior.always;
} else {
return FloatingLabelBehavior.never;
}
}
InputBorder parseInputBorder(Map<String, dynamic> map) {
// example
// {
// "typeInputOrder": 'outline',
// "borderRadius": {
// "borderRadiusMethod": "vertical",
// "radius": [1.4,1.4]
// },
// "borderSide": {"color": "lls_primary", "width": 1.0, "style": {}}
// }
if (map.containsKey('typeInputOrder')) {
if (map['typeInputOrder'] == 'underline') {
return UnderlineInputBorder(
borderRadius: (map.containsKey('borderRadius') ? parseBorderRadius(map['borderRadius']) : BorderRadius.only(topLeft: Radius.circular(4.0), topRight: Radius.circular(4.0)))!,
borderSide: map.containsKey('borderSide') ? parseBorderSide(map['borderSide']) : BorderSide()
);
} else if (map['typeInputOrder'] == 'outline') {
return OutlineInputBorder(
borderRadius: (map.containsKey('borderRadius') ? parseBorderRadius(map['borderRadius']) : BorderRadius.all(Radius.circular(4.0)))!,
borderSide: map.containsKey('borderSide') ? parseBorderSide(map['borderSide']) : BorderSide(),
gapPadding: map.containsKey('gapPadding') ? map['gapPadding'] : 4.0
);
}
}
return InputBorder.none;
}
TextInputType parseTextInputType(String type) {
late TextInputType textInputType;
switch (type) {
case "datetime":
textInputType = TextInputType.datetime;
break;
case "emailAddress":
textInputType = TextInputType.emailAddress;
break;
case "multiline":
textInputType = TextInputType.multiline;
break;
case "name":
textInputType = TextInputType.name;
break;
case "number":
textInputType = TextInputType.number;
break;
case "phone":
textInputType = TextInputType.phone;
break;
case "streetAddress":
textInputType = TextInputType.streetAddress;
break;
case "url":
textInputType = TextInputType.url;
break;
default:
textInputType = TextInputType.text;
}
return textInputType;
}
TextCapitalization parseTextCapitalization(String cap) {
late TextCapitalization textCapitalization;
switch (cap) {
case "words":
textCapitalization = TextCapitalization.words;
break;
case "sentences":
textCapitalization = TextCapitalization.sentences;
break;
case "characters":
textCapitalization = TextCapitalization.characters;
break;
default:
textCapitalization = TextCapitalization.none;
}
return textCapitalization;
}
TextInputAction parseTextInputAction(String action) {
late TextInputAction textInputAction;
switch (action) {
case "unspecified":
textInputAction = TextInputAction.unspecified;
break;
case "done":
textInputAction = TextInputAction.done;
break;
case "go":
textInputAction = TextInputAction.go;
break;
case "search":
textInputAction = TextInputAction.search;
break;
case "send":
textInputAction = TextInputAction.send;
break;
case "next":
textInputAction = TextInputAction.next;
break;
case "previous":
textInputAction = TextInputAction.previous;
break;
case "continueAction":
textInputAction = TextInputAction.continueAction;
break;
case "join":
textInputAction = TextInputAction.join;
break;
case "route":
textInputAction = TextInputAction.route;
break;
case "emergencyCall":
textInputAction = TextInputAction.emergencyCall;
break;
case "newline":
textInputAction = TextInputAction.newline;
break;
default:
textInputAction = TextInputAction.none;
}
return textInputAction;
}
ToolbarOptions parseToolbarOptions(Map<String, dynamic> map) {
return ToolbarOptions(
copy: map.containsKey('copy') ? map['copy'] as bool : false,
cut: map.containsKey('cut') ? map['cut'] as bool : false,
paste: map.containsKey('paste') ? map['paste'] as bool : false,
selectAll: map.containsKey('selectAll') ? map['selectAll'] as bool : false,
);
}
Brightness parseBrightness(String str) {
late Brightness brightness;
switch (str) {
case "dark":
brightness = Brightness.dark;
break;
default:
brightness = Brightness.light;
}
return brightness;
}
ScrollPhysics parseScrollPhysics(String str) {
late ScrollPhysics scrollPhysics;
if (str == 'bouncing' || str == 'bouncingScroll' || str == 'bouncingScrollPhysics') {
scrollPhysics = BouncingScrollPhysics();
} else if (str == 'clamping' || str == 'clampingScroll' || str == 'clampingScrollPhysics') {
scrollPhysics = ClampingScrollPhysics();
} else if (str == 'fixedExtent' || str == 'fixedExtentScroll' || str == 'fixedExtentScrollPhysics') {
scrollPhysics = FixedExtentScrollPhysics();
} else if (str == 'neverScrollable' || str == 'neverScrollableScroll' || str == 'neverScrollableScrollPhysics') {
scrollPhysics = NeverScrollableScrollPhysics();
} else if (str == 'page' || str == 'pageScroll' || str == 'pageScrollPhysics') {
scrollPhysics = PageScrollPhysics();
} else if (str == 'rangeMaintaining' || str == 'rangeMaintainingScroll' || str == 'rangeMaintainingScrollPhysics') {
scrollPhysics = RangeMaintainingScrollPhysics();
} else {
scrollPhysics = AlwaysScrollableScrollPhysics();
}
return scrollPhysics;
}
AutovalidateMode parseAutovalidateMode(String str) {
late AutovalidateMode autovalidateMode;
switch (str) {
case "disabled":
autovalidateMode = AutovalidateMode.disabled;
break;
case "onUserInteraction":
autovalidateMode = AutovalidateMode.onUserInteraction;
break;
default:
autovalidateMode = AutovalidateMode.always;
}
return autovalidateMode;
}
\ No newline at end of file
...@@ -40,6 +40,8 @@ import 'package:widgetparser/src/flutter_widget/cliprrect_widget_parser.dart'; ...@@ -40,6 +40,8 @@ import 'package:widgetparser/src/flutter_widget/cliprrect_widget_parser.dart';
import 'package:widgetparser/src/flutter_widget/overflowbox_widget_parser.dart'; import 'package:widgetparser/src/flutter_widget/overflowbox_widget_parser.dart';
import 'package:widgetparser/src/flutter_widget/inkwell_widget_parser.dart'; import 'package:widgetparser/src/flutter_widget/inkwell_widget_parser.dart';
import 'package:widgetparser/src/flutter_widget/gesturedetector_widget_parser.dart'; import 'package:widgetparser/src/flutter_widget/gesturedetector_widget_parser.dart';
import 'package:widgetparser/src/flutter_widget/form_widget_parser.dart';
import 'package:widgetparser/src/flutter_widget/textformfield_widget_parser.dart';
//exports llswidget parser //exports llswidget parser
import 'package:widgetparser/src/llswidget/llsbutton_widget_parser.dart'; import 'package:widgetparser/src/llswidget/llsbutton_widget_parser.dart';
import 'package:widgetparser/src/llswidget/llslisttile_widget_parser.dart'; import 'package:widgetparser/src/llswidget/llslisttile_widget_parser.dart';
...@@ -85,6 +87,8 @@ class WidgetParserBuilder { ...@@ -85,6 +87,8 @@ class WidgetParserBuilder {
OverflowBoxWidgetParser(), OverflowBoxWidgetParser(),
InkWellWidgetParser(), InkWellWidgetParser(),
GestureDetectorWidgetParser(), GestureDetectorWidgetParser(),
FormWidgetParser(),
TextFormFieldWidgetParser(),
//llswidget //llswidget
LLSButtonWidgetParser(), LLSButtonWidgetParser(),
LLSListTileWidgetParser(), LLSListTileWidgetParser(),
...@@ -105,44 +109,38 @@ class WidgetParserBuilder { ...@@ -105,44 +109,38 @@ class WidgetParserBuilder {
} }
} }
static Widget? build(String json, BuildContext buildContext, MethodListener? listener) { static Widget? build(String json, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
initDefaultParsersIfNess(); initDefaultParsersIfNess();
var map = jsonDecode(json); var map = jsonDecode(json);
MethodListener _listener = listener == null ? new MethodListener() : listener; MethodListener _listener = listener == null ? new MethodListener() : listener;
var widget = buildFromMap(map, buildContext, _listener); var widget = buildFromMap(map, buildContext, _listener, variable);
return widget; return widget;
} }
static Widget? buildFromMap(Map<String, dynamic>? map, BuildContext buildContext, MethodListener? listener) { static Widget? buildFromMap(Map<String, dynamic>? map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
initDefaultParsersIfNess(); initDefaultParsersIfNess();
late SnackBar snackBar;
if (map == null) { if (map == null) {
snackBar = SnackBar(content: Text("please initialize the widget's object to the WidgetBuilderParser."));
ScaffoldMessenger.of(buildContext).showSnackBar(snackBar);
return null; return null;
} }
String? widgetName = map['widget']; String? widgetName = map['widget'];
var parser = _widgetNameParserMap[widgetName]; var parser = _widgetNameParserMap[widgetName];
if (parser != null) { if (parser != null) {
try { try {
return parser.parse(map, buildContext, listener); return parser.parse(map, buildContext, listener, variable);
} catch (e) { } catch (e) {
snackBar = SnackBar(content: Text(e.toString())); print("${e.toString().split('.')[0]} ${e.toString().split('.')[0]}");
ScaffoldMessenger.of(buildContext).showSnackBar(snackBar);
return null;
} }
} else { } else {
snackBar = SnackBar(content: Text("please initialize the $widgetName widget to the WidgetBuilderParser.")); print("please initialize the $widgetName widget to the WidgetBuilderParser.");
ScaffoldMessenger.of(buildContext).showSnackBar(snackBar);
return null;
} }
return null;
} }
static List<Widget> buildWidgets(List<dynamic> values, BuildContext buildContext, MethodListener? listener) { static List<Widget> buildWidgets(List<dynamic> values, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
initDefaultParsersIfNess(); initDefaultParsersIfNess();
List<Widget> rt = []; List<Widget> rt = [];
for (var value in values) { for (var value in values) {
var buildFromMap2 = buildFromMap(value, buildContext, listener); var buildFromMap2 = buildFromMap(value, buildContext, listener, variable);
if(buildFromMap2!=null) { if(buildFromMap2!=null) {
rt.add(buildFromMap2); rt.add(buildFromMap2);
} }
...@@ -152,7 +150,7 @@ class WidgetParserBuilder { ...@@ -152,7 +150,7 @@ class WidgetParserBuilder {
} }
abstract class WidgetParser { abstract class WidgetParser {
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener); Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable);
String get widgetName; String get widgetName;
...@@ -160,16 +158,18 @@ abstract class WidgetParser { ...@@ -160,16 +158,18 @@ abstract class WidgetParser {
} }
class MethodListener { class MethodListener {
void run(BuildContext context, Map<String, dynamic>? event) { // the data type of the "function" is string
// the data type of the "parameters" is Map<String, dynamic>
run(BuildContext context, Map<String, dynamic>? event) {
if (isFunctionNameExist(event)) { if (isFunctionNameExist(event)) {
print("event: ${event!['func_name']}"); print("event: ${event!['function']}");
} else { } else {
print("receiver event: ${event.toString()}"); print("receiver event: ${event.toString()}");
} }
} }
bool isFunctionNameExist(Map<String, dynamic>? event) { bool isFunctionNameExist(Map<String, dynamic>? event) {
return event!.containsKey('func_name'); return event!.containsKey('function');
} }
bool isParametersExist(Map<String, dynamic>? event) { bool isParametersExist(Map<String, dynamic>? event) {
......
name: widgetparser name: widgetparser
description: this package to dynamically render widgets from JSON description: this package to dynamically render widgets from JSON
version: 0.0.1 version: 0.0.4
author: Rizal Hermawan author: Rizal Hermawan
homepage: https://locatorlogic.com homepage: https://locatorlogic.com
...@@ -17,7 +17,7 @@ dependencies: ...@@ -17,7 +17,7 @@ dependencies:
llswidget: llswidget:
path: ../llswidget path: ../llswidget
cupertino_icons: ^1.0.2 cupertino_icons: ^1.0.2
json_schema2: ^2.0.0+2 json_schema2: 2.0.0+2
dev_dependencies: dev_dependencies:
flutter_test: flutter_test:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment