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 @@
#
# 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/
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/
......
......@@ -4,7 +4,7 @@ import 'package:flutter/widgets.dart';
class AlignWidgetParser extends WidgetParser {
@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(
alignment: map.containsKey("alignment")
? parseAlignment(map["alignment"])
......@@ -16,7 +16,7 @@ class AlignWidgetParser extends WidgetParser {
? map["heightFactor"]?.toDouble()
: null,
child: WidgetParserBuilder.buildFromMap(
map["child"], buildContext, listener),
map["child"], buildContext, listener, variable),
);
}
......
......@@ -4,20 +4,20 @@ import 'package:flutter/material.dart';
class AppBarWidgetParser extends WidgetParser {
@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(
key: map.containsKey("key") ? createKeyForWidget(map["key"]) : null,
title: map.containsKey("title")
? WidgetParserBuilder.buildFromMap(
map["title"], buildContext, listener)
map["title"], buildContext, listener, variable)
: null,
leading: map.containsKey("leading")
? WidgetParserBuilder.buildFromMap(
map["leading"], buildContext, listener)
map["leading"], buildContext, listener, variable)
: null,
actions: map.containsKey("actions")
? WidgetParserBuilder.buildWidgets(
map["actions"], buildContext, listener)
map["actions"], buildContext, listener, variable)
: null,
centerTitle:
map.containsKey("centerTitle") ? map["centerTitle"] as bool? : false,
......
......@@ -3,11 +3,11 @@ import 'package:flutter/widgets.dart';
class AspectRatioWidgetParser extends WidgetParser {
@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(
aspectRatio: map["aspectRatio"]?.toDouble(),
child: WidgetParserBuilder.buildFromMap(
map["child"], buildContext, listener),
map["child"], buildContext, listener, variable),
);
}
......
......@@ -3,14 +3,14 @@ import 'package:flutter/widgets.dart';
class BaselineWidgetParser extends WidgetParser {
@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(
baseline: map["baseline"]?.toDouble(),
baselineType: map["baselineType"] == "alphabetic"
? TextBaseline.alphabetic
: TextBaseline.ideographic,
child: WidgetParserBuilder.buildFromMap(
map["child"], buildContext, listener),
map["child"], buildContext, listener, variable),
);
}
......
......@@ -3,7 +3,7 @@ import 'package:flutter/widgets.dart';
class CenterWidgetParser extends WidgetParser {
@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(
widthFactor: map.containsKey("widthFactor")
? map["widthFactor"]?.toDouble()
......@@ -12,7 +12,7 @@ class CenterWidgetParser extends WidgetParser {
? map["heightFactor"]?.toDouble()
: null,
child: WidgetParserBuilder.buildFromMap(
map["child"], buildContext, listener),
map["child"], buildContext, listener, variable),
);
}
......
......@@ -4,22 +4,13 @@ import 'package:flutter/widgets.dart';
class ClipRRectWidgetParser extends WidgetParser {
@override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) {
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]);
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
var clipBehaviorString = map['clipBehavior'];
return ClipRRect(
borderRadius: BorderRadius.only(
topLeft: Radius.circular(topLeft),
topRight: Radius.circular(topRight),
bottomLeft: Radius.circular(bottomLeft),
bottomRight: Radius.circular(bottomRight)),
borderRadius: map.containsKey('borderRadius') ? parseBorderRadius(map['borderRadius']) : null,
clipBehavior: parseClipBehavior(clipBehaviorString),
child: WidgetParserBuilder.buildFromMap(
map["child"], buildContext, listener),
map["child"], buildContext, listener, variable),
);
}
......
import 'package:widgetparser/widgetparser.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';
class ContainerWidgetParser extends WidgetParser {
@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']);
Color? color = parseHexColor(map['color']);
BoxConstraints constraints = parseBoxConstraints(map['constraints']);
......@@ -14,7 +14,7 @@ class ContainerWidgetParser extends WidgetParser {
Map<String, dynamic>? childMap = map['child'];
Widget? child = childMap == null
? null
: WidgetParserBuilder.buildFromMap(childMap, buildContext, listener);
: WidgetParserBuilder.buildFromMap(childMap, buildContext, listener, variable);
var containerWidget = Container(
alignment: alignment,
......@@ -30,21 +30,21 @@ class ContainerWidgetParser extends WidgetParser {
const containerSchema = '''
{
"\$schema\": $schemaUrl,
"\$schema\": "$schemaUrl",
"\$ref\": "${refSchema}Container",
"definitions": {
"Container": {
"type": "object",
"additionalProperties": false,
"additionalProperties": true,
"properties": {
"widget": {
"type": "string"
},
"alignment": ${WidgetSchema.alignment},
"alignment": ${SchemaHelper.alignment},
"padding": {
"type": "string"
},
"color": ${WidgetSchema.color},
"color": ${SchemaHelper.color},
"margin": {
"type": "string"
},
......@@ -69,11 +69,11 @@ class ContainerWidgetParser extends WidgetParser {
],
"title": "Container"
},
"Child": ${WidgetSchema.child},
"Constraints": ${WidgetSchema.constraints},
"Decoration": ${WidgetSchema.decoration},
"BorderRadius": ${WidgetSchema.borderRadius},
"BoxShadow": ${WidgetSchema.boxShadow}
"Child": ${SchemaHelper.child},
"Constraints": ${SchemaHelper.constraints},
"Decoration": ${SchemaHelper.decoration},
"BorderRadius": ${SchemaHelper.borderRadius},
"BoxShadow": ${SchemaHelper.boxShadow}
}
}
''';
......@@ -112,12 +112,12 @@ class ContainerWidgetParser extends WidgetParser {
// }
// }
Map<String, dynamic> jsonSchemaResult = jsonSchemaValidation(containerSchema, map);
if (!jsonSchemaResult['validates']) {
return jsonSchemaErrorWidget(jsonSchemaResult['validator']);
} else {
// Map<String, dynamic> jsonSchemaResult = jsonSchemaValidation(containerSchema, map);
// if (!jsonSchemaResult['validates']) {
// return jsonSchemaErrorWidget(jsonSchemaResult['validator']);
// } else {
return containerWidget;
}
//}
}
@override
......
......@@ -5,7 +5,7 @@ import 'package:flutter/material.dart';
class DropCapTextParser extends WidgetParser {
@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(
data: map.containsKey('data') ? map['data'] : null,
selectable: map.containsKey('selectable') ? map['selectable'] : false,
......@@ -20,7 +20,7 @@ class DropCapTextParser extends WidgetParser {
? parseTextAlign(map['textAlign'])
: TextAlign.start,
dropCap: map.containsKey('dropCap')
? parseDropCap(map['dropCap'], buildContext, listener)
? parseDropCap(map['dropCap'], buildContext, listener, variable)
: null,
dropCapPadding: map.containsKey('dropCapPadding')
? parseEdgeInsetsGeometry(map['dropCapPadding']) as EdgeInsets?
......
......@@ -3,10 +3,10 @@ import 'package:flutter/widgets.dart';
class ExpandedWidgetParser extends WidgetParser {
@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(
child: WidgetParserBuilder.buildFromMap(
map["child"], buildContext, listener)!,
map["child"], buildContext, listener, variable)!,
flex: map.containsKey("flex") ? map["flex"] : 1,
);
}
......
......@@ -4,14 +4,14 @@ import 'package:flutter/widgets.dart';
class FittedBoxWidgetParser extends WidgetParser {
@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(
alignment: map.containsKey("alignment")
? parseAlignment(map["alignment"])
: Alignment.center,
fit: map.containsKey("fit") ? parseBoxFit(map["fit"])! : BoxFit.contain,
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';
class GestureDetectorWidgetParser extends WidgetParser {
@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(
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,
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,
onTapCancel: map.containsKey('onTapCancel') ? () => listener!.run(buildContext, map['onTapCancel']) : null,
onSecondaryTap: map.containsKey('onSecondaryTap') ? () => listener!.run(buildContext, map['onSecondaryTap']) : null,
......
......@@ -5,7 +5,7 @@ import 'package:flutter/material.dart';
class IconWidgetParser extends WidgetParser {
@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(
map.containsKey('data')
? getIconUsingPrefix(name: map['data'])
......
......@@ -4,13 +4,13 @@ import 'package:flutter/material.dart';
class IconButtonWidgetParser extends WidgetParser {
@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;
return IconButton(
key: map.containsKey("key") ? createKeyForWidget(map["key"]) : null,
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),
color: map.containsKey('color') ? parseHexColor(map['color']) : null,
focusColor: map.containsKey('focusColor') ? parseHexColor(map['focusColor']) : null,
......
......@@ -6,7 +6,7 @@ import 'package:flutter/widgets.dart';
class AssetImageWidgetParser extends WidgetParser {
@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? semanticLabel =
map.containsKey('semanticLabel') ? map['semanticLabel'] : null;
......@@ -69,7 +69,7 @@ class AssetImageWidgetParser extends WidgetParser {
class NetworkImageWidgetParser extends WidgetParser {
@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? semanticLabel =
map.containsKey('semanticLabel') ? map['semanticLabel'] : null;
......
......@@ -4,7 +4,7 @@ import 'package:flutter/widgets.dart';
class IndexedStackWidgetParser extends WidgetParser {
@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(
index: map.containsKey("index") ? map["index"] : 0,
......@@ -15,7 +15,7 @@ class IndexedStackWidgetParser extends WidgetParser {
? parseTextDirection(map["textDirection"])
: null,
children: WidgetParserBuilder.buildWidgets(
map['children'], buildContext, listener),
map['children'], buildContext, listener, variable),
);
}
......
......@@ -5,11 +5,11 @@ import 'package:widgetparser/src/utils.dart';
class InkWellWidgetParser extends WidgetParser {
@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(
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,
onTapDown: map.containsKey('onTapDown') ? (TapDownDetails tapDownDetails) => listener!.run(buildContext, map['onTapDown']) : null,
onTapCancel: map.containsKey('onTapCancel') ? () => listener!.run(buildContext, map['onTapCancel']) : null
......
......@@ -3,13 +3,13 @@ import 'package:flutter/material.dart';
class LimitedBoxWidgetParser extends WidgetParser {
@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(
maxWidth: map.containsKey("maxWidth") ? map['maxWidth'] : double.infinity,
maxHeight:
map.containsKey("maxHeight") ? map['maxHeight'] : double.infinity,
child: WidgetParserBuilder.buildFromMap(
map['child'], buildContext, listener),
map['child'], buildContext, listener, variable),
);
}
......
......@@ -6,7 +6,7 @@ import '../utils.dart';
class ListTileWidgetParser extends WidgetParser {
@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 =
map.containsKey("isThreeLine") ? map["isThreeLine"] : false;
EdgeInsetsGeometry? contentPadding = map.containsKey("contentPadding")
......@@ -16,20 +16,20 @@ class ListTileWidgetParser extends WidgetParser {
bool enabled = map.containsKey("enabled") ? map["enabled"] : true;
Widget? leading = map.containsKey("leading")
? WidgetParserBuilder.buildFromMap(
map["leading"], buildContext, listener)
map["leading"], buildContext, listener, variable)
: null;
bool selected = map.containsKey("selected") ? map["selected"] : false;
Widget? subtitle = map.containsKey("subtitle")
? WidgetParserBuilder.buildFromMap(
map["subtitle"], buildContext, listener)
map["subtitle"], buildContext, listener, variable)
: null;
Widget? title = map.containsKey("title")
? WidgetParserBuilder.buildFromMap(
map["title"], buildContext, listener)
map["title"], buildContext, listener, variable)
: null;
Widget? trailing = map.containsKey("trailing")
? WidgetParserBuilder.buildFromMap(
map["trailing"], buildContext, listener)
map["trailing"], buildContext, listener, variable)
: null;
// String? tapEvent = map.containsKey("tapEvent") ? map["tapEvent"] : null;
......
import 'dart:convert';
import 'package:widgetparser/widgetparser.dart';
import 'package:widgetparser/src/utils.dart';
import 'package:flutter/material.dart';
......@@ -7,7 +5,7 @@ import 'package:flutter/widgets.dart';
class ListViewWidgetParser extends WidgetParser {
@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;
if (map.containsKey("scrollDirection") &&
"horizontal" == map["scrollDirection"]) {
......@@ -24,7 +22,7 @@ class ListViewWidgetParser extends WidgetParser {
var itemExtent =
map.containsKey("itemExtent") ? map["itemExtent"]?.toDouble() : null;
var children = WidgetParserBuilder.buildWidgets(
map['children'], buildContext, listener);
map['children'], buildContext, listener, variable);
return ListView(
scrollDirection: scrollDirection,
......
......@@ -4,10 +4,10 @@ import 'package:flutter/cupertino.dart';
class OffstageWidgetParser extends WidgetParser{
@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(
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';
class OpacityWidgetParser extends WidgetParser {
@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(
opacity: map["opacity"]?.toDouble(),
alwaysIncludeSemantics: map.containsKey("alwaysIncludeSemantics")
? map["alwaysIncludeSemantics"]
: false,
child: WidgetParserBuilder.buildFromMap(
map["child"], buildContext, listener),
map["child"], buildContext, listener, variable),
);
}
......
......@@ -4,14 +4,14 @@ import 'package:flutter/cupertino.dart';
class OverflowBoxWidgetParser extends WidgetParser {
@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(
alignment: parseAlignment(map['alignment']),
minWidth: map.containsKey("minWidth")?map['minWidth']:null,
maxWidth: map.containsKey("maxWidth")?map['maxWidth']:null,
minHeight: map.containsKey("minHeight")?map['minHeight']: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';
class PaddingWidgetParser extends WidgetParser {
@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(
padding: map.containsKey("padding")
? parseEdgeInsetsGeometry(map["padding"])!
: EdgeInsets.zero,
child: WidgetParserBuilder.buildFromMap(
map["child"], buildContext, listener),
map["child"], buildContext, listener, variable),
);
}
......
......@@ -3,7 +3,7 @@ import 'package:flutter/widgets.dart';
class PageViewWidgetParser extends WidgetParser {
@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;
if (map.containsKey("scrollDirection") &&
......@@ -16,7 +16,7 @@ class PageViewWidgetParser extends WidgetParser {
pageSnapping:
map.containsKey("pageSnapping") ? map["pageSnapping"] : true,
children: WidgetParserBuilder.buildWidgets(
map['children'], buildContext, listener),
map['children'], buildContext, listener, variable),
);
}
......
......@@ -4,7 +4,7 @@ import 'package:flutter/widgets.dart';
class PlaceholderWidgetParser extends WidgetParser {
@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(
color: map.containsKey('color')
? parseHexColor(map['color'])!
......
......@@ -4,7 +4,7 @@ import 'package:flutter/widgets.dart';
class RowWidgetParser extends WidgetParser {
@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(
crossAxisAlignment: map.containsKey('crossAxisAlignment')
......@@ -26,7 +26,7 @@ class RowWidgetParser extends WidgetParser {
? parseVerticalDirection(map['verticalDirection'])
: VerticalDirection.down,
children: WidgetParserBuilder.buildWidgets(
map['children'], buildContext, listener),
map['children'], buildContext, listener, variable),
);
}
......@@ -39,7 +39,7 @@ class RowWidgetParser extends WidgetParser {
class ColumnWidgetParser extends WidgetParser {
@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(
crossAxisAlignment: map.containsKey('crossAxisAlignment')
......@@ -61,7 +61,7 @@ class ColumnWidgetParser extends WidgetParser {
? parseVerticalDirection(map['verticalDirection'])
: VerticalDirection.down,
children: WidgetParserBuilder.buildWidgets(
map['children'], buildContext, listener),
map['children'], buildContext, listener, variable),
);
}
......
......@@ -4,7 +4,7 @@ import 'package:flutter/widgets.dart';
class SafeAreaWidgetParser extends WidgetParser {
@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 right = map.containsKey("right") ? map["right"] : true;
var top = map.containsKey("top") ? map["top"] : true;
......@@ -23,7 +23,7 @@ class SafeAreaWidgetParser extends WidgetParser {
minimum: edgeInsets as EdgeInsets,
maintainBottomViewPadding: maintainBottomViewPadding,
child: WidgetParserBuilder.buildFromMap(
map["child"], buildContext, listener)!,
map["child"], buildContext, listener, variable)!,
);
}
......
......@@ -5,27 +5,27 @@ import 'package:flutter/widgets.dart';
class ScaffoldWidgetParser extends WidgetParser {
@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(
key: map.containsKey("key") ? createKeyForWidget(map["key"]) : null,
appBar: map.containsKey("appBar")
? WidgetParserBuilder.buildFromMap(
map["appBar"], buildContext, listener) as PreferredSizeWidget?
map["appBar"], buildContext, listener, variable) as PreferredSizeWidget?
: null,
body: map.containsKey("body")
? WidgetParserBuilder.buildFromMap(
map["body"], buildContext, listener)
map["body"], buildContext, listener, variable)
: null,
floatingActionButton: map.containsKey("floatingActionButton")
? WidgetParserBuilder.buildFromMap(
map["floatingActionButton"], buildContext, listener)
map["floatingActionButton"], buildContext, listener, variable)
: null,
backgroundColor: map.containsKey("backgroundColor")
? parseHexColor(map["backgroundColor"])
: null,
persistentFooterButtons: map.containsKey("persistentFooterButtons")
? WidgetParserBuilder.buildWidgets(
map["persistentFooterButtons"], buildContext, listener)
map["persistentFooterButtons"], buildContext, listener, variable)
: null,
);
......
......@@ -6,7 +6,7 @@ import 'package:flutter/material.dart';
class SelectableTextWidgetParser implements WidgetParser {
@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? textAlignString = map['textAlign'];
int? maxLines = map['maxLines'];
......@@ -15,7 +15,7 @@ class SelectableTextWidgetParser implements WidgetParser {
var textSpan;
var textSpanParser = SelectableTextSpanParser();
if (map.containsKey("textSpan")) {
textSpan = textSpanParser.parse(map['textSpan'], buildContext, listener);
textSpan = textSpanParser.parse(map['textSpan'], buildContext, listener, variable);
}
if (textSpan == null) {
......@@ -47,7 +47,7 @@ class SelectableTextWidgetParser implements WidgetParser {
}
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;
var textSpan = TextSpan(
text: map['text'],
......@@ -57,16 +57,16 @@ class SelectableTextSpanParser {
children: []);
if (map.containsKey('children')) {
parseChildren(textSpan, map['children'], buildContext, listener);
parseChildren(textSpan, map['children'], buildContext, listener, variable);
}
return textSpan;
}
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) {
textSpan.children!.add(parse(childmap, buildContext, listener));
textSpan.children!.add(parse(childmap, buildContext, listener, variable));
}
}
}
......@@ -4,10 +4,10 @@ import 'package:flutter/widgets.dart';
//Creates a box that will become as large as its parent allows.
class ExpandedSizedBoxWidgetParser extends WidgetParser {
@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(
child: WidgetParserBuilder.buildFromMap(
map["child"], buildContext, listener),
map["child"], buildContext, listener, variable),
);
}
......@@ -20,12 +20,12 @@ class ExpandedSizedBoxWidgetParser extends WidgetParser {
class SizedBoxWidgetParser extends WidgetParser {
@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(
width: map["width"],
height: map["height"],
child: WidgetParserBuilder.buildFromMap(
map["child"], buildContext, listener),
map["child"], buildContext, listener, variable),
);
}
......
......@@ -4,10 +4,10 @@ import 'package:flutter/widgets.dart';
class PositionedWidgetParser extends WidgetParser {
@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(
child: WidgetParserBuilder.buildFromMap(
map["child"], buildContext, listener)!,
map["child"], buildContext, listener, variable)!,
top: map.containsKey("top") ? map["top"]?.toDouble() : null,
right: map.containsKey("right") ? map["right"]?.toDouble() : null,
bottom: map.containsKey("bottom") ? map["bottom"]?.toDouble() : null,
......@@ -26,7 +26,7 @@ class PositionedWidgetParser extends WidgetParser {
class StackWidgetParser extends WidgetParser {
@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(
alignment: map.containsKey("alignment")
......@@ -40,7 +40,7 @@ class StackWidgetParser extends WidgetParser {
? parseClip(map["clipBehavior"])!
: Clip.hardEdge,
children: WidgetParserBuilder.buildWidgets(
map['children'], buildContext, listener),
map['children'], buildContext, listener, variable),
);
}
......
......@@ -6,7 +6,7 @@ import 'package:flutter/widgets.dart';
class TextWidgetParser implements WidgetParser {
@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? textAlignString = map['textAlign'];
String? overflow = map['overflow'];
......@@ -18,7 +18,7 @@ class TextWidgetParser implements WidgetParser {
var textSpan;
var textSpanParser = TextSpanParser();
if (map.containsKey("textSpan")) {
textSpan = textSpanParser.parse(map['textSpan'], buildContext, listener);
textSpan = textSpanParser.parse(map['textSpan'], buildContext, listener, variable);
}
if (textSpan == null) {
......@@ -56,7 +56,7 @@ class TextWidgetParser implements WidgetParser {
}
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;
var textSpan = TextSpan(
text: map['text'],
......@@ -66,16 +66,16 @@ class TextSpanParser {
children: []);
if (map.containsKey('children')) {
parseChildren(textSpan, map['children'], buildContext, listener);
parseChildren(textSpan, map['children'], buildContext, listener, variable);
}
return textSpan;
}
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) {
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';
class WrapWidgetParser extends WidgetParser {
@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(
direction: map.containsKey("direction")
? parseAxis(map["direction"])
......@@ -28,7 +28,7 @@ class WrapWidgetParser extends WidgetParser {
? parseVerticalDirection(map["verticalDirection"])
: VerticalDirection.down,
children: WidgetParserBuilder.buildWidgets(
map['children'], buildContext, listener)
map['children'], buildContext, listener, variable)
);
}
......
const schemaUrl = "http://json-schema.org/draft-06/schema#";
const refSchema = "#/definitions/";
class WidgetSchema {
class SchemaHelper {
static const child = '''
{
"type": "object",
"additionalProperties": false,
"additionalProperties": true,
"properties": {
"widget": {
"type": "string",
"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": [
......@@ -50,7 +50,7 @@ class WidgetSchema {
static const decoration = '''
{
"type": "object",
"additionalProperties": false,
"additionalProperties": true,
"properties": {
"borderRadius": {
"\$ref\": "${refSchema}BorderRadius"
......
......@@ -5,7 +5,7 @@ import 'package:llswidget/llswidget.dart';
class LLSButtonWidgetParser extends WidgetParser {
@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(
key: map.containsKey("key") ? createKeyForWidget(map["key"]) : null,
onPressed: map.containsKey('onPressed') ? () => listener!.run(buildContext, map['onPressed']) : null,
......@@ -27,7 +27,7 @@ class LLSButtonWidgetParser extends WidgetParser {
clipBehavior: parseClipBehavior(map['clipBehavior']),
focusNode: map.containsKey('focusNode') ? map['focusNode'] : null,
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,
shape: map.containsKey('shape') ? parseLLSButtonShape(map['shape']) : LLSButtonShape.standard,
color: map.containsKey('color') ? parseHexColor(map['color'])! : LLSColors.PRIMARY,
......@@ -36,7 +36,7 @@ class LLSButtonWidgetParser extends WidgetParser {
size: map.containsKey('size') ? parseLLSSize(map['size']) : LLSSize.MEDIUM,
borderSide: map.containsKey('borderSide') ? parseBorderSide(map['borderSide']) : null,
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,
fullWidthButton: map.containsKey('fullWidthButton') ? map['fullWidthButton'] as bool : null,
onLongPress: map.containsKey('onLongPress') ? () => listener!.run(buildContext, map['onLongPress']) : null,
......
......@@ -5,7 +5,7 @@ import 'package:llswidget/llswidget.dart';
class LLSCardWidgetParser extends WidgetParser {
@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;
return LLSCard(
......@@ -17,9 +17,9 @@ class LLSCardWidgetParser extends WidgetParser {
margin: margin,
clipBehavior: parseClipBehavior(map['clipBehavior']),
semanticContainer: map.containsKey('autofocus') ? map['autofocus'] as bool : null,
title: map.containsKey('title') ? WidgetParserBuilder.buildFromMap(map['title'], buildContext, listener) as LLSListTile : LLSListTile(),
content: map.containsKey('content') ? WidgetParserBuilder.buildFromMap(map['content'], buildContext, listener) : SizedBox(),
image: map.containsKey('image') ? WidgetParserBuilder.buildFromMap(map['image'], buildContext, listener) as Image : null,
title: map.containsKey('title') ? WidgetParserBuilder.buildFromMap(map['title'], buildContext, listener, variable) as LLSListTile : LLSListTile(),
content: map.containsKey('content') ? WidgetParserBuilder.buildFromMap(map['content'], buildContext, listener, variable) : SizedBox(),
image: map.containsKey('image') ? WidgetParserBuilder.buildFromMap(map['image'], buildContext, listener, variable) as Image : null,
showImage: map.containsKey('showImage') ? map['showImage'] as bool : false,
showOverlayImage: map.containsKey('showOverlayImage') ? map['showOverlayImage'] as bool : false,
// buttonBar: ,
......
......@@ -5,13 +5,13 @@ import 'package:llswidget/llswidget.dart';
class LLSLabelWidgetParser extends WidgetParser {
@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(
key: map.containsKey('key') ? createKeyForWidget(map['key']) : null,
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'] : '',
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,
textColor: map.containsKey('textColor') ? parseHexColor(map['textColor'])! : LLSColors.DARK,
dividerAlignment: map.containsKey('dividerAlignment') ? parseAlignment(map['dividerAlignment']) : null,
......
......@@ -5,18 +5,18 @@ import 'package:llswidget/llswidget.dart';
class LLSListTileWidgetParser extends WidgetParser {
@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(
key: map.containsKey('key') ? createKeyForWidget(map['key']) : null,
titleText: map.containsKey('titleText') ? map['titleText'] : null,
subTitleText: map.containsKey('subTitleText') ? map['subTitleText'] : null,
color: map.containsKey('color') ? parseHexColor(map['color'])! : LLSColors.WHITE,
avatar: map.containsKey('avatar') ? WidgetParserBuilder.buildFromMap(map['avatar'], buildContext, listener) : null,
title: map.containsKey('title') ? WidgetParserBuilder.buildFromMap(map['title'], buildContext, listener) : null,
subTitle: map.containsKey('subTitle') ? WidgetParserBuilder.buildFromMap(map['subTitle'], buildContext, listener) : null,
description: map.containsKey('description') ? WidgetParserBuilder.buildFromMap(map['description'], buildContext, listener) : null,
icon: map.containsKey('icon') ? WidgetParserBuilder.buildFromMap(map['icon'], 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, variable) : null,
subTitle: map.containsKey('subTitle') ? WidgetParserBuilder.buildFromMap(map['subTitle'], buildContext, listener, variable) : null,
description: map.containsKey('description') ? WidgetParserBuilder.buildFromMap(map['description'], buildContext, listener, variable) : 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),
margin: map.containsKey('margin') ? parseEdgeInsetsGeometry(map['margin']) as EdgeInsets : EdgeInsets.symmetric(vertical: 8, horizontal: 16),
enabled: map.containsKey('enabled') ? map['enabled'] as bool : true,
......
......@@ -8,6 +8,11 @@ import 'package:widgetparser/widgetparser.dart';
import 'package:widgetparser/src/drop_cap_text.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) {
JsonSchema schema = JsonSchema.createSchema(widgetSchema);
Validator validator = Validator(schema);
......@@ -64,29 +69,6 @@ TextAlign parseTextAlign(String? textAlignString) {
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 textOverflow = TextOverflow.ellipsis;
switch (textOverflowString) {
......@@ -105,18 +87,6 @@ TextOverflow parseTextOverflow(String? textOverflowString) {
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 textDecoration = TextDecoration.none;
switch (textDecorationString) {
......@@ -136,23 +106,6 @@ TextDecoration parseTextDecoration(String? textDecorationString) {
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 textDirection = TextDirection.ltr;
switch (textDirectionString) {
......@@ -168,14 +121,6 @@ TextDirection parseTextDirection(String? textDirectionString) {
return textDirection;
}
String exportTextDirection(TextDirection? textDirection) {
String rt = "ltr";
if (textDirection == TextDirection.rtl) {
rt = "rtl";
}
return rt;
}
FontWeight parseFontWeight(String? textFontWeight) {
FontWeight fontWeight = FontWeight.normal;
switch (textFontWeight) {
......@@ -214,38 +159,6 @@ FontWeight parseFontWeight(String? textFontWeight) {
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) {
if (hexColorString == null) {
return null;
......@@ -455,27 +368,6 @@ CrossAxisAlignment parseCrossAxisAlignment(String? crossAxisAlignmentString) {
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) {
switch (mainAxisAlignmentString) {
case 'start':
......@@ -494,22 +386,6 @@ MainAxisAlignment parseMainAxisAlignment(String? mainAxisAlignmentString) {
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) =>
mainAxisSizeString == 'min' ? MainAxisSize.min : MainAxisSize.max;
......@@ -523,102 +399,6 @@ VerticalDirection parseVerticalDirection(String? verticalDirectionString) =>
? VerticalDirection.up
: 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) {
if (blendModeString == null || blendModeString.trim().length == 0) {
return null;
......@@ -714,29 +494,6 @@ BoxFit? parseBoxFit(String? boxFitString) {
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) {
if (imageRepeatString == null) {
return null;
......@@ -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) {
if (fromLTRBString == null) {
return null;
......@@ -780,10 +523,6 @@ Rect? parseRect(String? fromLTRBString) {
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) {
if (filterQualityString == null) {
return null;
......@@ -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) {
if (url == null) {
return null;
......@@ -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) {
if (value == null) {
return null;
......@@ -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) {
if (axisString == null) {
return Axis.horizontal;
......@@ -937,22 +634,6 @@ WrapAlignment parseWrapAlignment(String? wrapAlignmentString) {
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 parseWrapCrossAlignment(String? wrapCrossAlignmentString) {
if (wrapCrossAlignmentString == null) {
......@@ -998,23 +679,6 @@ Clip parseClipBehavior(String? clipBehaviorString) {
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) {
if (value == null) {
return null;
......@@ -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) {
if (value == null) {
return null;
......@@ -1066,121 +711,17 @@ DropCapPosition? parseDropCapPosition(String? value) {
}
}
String exportDropCapPosition(DropCapPosition? dropCapPosition) {
String rt = "start";
if (dropCapPosition == DropCapPosition.end) {
rt = "end";
}
return rt;
}
DropCap? parseDropCap(Map<String, dynamic>? map, BuildContext buildContext, MethodListener? listener) {
DropCap? parseDropCap(Map<String, dynamic>? map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
if (map == null) {
return null;
}
return DropCap(
width: map['width']?.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) {
if (keyParams == 'UniqueKey') {
return UniqueKey();
......@@ -1239,7 +780,7 @@ double parseLLSSize(String size) {
BorderSide parseBorderSide(Map<String, dynamic> 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,
style: borderSide.containsKey('style') ? parseBorderStyle(borderSide['style']) : BorderStyle.none
);
......@@ -1284,14 +825,21 @@ NetworkImage parseNetworkImage(String? url, {double? scale}) {
BorderRadius? parseBorderRadius(Map<String, dynamic> map) {
String borderRadiusMethod = map['borderRadiusMethod'];
Map<String, dynamic> radius = map['radius'];
List radius = map['radius'];
if (borderRadiusMethod == 'circular') {
return BorderRadius.circular(radius[0]);
} 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[0]);
} 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[0]);
} else if (borderRadiusMethod == 'only') {
if (radius.length >= 4) {
return BorderRadius.only(
topLeft: radius[0],
topRight: radius[1],
......@@ -1299,6 +847,13 @@ BorderRadius? parseBorderRadius(Map<String, dynamic> map) {
bottomLeft: radius[3]
);
}
return BorderRadius.only(
topLeft: radius[0],
topRight: radius[0],
bottomRight: radius[0],
bottomLeft: radius[0]
);
}
}
Border parseBorder(Map<String, dynamic> map) {
......@@ -1344,3 +899,240 @@ List<BoxShadow> parseBoxShadowList(List<dynamic> boxShadow) {
}
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';
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/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
import 'package:widgetparser/src/llswidget/llsbutton_widget_parser.dart';
import 'package:widgetparser/src/llswidget/llslisttile_widget_parser.dart';
......@@ -85,6 +87,8 @@ class WidgetParserBuilder {
OverflowBoxWidgetParser(),
InkWellWidgetParser(),
GestureDetectorWidgetParser(),
FormWidgetParser(),
TextFormFieldWidgetParser(),
//llswidget
LLSButtonWidgetParser(),
LLSListTileWidgetParser(),
......@@ -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();
var map = jsonDecode(json);
MethodListener _listener = listener == null ? new MethodListener() : listener;
var widget = buildFromMap(map, buildContext, _listener);
var widget = buildFromMap(map, buildContext, _listener, variable);
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();
late SnackBar snackBar;
if (map == null) {
snackBar = SnackBar(content: Text("please initialize the widget's object to the WidgetBuilderParser."));
ScaffoldMessenger.of(buildContext).showSnackBar(snackBar);
return null;
}
String? widgetName = map['widget'];
var parser = _widgetNameParserMap[widgetName];
if (parser != null) {
try {
return parser.parse(map, buildContext, listener);
return parser.parse(map, buildContext, listener, variable);
} catch (e) {
snackBar = SnackBar(content: Text(e.toString()));
ScaffoldMessenger.of(buildContext).showSnackBar(snackBar);
return null;
print("${e.toString().split('.')[0]} ${e.toString().split('.')[0]}");
}
} else {
snackBar = SnackBar(content: Text("please initialize the $widgetName widget to the WidgetBuilderParser."));
ScaffoldMessenger.of(buildContext).showSnackBar(snackBar);
return null;
print("please initialize the $widgetName widget to the WidgetBuilderParser.");
}
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();
List<Widget> rt = [];
for (var value in values) {
var buildFromMap2 = buildFromMap(value, buildContext, listener);
var buildFromMap2 = buildFromMap(value, buildContext, listener, variable);
if(buildFromMap2!=null) {
rt.add(buildFromMap2);
}
......@@ -152,7 +150,7 @@ class WidgetParserBuilder {
}
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;
......@@ -160,16 +158,18 @@ abstract class WidgetParser {
}
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)) {
print("event: ${event!['func_name']}");
print("event: ${event!['function']}");
} else {
print("receiver event: ${event.toString()}");
}
}
bool isFunctionNameExist(Map<String, dynamic>? event) {
return event!.containsKey('func_name');
return event!.containsKey('function');
}
bool isParametersExist(Map<String, dynamic>? event) {
......
name: widgetparser
description: this package to dynamically render widgets from JSON
version: 0.0.1
version: 0.0.4
author: Rizal Hermawan
homepage: https://locatorlogic.com
......@@ -17,7 +17,7 @@ dependencies:
llswidget:
path: ../llswidget
cupertino_icons: ^1.0.2
json_schema2: ^2.0.0+2
json_schema2: 2.0.0+2
dev_dependencies:
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