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,
......
......@@ -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