Commit 5fc6cc71 by Rizal Hermawan

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

feat (widget-parse-method) : This package can accept variable submissions from application. Story #3
parent 5b1e4b02
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
# #
# For more info see: https://dart.dev/go/dot-packages-deprecation # For more info see: https://dart.dev/go/dot-packages-deprecation
# #
# Generated by pub on 2021-06-16 11:37:19.886806. # Generated by pub on 2021-06-23 16:39:43.392636.
args:file:///D:/flutter/2.0.4-stable/.pub-cache/hosted/pub.dartlang.org/args-2.1.1/lib/ args:file:///D:/flutter/2.0.4-stable/.pub-cache/hosted/pub.dartlang.org/args-2.1.1/lib/
async:file:///D:/flutter/2.0.4-stable/.pub-cache/hosted/pub.dartlang.org/async-2.5.0/lib/ async:file:///D:/flutter/2.0.4-stable/.pub-cache/hosted/pub.dartlang.org/async-2.5.0/lib/
boolean_selector:file:///D:/flutter/2.0.4-stable/.pub-cache/hosted/pub.dartlang.org/boolean_selector-2.1.0/lib/ boolean_selector:file:///D:/flutter/2.0.4-stable/.pub-cache/hosted/pub.dartlang.org/boolean_selector-2.1.0/lib/
......
...@@ -4,7 +4,7 @@ import 'package:flutter/widgets.dart'; ...@@ -4,7 +4,7 @@ import 'package:flutter/widgets.dart';
class AlignWidgetParser extends WidgetParser { class AlignWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return Align( return Align(
alignment: map.containsKey("alignment") alignment: map.containsKey("alignment")
? parseAlignment(map["alignment"]) ? parseAlignment(map["alignment"])
...@@ -16,7 +16,7 @@ class AlignWidgetParser extends WidgetParser { ...@@ -16,7 +16,7 @@ class AlignWidgetParser extends WidgetParser {
? map["heightFactor"]?.toDouble() ? map["heightFactor"]?.toDouble()
: null, : null,
child: WidgetParserBuilder.buildFromMap( child: WidgetParserBuilder.buildFromMap(
map["child"], buildContext, listener), map["child"], buildContext, listener, variable),
); );
} }
......
...@@ -4,20 +4,20 @@ import 'package:flutter/material.dart'; ...@@ -4,20 +4,20 @@ import 'package:flutter/material.dart';
class AppBarWidgetParser extends WidgetParser { class AppBarWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
var appBarWidget = AppBar( var appBarWidget = AppBar(
key: map.containsKey("key") ? createKeyForWidget(map["key"]) : null, key: map.containsKey("key") ? createKeyForWidget(map["key"]) : null,
title: map.containsKey("title") title: map.containsKey("title")
? WidgetParserBuilder.buildFromMap( ? WidgetParserBuilder.buildFromMap(
map["title"], buildContext, listener) map["title"], buildContext, listener, variable)
: null, : null,
leading: map.containsKey("leading") leading: map.containsKey("leading")
? WidgetParserBuilder.buildFromMap( ? WidgetParserBuilder.buildFromMap(
map["leading"], buildContext, listener) map["leading"], buildContext, listener, variable)
: null, : null,
actions: map.containsKey("actions") actions: map.containsKey("actions")
? WidgetParserBuilder.buildWidgets( ? WidgetParserBuilder.buildWidgets(
map["actions"], buildContext, listener) map["actions"], buildContext, listener, variable)
: null, : null,
centerTitle: centerTitle:
map.containsKey("centerTitle") ? map["centerTitle"] as bool? : false, map.containsKey("centerTitle") ? map["centerTitle"] as bool? : false,
......
...@@ -3,11 +3,11 @@ import 'package:flutter/widgets.dart'; ...@@ -3,11 +3,11 @@ import 'package:flutter/widgets.dart';
class AspectRatioWidgetParser extends WidgetParser { class AspectRatioWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return AspectRatio( return AspectRatio(
aspectRatio: map["aspectRatio"]?.toDouble(), aspectRatio: map["aspectRatio"]?.toDouble(),
child: WidgetParserBuilder.buildFromMap( child: WidgetParserBuilder.buildFromMap(
map["child"], buildContext, listener), map["child"], buildContext, listener, variable),
); );
} }
......
...@@ -3,14 +3,14 @@ import 'package:flutter/widgets.dart'; ...@@ -3,14 +3,14 @@ import 'package:flutter/widgets.dart';
class BaselineWidgetParser extends WidgetParser { class BaselineWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return Baseline( return Baseline(
baseline: map["baseline"]?.toDouble(), baseline: map["baseline"]?.toDouble(),
baselineType: map["baselineType"] == "alphabetic" baselineType: map["baselineType"] == "alphabetic"
? TextBaseline.alphabetic ? TextBaseline.alphabetic
: TextBaseline.ideographic, : TextBaseline.ideographic,
child: WidgetParserBuilder.buildFromMap( child: WidgetParserBuilder.buildFromMap(
map["child"], buildContext, listener), map["child"], buildContext, listener, variable),
); );
} }
......
...@@ -3,7 +3,7 @@ import 'package:flutter/widgets.dart'; ...@@ -3,7 +3,7 @@ import 'package:flutter/widgets.dart';
class CenterWidgetParser extends WidgetParser { class CenterWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return Center( return Center(
widthFactor: map.containsKey("widthFactor") widthFactor: map.containsKey("widthFactor")
? map["widthFactor"]?.toDouble() ? map["widthFactor"]?.toDouble()
...@@ -12,7 +12,7 @@ class CenterWidgetParser extends WidgetParser { ...@@ -12,7 +12,7 @@ class CenterWidgetParser extends WidgetParser {
? map["heightFactor"]?.toDouble() ? map["heightFactor"]?.toDouble()
: null, : null,
child: WidgetParserBuilder.buildFromMap( child: WidgetParserBuilder.buildFromMap(
map["child"], buildContext, listener), map["child"], buildContext, listener, variable),
); );
} }
......
...@@ -4,22 +4,13 @@ import 'package:flutter/widgets.dart'; ...@@ -4,22 +4,13 @@ import 'package:flutter/widgets.dart';
class ClipRRectWidgetParser extends WidgetParser { class ClipRRectWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
var radius = map['borderRadius'].toString().split(",");
double topLeft = double.parse(radius[0]);
double topRight = double.parse(radius[1]);
double bottomLeft = double.parse(radius[2]);
double bottomRight = double.parse(radius[3]);
var clipBehaviorString = map['clipBehavior']; var clipBehaviorString = map['clipBehavior'];
return ClipRRect( return ClipRRect(
borderRadius: BorderRadius.only( borderRadius: map.containsKey('borderRadius') ? parseBorderRadius(map['borderRadius']) : null,
topLeft: Radius.circular(topLeft),
topRight: Radius.circular(topRight),
bottomLeft: Radius.circular(bottomLeft),
bottomRight: Radius.circular(bottomRight)),
clipBehavior: parseClipBehavior(clipBehaviorString), clipBehavior: parseClipBehavior(clipBehaviorString),
child: WidgetParserBuilder.buildFromMap( child: WidgetParserBuilder.buildFromMap(
map["child"], buildContext, listener), map["child"], buildContext, listener, variable),
); );
} }
......
import 'package:widgetparser/widgetparser.dart'; import 'package:widgetparser/widgetparser.dart';
import 'package:widgetparser/src/utils.dart'; import 'package:widgetparser/src/utils.dart';
import 'package:widgetparser/src/json_schema.dart'; import 'package:widgetparser/src/json_schema_helper.dart';
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
class ContainerWidgetParser extends WidgetParser { class ContainerWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
Alignment alignment = parseAlignment(map['alignment']); Alignment alignment = parseAlignment(map['alignment']);
Color? color = parseHexColor(map['color']); Color? color = parseHexColor(map['color']);
BoxConstraints constraints = parseBoxConstraints(map['constraints']); BoxConstraints constraints = parseBoxConstraints(map['constraints']);
...@@ -14,7 +14,7 @@ class ContainerWidgetParser extends WidgetParser { ...@@ -14,7 +14,7 @@ class ContainerWidgetParser extends WidgetParser {
Map<String, dynamic>? childMap = map['child']; Map<String, dynamic>? childMap = map['child'];
Widget? child = childMap == null Widget? child = childMap == null
? null ? null
: WidgetParserBuilder.buildFromMap(childMap, buildContext, listener); : WidgetParserBuilder.buildFromMap(childMap, buildContext, listener, variable);
var containerWidget = Container( var containerWidget = Container(
alignment: alignment, alignment: alignment,
...@@ -30,21 +30,21 @@ class ContainerWidgetParser extends WidgetParser { ...@@ -30,21 +30,21 @@ class ContainerWidgetParser extends WidgetParser {
const containerSchema = ''' const containerSchema = '''
{ {
"\$schema\": $schemaUrl, "\$schema\": "$schemaUrl",
"\$ref\": "${refSchema}Container", "\$ref\": "${refSchema}Container",
"definitions": { "definitions": {
"Container": { "Container": {
"type": "object", "type": "object",
"additionalProperties": false, "additionalProperties": true,
"properties": { "properties": {
"widget": { "widget": {
"type": "string" "type": "string"
}, },
"alignment": ${WidgetSchema.alignment}, "alignment": ${SchemaHelper.alignment},
"padding": { "padding": {
"type": "string" "type": "string"
}, },
"color": ${WidgetSchema.color}, "color": ${SchemaHelper.color},
"margin": { "margin": {
"type": "string" "type": "string"
}, },
...@@ -69,11 +69,11 @@ class ContainerWidgetParser extends WidgetParser { ...@@ -69,11 +69,11 @@ class ContainerWidgetParser extends WidgetParser {
], ],
"title": "Container" "title": "Container"
}, },
"Child": ${WidgetSchema.child}, "Child": ${SchemaHelper.child},
"Constraints": ${WidgetSchema.constraints}, "Constraints": ${SchemaHelper.constraints},
"Decoration": ${WidgetSchema.decoration}, "Decoration": ${SchemaHelper.decoration},
"BorderRadius": ${WidgetSchema.borderRadius}, "BorderRadius": ${SchemaHelper.borderRadius},
"BoxShadow": ${WidgetSchema.boxShadow} "BoxShadow": ${SchemaHelper.boxShadow}
} }
} }
'''; ''';
...@@ -112,12 +112,12 @@ class ContainerWidgetParser extends WidgetParser { ...@@ -112,12 +112,12 @@ class ContainerWidgetParser extends WidgetParser {
// } // }
// } // }
Map<String, dynamic> jsonSchemaResult = jsonSchemaValidation(containerSchema, map); // Map<String, dynamic> jsonSchemaResult = jsonSchemaValidation(containerSchema, map);
if (!jsonSchemaResult['validates']) { // if (!jsonSchemaResult['validates']) {
return jsonSchemaErrorWidget(jsonSchemaResult['validator']); // return jsonSchemaErrorWidget(jsonSchemaResult['validator']);
} else { // } else {
return containerWidget; return containerWidget;
} //}
} }
@override @override
......
...@@ -5,7 +5,7 @@ import 'package:flutter/material.dart'; ...@@ -5,7 +5,7 @@ import 'package:flutter/material.dart';
class DropCapTextParser extends WidgetParser { class DropCapTextParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return DropCapText( return DropCapText(
data: map.containsKey('data') ? map['data'] : null, data: map.containsKey('data') ? map['data'] : null,
selectable: map.containsKey('selectable') ? map['selectable'] : false, selectable: map.containsKey('selectable') ? map['selectable'] : false,
...@@ -20,7 +20,7 @@ class DropCapTextParser extends WidgetParser { ...@@ -20,7 +20,7 @@ class DropCapTextParser extends WidgetParser {
? parseTextAlign(map['textAlign']) ? parseTextAlign(map['textAlign'])
: TextAlign.start, : TextAlign.start,
dropCap: map.containsKey('dropCap') dropCap: map.containsKey('dropCap')
? parseDropCap(map['dropCap'], buildContext, listener) ? parseDropCap(map['dropCap'], buildContext, listener, variable)
: null, : null,
dropCapPadding: map.containsKey('dropCapPadding') dropCapPadding: map.containsKey('dropCapPadding')
? parseEdgeInsetsGeometry(map['dropCapPadding']) as EdgeInsets? ? parseEdgeInsetsGeometry(map['dropCapPadding']) as EdgeInsets?
......
...@@ -3,10 +3,10 @@ import 'package:flutter/widgets.dart'; ...@@ -3,10 +3,10 @@ import 'package:flutter/widgets.dart';
class ExpandedWidgetParser extends WidgetParser { class ExpandedWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return Expanded( return Expanded(
child: WidgetParserBuilder.buildFromMap( child: WidgetParserBuilder.buildFromMap(
map["child"], buildContext, listener)!, map["child"], buildContext, listener, variable)!,
flex: map.containsKey("flex") ? map["flex"] : 1, flex: map.containsKey("flex") ? map["flex"] : 1,
); );
} }
......
...@@ -4,14 +4,14 @@ import 'package:flutter/widgets.dart'; ...@@ -4,14 +4,14 @@ import 'package:flutter/widgets.dart';
class FittedBoxWidgetParser extends WidgetParser { class FittedBoxWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return FittedBox( return FittedBox(
alignment: map.containsKey("alignment") alignment: map.containsKey("alignment")
? parseAlignment(map["alignment"]) ? parseAlignment(map["alignment"])
: Alignment.center, : Alignment.center,
fit: map.containsKey("fit") ? parseBoxFit(map["fit"])! : BoxFit.contain, fit: map.containsKey("fit") ? parseBoxFit(map["fit"])! : BoxFit.contain,
child: WidgetParserBuilder.buildFromMap( child: WidgetParserBuilder.buildFromMap(
map["child"], buildContext, listener), map["child"], buildContext, listener, variable),
); );
} }
......
import 'package:flutter/widgets.dart';
import 'package:widgetparser/widgetparser.dart';
class FormWidgetParser extends WidgetParser {
@override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return Form(
child: map.containsKey('child') ? WidgetParserBuilder.buildFromMap(map["child"], buildContext, listener, variable)! : SizedBox(),
onWillPop: map.containsKey('onWillPop') ? () => listener!.run(buildContext, map['onWillPop']) : null,
onChanged: map.containsKey('onChanged') ? () => listener!.run(buildContext, map['onChanged']) : null
);
}
@override
String get widgetName => "Form";
@override
Type get widgetType => Form;
}
\ No newline at end of file
...@@ -5,12 +5,15 @@ import 'package:widgetparser/src/utils.dart'; ...@@ -5,12 +5,15 @@ import 'package:widgetparser/src/utils.dart';
class GestureDetectorWidgetParser extends WidgetParser { class GestureDetectorWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
var gestureDetectorWidget = GestureDetector( var gestureDetectorWidget = GestureDetector(
key: map.containsKey('key') ? createKeyForWidget(map['key']) : null, key: map.containsKey('key') ? createKeyForWidget(map['key']) : null,
child: WidgetParserBuilder.buildFromMap(map['child'], buildContext, listener), child: WidgetParserBuilder.buildFromMap(map['child'], buildContext, listener, variable),
onTap: map.containsKey('onTap') ? () => listener!.run(buildContext, map['onTap']) : null, onTap: map.containsKey('onTap') ? () => listener!.run(buildContext, map['onTap']) : null,
onTapDown: map.containsKey('onTapDown') ? (TapDownDetails tapDownDetails) => listener!.run(buildContext, map['onTapDown']) : null, onTapDown: map.containsKey('onTapDown') ? (TapDownDetails tapDownDetails) {
map['onTapDown']['parameters']['tapDownDetails'] = tapDownDetails;
return listener!.run(buildContext, map['onTapDown']);
} : null,
onTapUp: map.containsKey('onTapUp') ? (TapUpDetails tapUpDetails) => listener!.run(buildContext, map['onTapUp']) : null, onTapUp: map.containsKey('onTapUp') ? (TapUpDetails tapUpDetails) => listener!.run(buildContext, map['onTapUp']) : null,
onTapCancel: map.containsKey('onTapCancel') ? () => listener!.run(buildContext, map['onTapCancel']) : null, onTapCancel: map.containsKey('onTapCancel') ? () => listener!.run(buildContext, map['onTapCancel']) : null,
onSecondaryTap: map.containsKey('onSecondaryTap') ? () => listener!.run(buildContext, map['onSecondaryTap']) : null, onSecondaryTap: map.containsKey('onSecondaryTap') ? () => listener!.run(buildContext, map['onSecondaryTap']) : null,
......
...@@ -5,7 +5,7 @@ import 'package:flutter/material.dart'; ...@@ -5,7 +5,7 @@ import 'package:flutter/material.dart';
class IconWidgetParser extends WidgetParser { class IconWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return Icon( return Icon(
map.containsKey('data') map.containsKey('data')
? getIconUsingPrefix(name: map['data']) ? getIconUsingPrefix(name: map['data'])
......
...@@ -4,13 +4,13 @@ import 'package:flutter/material.dart'; ...@@ -4,13 +4,13 @@ import 'package:flutter/material.dart';
class IconButtonWidgetParser extends WidgetParser { class IconButtonWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
EdgeInsets? padding = parseEdgeInsetsGeometry(map['padding']) as EdgeInsets; EdgeInsets? padding = parseEdgeInsetsGeometry(map['padding']) as EdgeInsets;
return IconButton( return IconButton(
key: map.containsKey("key") ? createKeyForWidget(map["key"]) : null, key: map.containsKey("key") ? createKeyForWidget(map["key"]) : null,
iconSize: map.containsKey('iconSize') ? map['iconSize'] : 24.0, iconSize: map.containsKey('iconSize') ? map['iconSize'] : 24.0,
icon: WidgetParserBuilder.buildFromMap(map['icon'], buildContext, listener)!, icon: WidgetParserBuilder.buildFromMap(map['icon'], buildContext, listener, variable)!,
padding: map.containsKey('padding') ? padding : EdgeInsets.all(8.0), padding: map.containsKey('padding') ? padding : EdgeInsets.all(8.0),
color: map.containsKey('color') ? parseHexColor(map['color']) : null, color: map.containsKey('color') ? parseHexColor(map['color']) : null,
focusColor: map.containsKey('focusColor') ? parseHexColor(map['focusColor']) : null, focusColor: map.containsKey('focusColor') ? parseHexColor(map['focusColor']) : null,
......
...@@ -6,7 +6,7 @@ import 'package:flutter/widgets.dart'; ...@@ -6,7 +6,7 @@ import 'package:flutter/widgets.dart';
class AssetImageWidgetParser extends WidgetParser { class AssetImageWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
String name = map['name']; String name = map['name'];
String? semanticLabel = String? semanticLabel =
map.containsKey('semanticLabel') ? map['semanticLabel'] : null; map.containsKey('semanticLabel') ? map['semanticLabel'] : null;
...@@ -69,7 +69,7 @@ class AssetImageWidgetParser extends WidgetParser { ...@@ -69,7 +69,7 @@ class AssetImageWidgetParser extends WidgetParser {
class NetworkImageWidgetParser extends WidgetParser { class NetworkImageWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
String src = map['src']; String src = map['src'];
String? semanticLabel = String? semanticLabel =
map.containsKey('semanticLabel') ? map['semanticLabel'] : null; map.containsKey('semanticLabel') ? map['semanticLabel'] : null;
......
...@@ -4,7 +4,7 @@ import 'package:flutter/widgets.dart'; ...@@ -4,7 +4,7 @@ import 'package:flutter/widgets.dart';
class IndexedStackWidgetParser extends WidgetParser { class IndexedStackWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return IndexedStack( return IndexedStack(
index: map.containsKey("index") ? map["index"] : 0, index: map.containsKey("index") ? map["index"] : 0,
...@@ -15,7 +15,7 @@ class IndexedStackWidgetParser extends WidgetParser { ...@@ -15,7 +15,7 @@ class IndexedStackWidgetParser extends WidgetParser {
? parseTextDirection(map["textDirection"]) ? parseTextDirection(map["textDirection"])
: null, : null,
children: WidgetParserBuilder.buildWidgets( children: WidgetParserBuilder.buildWidgets(
map['children'], buildContext, listener), map['children'], buildContext, listener, variable),
); );
} }
......
...@@ -5,11 +5,11 @@ import 'package:widgetparser/src/utils.dart'; ...@@ -5,11 +5,11 @@ import 'package:widgetparser/src/utils.dart';
class InkWellWidgetParser extends WidgetParser { class InkWellWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return InkWell( return InkWell(
key: map.containsKey('key') ? createKeyForWidget(map['key']) : null, key: map.containsKey('key') ? createKeyForWidget(map['key']) : null,
child: WidgetParserBuilder.buildFromMap(map['child'], buildContext, listener), child: WidgetParserBuilder.buildFromMap(map['child'], buildContext, listener, variable),
onTap: map.containsKey('onTap') ? () => listener!.run(buildContext, map['onTap']) : null, onTap: map.containsKey('onTap') ? () => listener!.run(buildContext, map['onTap']) : null,
onTapDown: map.containsKey('onTapDown') ? (TapDownDetails tapDownDetails) => listener!.run(buildContext, map['onTapDown']) : null, onTapDown: map.containsKey('onTapDown') ? (TapDownDetails tapDownDetails) => listener!.run(buildContext, map['onTapDown']) : null,
onTapCancel: map.containsKey('onTapCancel') ? () => listener!.run(buildContext, map['onTapCancel']) : null onTapCancel: map.containsKey('onTapCancel') ? () => listener!.run(buildContext, map['onTapCancel']) : null
......
...@@ -3,13 +3,13 @@ import 'package:flutter/material.dart'; ...@@ -3,13 +3,13 @@ import 'package:flutter/material.dart';
class LimitedBoxWidgetParser extends WidgetParser { class LimitedBoxWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return LimitedBox( return LimitedBox(
maxWidth: map.containsKey("maxWidth") ? map['maxWidth'] : double.infinity, maxWidth: map.containsKey("maxWidth") ? map['maxWidth'] : double.infinity,
maxHeight: maxHeight:
map.containsKey("maxHeight") ? map['maxHeight'] : double.infinity, map.containsKey("maxHeight") ? map['maxHeight'] : double.infinity,
child: WidgetParserBuilder.buildFromMap( child: WidgetParserBuilder.buildFromMap(
map['child'], buildContext, listener), map['child'], buildContext, listener, variable),
); );
} }
......
...@@ -6,7 +6,7 @@ import '../utils.dart'; ...@@ -6,7 +6,7 @@ import '../utils.dart';
class ListTileWidgetParser extends WidgetParser { class ListTileWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
bool isThreeLine = bool isThreeLine =
map.containsKey("isThreeLine") ? map["isThreeLine"] : false; map.containsKey("isThreeLine") ? map["isThreeLine"] : false;
EdgeInsetsGeometry? contentPadding = map.containsKey("contentPadding") EdgeInsetsGeometry? contentPadding = map.containsKey("contentPadding")
...@@ -16,20 +16,20 @@ class ListTileWidgetParser extends WidgetParser { ...@@ -16,20 +16,20 @@ class ListTileWidgetParser extends WidgetParser {
bool enabled = map.containsKey("enabled") ? map["enabled"] : true; bool enabled = map.containsKey("enabled") ? map["enabled"] : true;
Widget? leading = map.containsKey("leading") Widget? leading = map.containsKey("leading")
? WidgetParserBuilder.buildFromMap( ? WidgetParserBuilder.buildFromMap(
map["leading"], buildContext, listener) map["leading"], buildContext, listener, variable)
: null; : null;
bool selected = map.containsKey("selected") ? map["selected"] : false; bool selected = map.containsKey("selected") ? map["selected"] : false;
Widget? subtitle = map.containsKey("subtitle") Widget? subtitle = map.containsKey("subtitle")
? WidgetParserBuilder.buildFromMap( ? WidgetParserBuilder.buildFromMap(
map["subtitle"], buildContext, listener) map["subtitle"], buildContext, listener, variable)
: null; : null;
Widget? title = map.containsKey("title") Widget? title = map.containsKey("title")
? WidgetParserBuilder.buildFromMap( ? WidgetParserBuilder.buildFromMap(
map["title"], buildContext, listener) map["title"], buildContext, listener, variable)
: null; : null;
Widget? trailing = map.containsKey("trailing") Widget? trailing = map.containsKey("trailing")
? WidgetParserBuilder.buildFromMap( ? WidgetParserBuilder.buildFromMap(
map["trailing"], buildContext, listener) map["trailing"], buildContext, listener, variable)
: null; : null;
// String? tapEvent = map.containsKey("tapEvent") ? map["tapEvent"] : null; // String? tapEvent = map.containsKey("tapEvent") ? map["tapEvent"] : null;
......
import 'dart:convert';
import 'package:widgetparser/widgetparser.dart'; import 'package:widgetparser/widgetparser.dart';
import 'package:widgetparser/src/utils.dart'; import 'package:widgetparser/src/utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
...@@ -7,7 +5,7 @@ import 'package:flutter/widgets.dart'; ...@@ -7,7 +5,7 @@ import 'package:flutter/widgets.dart';
class ListViewWidgetParser extends WidgetParser { class ListViewWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
var scrollDirection = Axis.vertical; var scrollDirection = Axis.vertical;
if (map.containsKey("scrollDirection") && if (map.containsKey("scrollDirection") &&
"horizontal" == map["scrollDirection"]) { "horizontal" == map["scrollDirection"]) {
...@@ -24,7 +22,7 @@ class ListViewWidgetParser extends WidgetParser { ...@@ -24,7 +22,7 @@ class ListViewWidgetParser extends WidgetParser {
var itemExtent = var itemExtent =
map.containsKey("itemExtent") ? map["itemExtent"]?.toDouble() : null; map.containsKey("itemExtent") ? map["itemExtent"]?.toDouble() : null;
var children = WidgetParserBuilder.buildWidgets( var children = WidgetParserBuilder.buildWidgets(
map['children'], buildContext, listener); map['children'], buildContext, listener, variable);
return ListView( return ListView(
scrollDirection: scrollDirection, scrollDirection: scrollDirection,
......
...@@ -4,10 +4,10 @@ import 'package:flutter/cupertino.dart'; ...@@ -4,10 +4,10 @@ import 'package:flutter/cupertino.dart';
class OffstageWidgetParser extends WidgetParser{ class OffstageWidgetParser extends WidgetParser{
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return Offstage( return Offstage(
offstage: map.containsKey("offstage")?map['offstage']:true, offstage: map.containsKey("offstage")?map['offstage']:true,
child: WidgetParserBuilder.buildFromMap(map['child'], buildContext, listener), child: WidgetParserBuilder.buildFromMap(map['child'], buildContext, listener, variable),
); );
} }
......
...@@ -3,14 +3,14 @@ import 'package:flutter/widgets.dart'; ...@@ -3,14 +3,14 @@ import 'package:flutter/widgets.dart';
class OpacityWidgetParser extends WidgetParser { class OpacityWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return Opacity( return Opacity(
opacity: map["opacity"]?.toDouble(), opacity: map["opacity"]?.toDouble(),
alwaysIncludeSemantics: map.containsKey("alwaysIncludeSemantics") alwaysIncludeSemantics: map.containsKey("alwaysIncludeSemantics")
? map["alwaysIncludeSemantics"] ? map["alwaysIncludeSemantics"]
: false, : false,
child: WidgetParserBuilder.buildFromMap( child: WidgetParserBuilder.buildFromMap(
map["child"], buildContext, listener), map["child"], buildContext, listener, variable),
); );
} }
......
...@@ -4,14 +4,14 @@ import 'package:flutter/cupertino.dart'; ...@@ -4,14 +4,14 @@ import 'package:flutter/cupertino.dart';
class OverflowBoxWidgetParser extends WidgetParser { class OverflowBoxWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return OverflowBox( return OverflowBox(
alignment: parseAlignment(map['alignment']), alignment: parseAlignment(map['alignment']),
minWidth: map.containsKey("minWidth")?map['minWidth']:null, minWidth: map.containsKey("minWidth")?map['minWidth']:null,
maxWidth: map.containsKey("maxWidth")?map['maxWidth']:null, maxWidth: map.containsKey("maxWidth")?map['maxWidth']:null,
minHeight: map.containsKey("minHeight")?map['minHeight']:null, minHeight: map.containsKey("minHeight")?map['minHeight']:null,
maxHeight: map.containsKey("maxHeight")?map['maxHeight']:null, maxHeight: map.containsKey("maxHeight")?map['maxHeight']:null,
child: WidgetParserBuilder.buildFromMap(map['child'], buildContext, listener), child: WidgetParserBuilder.buildFromMap(map['child'], buildContext, listener, variable),
); );
} }
......
...@@ -4,13 +4,13 @@ import 'package:flutter/widgets.dart'; ...@@ -4,13 +4,13 @@ import 'package:flutter/widgets.dart';
class PaddingWidgetParser extends WidgetParser { class PaddingWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return Padding( return Padding(
padding: map.containsKey("padding") padding: map.containsKey("padding")
? parseEdgeInsetsGeometry(map["padding"])! ? parseEdgeInsetsGeometry(map["padding"])!
: EdgeInsets.zero, : EdgeInsets.zero,
child: WidgetParserBuilder.buildFromMap( child: WidgetParserBuilder.buildFromMap(
map["child"], buildContext, listener), map["child"], buildContext, listener, variable),
); );
} }
......
...@@ -3,7 +3,7 @@ import 'package:flutter/widgets.dart'; ...@@ -3,7 +3,7 @@ import 'package:flutter/widgets.dart';
class PageViewWidgetParser extends WidgetParser { class PageViewWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
var scrollDirection = Axis.vertical; var scrollDirection = Axis.vertical;
if (map.containsKey("scrollDirection") && if (map.containsKey("scrollDirection") &&
...@@ -16,7 +16,7 @@ class PageViewWidgetParser extends WidgetParser { ...@@ -16,7 +16,7 @@ class PageViewWidgetParser extends WidgetParser {
pageSnapping: pageSnapping:
map.containsKey("pageSnapping") ? map["pageSnapping"] : true, map.containsKey("pageSnapping") ? map["pageSnapping"] : true,
children: WidgetParserBuilder.buildWidgets( children: WidgetParserBuilder.buildWidgets(
map['children'], buildContext, listener), map['children'], buildContext, listener, variable),
); );
} }
......
...@@ -4,7 +4,7 @@ import 'package:flutter/widgets.dart'; ...@@ -4,7 +4,7 @@ import 'package:flutter/widgets.dart';
class PlaceholderWidgetParser extends WidgetParser { class PlaceholderWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return Placeholder( return Placeholder(
color: map.containsKey('color') color: map.containsKey('color')
? parseHexColor(map['color'])! ? parseHexColor(map['color'])!
......
...@@ -4,7 +4,7 @@ import 'package:flutter/widgets.dart'; ...@@ -4,7 +4,7 @@ import 'package:flutter/widgets.dart';
class RowWidgetParser extends WidgetParser { class RowWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return Row( return Row(
crossAxisAlignment: map.containsKey('crossAxisAlignment') crossAxisAlignment: map.containsKey('crossAxisAlignment')
...@@ -26,7 +26,7 @@ class RowWidgetParser extends WidgetParser { ...@@ -26,7 +26,7 @@ class RowWidgetParser extends WidgetParser {
? parseVerticalDirection(map['verticalDirection']) ? parseVerticalDirection(map['verticalDirection'])
: VerticalDirection.down, : VerticalDirection.down,
children: WidgetParserBuilder.buildWidgets( children: WidgetParserBuilder.buildWidgets(
map['children'], buildContext, listener), map['children'], buildContext, listener, variable),
); );
} }
...@@ -39,7 +39,7 @@ class RowWidgetParser extends WidgetParser { ...@@ -39,7 +39,7 @@ class RowWidgetParser extends WidgetParser {
class ColumnWidgetParser extends WidgetParser { class ColumnWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return Column( return Column(
crossAxisAlignment: map.containsKey('crossAxisAlignment') crossAxisAlignment: map.containsKey('crossAxisAlignment')
...@@ -61,7 +61,7 @@ class ColumnWidgetParser extends WidgetParser { ...@@ -61,7 +61,7 @@ class ColumnWidgetParser extends WidgetParser {
? parseVerticalDirection(map['verticalDirection']) ? parseVerticalDirection(map['verticalDirection'])
: VerticalDirection.down, : VerticalDirection.down,
children: WidgetParserBuilder.buildWidgets( children: WidgetParserBuilder.buildWidgets(
map['children'], buildContext, listener), map['children'], buildContext, listener, variable),
); );
} }
......
...@@ -4,7 +4,7 @@ import 'package:flutter/widgets.dart'; ...@@ -4,7 +4,7 @@ import 'package:flutter/widgets.dart';
class SafeAreaWidgetParser extends WidgetParser { class SafeAreaWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
var left = map.containsKey("left") ? map["left"] : true; var left = map.containsKey("left") ? map["left"] : true;
var right = map.containsKey("right") ? map["right"] : true; var right = map.containsKey("right") ? map["right"] : true;
var top = map.containsKey("top") ? map["top"] : true; var top = map.containsKey("top") ? map["top"] : true;
...@@ -23,7 +23,7 @@ class SafeAreaWidgetParser extends WidgetParser { ...@@ -23,7 +23,7 @@ class SafeAreaWidgetParser extends WidgetParser {
minimum: edgeInsets as EdgeInsets, minimum: edgeInsets as EdgeInsets,
maintainBottomViewPadding: maintainBottomViewPadding, maintainBottomViewPadding: maintainBottomViewPadding,
child: WidgetParserBuilder.buildFromMap( child: WidgetParserBuilder.buildFromMap(
map["child"], buildContext, listener)!, map["child"], buildContext, listener, variable)!,
); );
} }
......
...@@ -5,27 +5,27 @@ import 'package:flutter/widgets.dart'; ...@@ -5,27 +5,27 @@ import 'package:flutter/widgets.dart';
class ScaffoldWidgetParser extends WidgetParser { class ScaffoldWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
var scaffoldWidget = Scaffold( var scaffoldWidget = Scaffold(
key: map.containsKey("key") ? createKeyForWidget(map["key"]) : null, key: map.containsKey("key") ? createKeyForWidget(map["key"]) : null,
appBar: map.containsKey("appBar") appBar: map.containsKey("appBar")
? WidgetParserBuilder.buildFromMap( ? WidgetParserBuilder.buildFromMap(
map["appBar"], buildContext, listener) as PreferredSizeWidget? map["appBar"], buildContext, listener, variable) as PreferredSizeWidget?
: null, : null,
body: map.containsKey("body") body: map.containsKey("body")
? WidgetParserBuilder.buildFromMap( ? WidgetParserBuilder.buildFromMap(
map["body"], buildContext, listener) map["body"], buildContext, listener, variable)
: null, : null,
floatingActionButton: map.containsKey("floatingActionButton") floatingActionButton: map.containsKey("floatingActionButton")
? WidgetParserBuilder.buildFromMap( ? WidgetParserBuilder.buildFromMap(
map["floatingActionButton"], buildContext, listener) map["floatingActionButton"], buildContext, listener, variable)
: null, : null,
backgroundColor: map.containsKey("backgroundColor") backgroundColor: map.containsKey("backgroundColor")
? parseHexColor(map["backgroundColor"]) ? parseHexColor(map["backgroundColor"])
: null, : null,
persistentFooterButtons: map.containsKey("persistentFooterButtons") persistentFooterButtons: map.containsKey("persistentFooterButtons")
? WidgetParserBuilder.buildWidgets( ? WidgetParserBuilder.buildWidgets(
map["persistentFooterButtons"], buildContext, listener) map["persistentFooterButtons"], buildContext, listener, variable)
: null, : null,
); );
......
...@@ -6,7 +6,7 @@ import 'package:flutter/material.dart'; ...@@ -6,7 +6,7 @@ import 'package:flutter/material.dart';
class SelectableTextWidgetParser implements WidgetParser { class SelectableTextWidgetParser implements WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
String? data = map['data']; String? data = map['data'];
String? textAlignString = map['textAlign']; String? textAlignString = map['textAlign'];
int? maxLines = map['maxLines']; int? maxLines = map['maxLines'];
...@@ -15,7 +15,7 @@ class SelectableTextWidgetParser implements WidgetParser { ...@@ -15,7 +15,7 @@ class SelectableTextWidgetParser implements WidgetParser {
var textSpan; var textSpan;
var textSpanParser = SelectableTextSpanParser(); var textSpanParser = SelectableTextSpanParser();
if (map.containsKey("textSpan")) { if (map.containsKey("textSpan")) {
textSpan = textSpanParser.parse(map['textSpan'], buildContext, listener); textSpan = textSpanParser.parse(map['textSpan'], buildContext, listener, variable);
} }
if (textSpan == null) { if (textSpan == null) {
...@@ -47,7 +47,7 @@ class SelectableTextWidgetParser implements WidgetParser { ...@@ -47,7 +47,7 @@ class SelectableTextWidgetParser implements WidgetParser {
} }
class SelectableTextSpanParser { class SelectableTextSpanParser {
TextSpan parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { TextSpan parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
Map<String, String>? recognizer = map.containsKey("recognizer") ? map['recognizer'] : null; Map<String, String>? recognizer = map.containsKey("recognizer") ? map['recognizer'] : null;
var textSpan = TextSpan( var textSpan = TextSpan(
text: map['text'], text: map['text'],
...@@ -57,16 +57,16 @@ class SelectableTextSpanParser { ...@@ -57,16 +57,16 @@ class SelectableTextSpanParser {
children: []); children: []);
if (map.containsKey('children')) { if (map.containsKey('children')) {
parseChildren(textSpan, map['children'], buildContext, listener); parseChildren(textSpan, map['children'], buildContext, listener, variable);
} }
return textSpan; return textSpan;
} }
void parseChildren( void parseChildren(
TextSpan textSpan, List<dynamic> childrenSpan, BuildContext buildContext, MethodListener? listener) { TextSpan textSpan, List<dynamic> childrenSpan, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
for (var childmap in childrenSpan) { for (var childmap in childrenSpan) {
textSpan.children!.add(parse(childmap, buildContext, listener)); textSpan.children!.add(parse(childmap, buildContext, listener, variable));
} }
} }
} }
...@@ -4,10 +4,10 @@ import 'package:flutter/widgets.dart'; ...@@ -4,10 +4,10 @@ import 'package:flutter/widgets.dart';
//Creates a box that will become as large as its parent allows. //Creates a box that will become as large as its parent allows.
class ExpandedSizedBoxWidgetParser extends WidgetParser { class ExpandedSizedBoxWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return SizedBox.expand( return SizedBox.expand(
child: WidgetParserBuilder.buildFromMap( child: WidgetParserBuilder.buildFromMap(
map["child"], buildContext, listener), map["child"], buildContext, listener, variable),
); );
} }
...@@ -20,12 +20,12 @@ class ExpandedSizedBoxWidgetParser extends WidgetParser { ...@@ -20,12 +20,12 @@ class ExpandedSizedBoxWidgetParser extends WidgetParser {
class SizedBoxWidgetParser extends WidgetParser { class SizedBoxWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return SizedBox( return SizedBox(
width: map["width"], width: map["width"],
height: map["height"], height: map["height"],
child: WidgetParserBuilder.buildFromMap( child: WidgetParserBuilder.buildFromMap(
map["child"], buildContext, listener), map["child"], buildContext, listener, variable),
); );
} }
......
...@@ -4,10 +4,10 @@ import 'package:flutter/widgets.dart'; ...@@ -4,10 +4,10 @@ import 'package:flutter/widgets.dart';
class PositionedWidgetParser extends WidgetParser { class PositionedWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return Positioned( return Positioned(
child: WidgetParserBuilder.buildFromMap( child: WidgetParserBuilder.buildFromMap(
map["child"], buildContext, listener)!, map["child"], buildContext, listener, variable)!,
top: map.containsKey("top") ? map["top"]?.toDouble() : null, top: map.containsKey("top") ? map["top"]?.toDouble() : null,
right: map.containsKey("right") ? map["right"]?.toDouble() : null, right: map.containsKey("right") ? map["right"]?.toDouble() : null,
bottom: map.containsKey("bottom") ? map["bottom"]?.toDouble() : null, bottom: map.containsKey("bottom") ? map["bottom"]?.toDouble() : null,
...@@ -26,7 +26,7 @@ class PositionedWidgetParser extends WidgetParser { ...@@ -26,7 +26,7 @@ class PositionedWidgetParser extends WidgetParser {
class StackWidgetParser extends WidgetParser { class StackWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return Stack( return Stack(
alignment: map.containsKey("alignment") alignment: map.containsKey("alignment")
...@@ -40,7 +40,7 @@ class StackWidgetParser extends WidgetParser { ...@@ -40,7 +40,7 @@ class StackWidgetParser extends WidgetParser {
? parseClip(map["clipBehavior"])! ? parseClip(map["clipBehavior"])!
: Clip.hardEdge, : Clip.hardEdge,
children: WidgetParserBuilder.buildWidgets( children: WidgetParserBuilder.buildWidgets(
map['children'], buildContext, listener), map['children'], buildContext, listener, variable),
); );
} }
......
...@@ -6,7 +6,7 @@ import 'package:flutter/widgets.dart'; ...@@ -6,7 +6,7 @@ import 'package:flutter/widgets.dart';
class TextWidgetParser implements WidgetParser { class TextWidgetParser implements WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
String? data = map['data']; String? data = map['data'];
String? textAlignString = map['textAlign']; String? textAlignString = map['textAlign'];
String? overflow = map['overflow']; String? overflow = map['overflow'];
...@@ -18,7 +18,7 @@ class TextWidgetParser implements WidgetParser { ...@@ -18,7 +18,7 @@ class TextWidgetParser implements WidgetParser {
var textSpan; var textSpan;
var textSpanParser = TextSpanParser(); var textSpanParser = TextSpanParser();
if (map.containsKey("textSpan")) { if (map.containsKey("textSpan")) {
textSpan = textSpanParser.parse(map['textSpan'], buildContext, listener); textSpan = textSpanParser.parse(map['textSpan'], buildContext, listener, variable);
} }
if (textSpan == null) { if (textSpan == null) {
...@@ -56,7 +56,7 @@ class TextWidgetParser implements WidgetParser { ...@@ -56,7 +56,7 @@ class TextWidgetParser implements WidgetParser {
} }
class TextSpanParser { class TextSpanParser {
TextSpan parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { TextSpan parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
Map<String, String>? recognizer = map.containsKey("recognizer") ? map['recognizer'] : null; Map<String, String>? recognizer = map.containsKey("recognizer") ? map['recognizer'] : null;
var textSpan = TextSpan( var textSpan = TextSpan(
text: map['text'], text: map['text'],
...@@ -66,16 +66,16 @@ class TextSpanParser { ...@@ -66,16 +66,16 @@ class TextSpanParser {
children: []); children: []);
if (map.containsKey('children')) { if (map.containsKey('children')) {
parseChildren(textSpan, map['children'], buildContext, listener); parseChildren(textSpan, map['children'], buildContext, listener, variable);
} }
return textSpan; return textSpan;
} }
void parseChildren( void parseChildren(
TextSpan textSpan, List<dynamic> childrenSpan, BuildContext buildContext, MethodListener? listener) { TextSpan textSpan, List<dynamic> childrenSpan, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
for (var childmap in childrenSpan) { for (var childmap in childrenSpan) {
textSpan.children!.add(parse(childmap, buildContext, listener)); textSpan.children!.add(parse(childmap, buildContext, listener, variable));
} }
} }
} }
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:widgetparser/widgetparser.dart';
import 'package:widgetparser/src/utils.dart';
class TextFormFieldWidgetParser extends WidgetParser {
@override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return TextFormField(
controller: TextEditingController(),
initialValue: map.containsKey('initialValue') ? map['initialValue'] : null,
decoration: map.containsKey('decoration') ? parseInputDecoration(map['decoration'], buildContext, listener, variable) : InputDecoration(),
keyboardType: map.containsKey('keyboardType') ? parseTextInputType(map['keyboardType']) : null,
textCapitalization: map.containsKey('textCapitalization') ? parseTextCapitalization(map['textCapitalization']) : TextCapitalization.none,
textInputAction: map.containsKey('textInputAction') ? parseTextInputAction(map['textInputAction']) : null,
style: map.containsKey('style') ? parseTextStyle(map['style']) : null,
textDirection: map.containsKey('textDirection') ? parseTextDirection(map['textDirection']) : null,
textAlign: map.containsKey('textAlign') ? parseTextAlign(map['textAlign']) : TextAlign.start,
textAlignVertical: map.containsKey('textAlignVertical') ? TextAlignVertical(y: map['textAlignVertical']) : null,
autofocus: map.containsKey('autofocus') ? map['autofocus'] as bool : false,
readOnly: map.containsKey('readOnly') ? map['readOnly'] as bool : false,
toolbarOptions: map.containsKey('toolbarOptions') ? parseToolbarOptions(map['toolbarOptions']) : null,
showCursor: map.containsKey('showCursor') ? map['showCursor'] as bool : null,
obscuringCharacter: map.containsKey('obscuringCharacter') ? map['obscuringCharacter'] : '•',
obscureText: map.containsKey('obscureText') ? map['obscureText'] as bool : false,
autocorrect: map.containsKey('autocorrect') ? map['autocorrect'] as bool : true,
enableSuggestions: map.containsKey('enableSuggestions') ? map['enableSuggestions'] as bool : true,
maxLines: map.containsKey('maxLines') ? map['maxLines'] : null,
minLines: map.containsKey('minLines') ? map['minLines'] : null,
expands: map.containsKey('expands') ? map['expands'] as bool : false,
maxLength: map.containsKey('maxLength') ? map['maxLength'] : false,
onChanged: map.containsKey('onChanged') ? (String textEditingValue) => listener!.run(buildContext, map['onChanged']) : null,
onTap: map.containsKey('onTap') ? () => listener!.run(buildContext, map['onTap']) : null,
onEditingComplete: map.containsKey('onEditingComplete') ? () => listener!.run(buildContext, map['onEditingComplete']) : null,
onFieldSubmitted: map.containsKey('onFieldSubmitted') ? (String textEditingValue) => listener!.run(buildContext, map['onFieldSubmitted']) : null,
onSaved: map.containsKey('onSaved') ? (String? textEditingValue) => listener!.run(buildContext, map['onSaved']) : null,
validator: map.containsKey('validator') ? (String? textEditingValue) => listener!.run(buildContext, map['validator']) : null,
enabled: map.containsKey('enabled') ? map['enabled'] as bool : null,
cursorWidth: map.containsKey('cursorWidth') ? map['cursorWidth'] : 2.0,
cursorHeight: map.containsKey('cursorHeight') ? map['cursorHeight'] : null,
cursorColor: map.containsKey('cursorColor') ? parseHexColor(map['cursorColor'])! : null,
keyboardAppearance: map.containsKey('keyboardAppearance') ? parseBrightness(map['keyboardAppearance']) : null,
scrollPadding: map.containsKey('scrollPadding') ? parseEdgeInsetsGeometry(map['scrollPadding']) as EdgeInsets : EdgeInsets.all(20.0),
enableInteractiveSelection: map.containsKey('enableInteractiveSelection') ? map['enableInteractiveSelection'] : true,
scrollPhysics: map.containsKey('scrollPhysics') ? parseScrollPhysics(map['scrollPhysics']) : null,
autovalidateMode: map.containsKey('autovalidateMode') ? parseAutovalidateMode(map['autovalidateMode']) : null,
);
}
@override
String get widgetName => "TextFormField";
@override
Type get widgetType => TextFormField;
}
\ No newline at end of file
...@@ -4,7 +4,7 @@ import 'package:flutter/widgets.dart'; ...@@ -4,7 +4,7 @@ import 'package:flutter/widgets.dart';
class WrapWidgetParser extends WidgetParser { class WrapWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return Wrap( return Wrap(
direction: map.containsKey("direction") direction: map.containsKey("direction")
? parseAxis(map["direction"]) ? parseAxis(map["direction"])
...@@ -28,7 +28,7 @@ class WrapWidgetParser extends WidgetParser { ...@@ -28,7 +28,7 @@ class WrapWidgetParser extends WidgetParser {
? parseVerticalDirection(map["verticalDirection"]) ? parseVerticalDirection(map["verticalDirection"])
: VerticalDirection.down, : VerticalDirection.down,
children: WidgetParserBuilder.buildWidgets( children: WidgetParserBuilder.buildWidgets(
map['children'], buildContext, listener) map['children'], buildContext, listener, variable)
); );
} }
......
const schemaUrl = "http://json-schema.org/draft-06/schema#"; const schemaUrl = "http://json-schema.org/draft-06/schema#";
const refSchema = "#/definitions/"; const refSchema = "#/definitions/";
class WidgetSchema { class SchemaHelper {
static const child = ''' static const child = '''
{ {
"type": "object", "type": "object",
"additionalProperties": false, "additionalProperties": true,
"properties": { "properties": {
"widget": { "widget": {
"type": "string", "type": "string",
"description": "the widget in question is the widget class from the flutter component or the class from the llswidget component", "description": "the widget in question is the widget class from the flutter component or the class from the llswidget component",
"minLength": 1, "minLength": 1
} }
}, },
"required": [ "required": [
...@@ -50,7 +50,7 @@ class WidgetSchema { ...@@ -50,7 +50,7 @@ class WidgetSchema {
static const decoration = ''' static const decoration = '''
{ {
"type": "object", "type": "object",
"additionalProperties": false, "additionalProperties": true,
"properties": { "properties": {
"borderRadius": { "borderRadius": {
"\$ref\": "${refSchema}BorderRadius" "\$ref\": "${refSchema}BorderRadius"
......
...@@ -5,7 +5,7 @@ import 'package:llswidget/llswidget.dart'; ...@@ -5,7 +5,7 @@ import 'package:llswidget/llswidget.dart';
class LLSButtonWidgetParser extends WidgetParser { class LLSButtonWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return LLSButton( return LLSButton(
key: map.containsKey("key") ? createKeyForWidget(map["key"]) : null, key: map.containsKey("key") ? createKeyForWidget(map["key"]) : null,
onPressed: map.containsKey('onPressed') ? () => listener!.run(buildContext, map['onPressed']) : null, onPressed: map.containsKey('onPressed') ? () => listener!.run(buildContext, map['onPressed']) : null,
...@@ -27,7 +27,7 @@ class LLSButtonWidgetParser extends WidgetParser { ...@@ -27,7 +27,7 @@ class LLSButtonWidgetParser extends WidgetParser {
clipBehavior: parseClipBehavior(map['clipBehavior']), clipBehavior: parseClipBehavior(map['clipBehavior']),
focusNode: map.containsKey('focusNode') ? map['focusNode'] : null, focusNode: map.containsKey('focusNode') ? map['focusNode'] : null,
autofocus: map.containsKey('autofocus') ? map['autofocus'] as bool : false, autofocus: map.containsKey('autofocus') ? map['autofocus'] as bool : false,
child: map.containsKey('child') ? WidgetParserBuilder.buildFromMap(map["child"], buildContext, listener) : SizedBox(), child: map.containsKey('child') ? WidgetParserBuilder.buildFromMap(map["child"], buildContext, listener, variable) : SizedBox(),
type: map.containsKey('type') ? parseLLSButtonType(map['type']) : LLSButtonType.solid, type: map.containsKey('type') ? parseLLSButtonType(map['type']) : LLSButtonType.solid,
shape: map.containsKey('shape') ? parseLLSButtonShape(map['shape']) : LLSButtonShape.standard, shape: map.containsKey('shape') ? parseLLSButtonShape(map['shape']) : LLSButtonShape.standard,
color: map.containsKey('color') ? parseHexColor(map['color'])! : LLSColors.PRIMARY, color: map.containsKey('color') ? parseHexColor(map['color'])! : LLSColors.PRIMARY,
...@@ -36,7 +36,7 @@ class LLSButtonWidgetParser extends WidgetParser { ...@@ -36,7 +36,7 @@ class LLSButtonWidgetParser extends WidgetParser {
size: map.containsKey('size') ? parseLLSSize(map['size']) : LLSSize.MEDIUM, size: map.containsKey('size') ? parseLLSSize(map['size']) : LLSSize.MEDIUM,
borderSide: map.containsKey('borderSide') ? parseBorderSide(map['borderSide']) : null, borderSide: map.containsKey('borderSide') ? parseBorderSide(map['borderSide']) : null,
text: map.containsKey('text') ? map['text'] : '', text: map.containsKey('text') ? map['text'] : '',
icon: map.containsKey('icon') ? WidgetParserBuilder.buildFromMap(map['icon'], buildContext, listener) : null, icon: map.containsKey('icon') ? WidgetParserBuilder.buildFromMap(map['icon'], buildContext, listener, variable) : null,
blockButton: map.containsKey('blockButton') ? map['blockButton'] as bool : null, blockButton: map.containsKey('blockButton') ? map['blockButton'] as bool : null,
fullWidthButton: map.containsKey('fullWidthButton') ? map['fullWidthButton'] as bool : null, fullWidthButton: map.containsKey('fullWidthButton') ? map['fullWidthButton'] as bool : null,
onLongPress: map.containsKey('onLongPress') ? () => listener!.run(buildContext, map['onLongPress']) : null, onLongPress: map.containsKey('onLongPress') ? () => listener!.run(buildContext, map['onLongPress']) : null,
......
...@@ -5,7 +5,7 @@ import 'package:llswidget/llswidget.dart'; ...@@ -5,7 +5,7 @@ import 'package:llswidget/llswidget.dart';
class LLSCardWidgetParser extends WidgetParser { class LLSCardWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
EdgeInsets? margin = parseEdgeInsetsGeometry(map['margin']) as EdgeInsets; EdgeInsets? margin = parseEdgeInsetsGeometry(map['margin']) as EdgeInsets;
return LLSCard( return LLSCard(
...@@ -17,9 +17,9 @@ class LLSCardWidgetParser extends WidgetParser { ...@@ -17,9 +17,9 @@ class LLSCardWidgetParser extends WidgetParser {
margin: margin, margin: margin,
clipBehavior: parseClipBehavior(map['clipBehavior']), clipBehavior: parseClipBehavior(map['clipBehavior']),
semanticContainer: map.containsKey('autofocus') ? map['autofocus'] as bool : null, semanticContainer: map.containsKey('autofocus') ? map['autofocus'] as bool : null,
title: map.containsKey('title') ? WidgetParserBuilder.buildFromMap(map['title'], buildContext, listener) as LLSListTile : LLSListTile(), title: map.containsKey('title') ? WidgetParserBuilder.buildFromMap(map['title'], buildContext, listener, variable) as LLSListTile : LLSListTile(),
content: map.containsKey('content') ? WidgetParserBuilder.buildFromMap(map['content'], buildContext, listener) : SizedBox(), content: map.containsKey('content') ? WidgetParserBuilder.buildFromMap(map['content'], buildContext, listener, variable) : SizedBox(),
image: map.containsKey('image') ? WidgetParserBuilder.buildFromMap(map['image'], buildContext, listener) as Image : null, image: map.containsKey('image') ? WidgetParserBuilder.buildFromMap(map['image'], buildContext, listener, variable) as Image : null,
showImage: map.containsKey('showImage') ? map['showImage'] as bool : false, showImage: map.containsKey('showImage') ? map['showImage'] as bool : false,
showOverlayImage: map.containsKey('showOverlayImage') ? map['showOverlayImage'] as bool : false, showOverlayImage: map.containsKey('showOverlayImage') ? map['showOverlayImage'] as bool : false,
// buttonBar: , // buttonBar: ,
......
...@@ -5,13 +5,13 @@ import 'package:llswidget/llswidget.dart'; ...@@ -5,13 +5,13 @@ import 'package:llswidget/llswidget.dart';
class LLSLabelWidgetParser extends WidgetParser { class LLSLabelWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return LLSLabel( return LLSLabel(
key: map.containsKey('key') ? createKeyForWidget(map['key']) : null, key: map.containsKey('key') ? createKeyForWidget(map['key']) : null,
type: parseLLSLabelType(map['type']), type: parseLLSLabelType(map['type']),
child: map.containsKey('child') ? WidgetParserBuilder.buildFromMap(map['child'], buildContext, listener) : null, child: map.containsKey('child') ? WidgetParserBuilder.buildFromMap(map['child'], buildContext, listener, variable) : null,
text: map.containsKey('text') ? map['text'] : '', text: map.containsKey('text') ? map['text'] : '',
icon: map.containsKey('icon') ? WidgetParserBuilder.buildFromMap(map['icon'], buildContext, listener) : null, icon: map.containsKey('icon') ? WidgetParserBuilder.buildFromMap(map['icon'], buildContext, listener, variable) : null,
dividerBorderRadius: map.containsKey('dividerBorderRadius') ? parseBorderRadius(map['dividerBorderRadius']) : null, dividerBorderRadius: map.containsKey('dividerBorderRadius') ? parseBorderRadius(map['dividerBorderRadius']) : null,
textColor: map.containsKey('textColor') ? parseHexColor(map['textColor'])! : LLSColors.DARK, textColor: map.containsKey('textColor') ? parseHexColor(map['textColor'])! : LLSColors.DARK,
dividerAlignment: map.containsKey('dividerAlignment') ? parseAlignment(map['dividerAlignment']) : null, dividerAlignment: map.containsKey('dividerAlignment') ? parseAlignment(map['dividerAlignment']) : null,
......
...@@ -5,18 +5,18 @@ import 'package:llswidget/llswidget.dart'; ...@@ -5,18 +5,18 @@ import 'package:llswidget/llswidget.dart';
class LLSListTileWidgetParser extends WidgetParser { class LLSListTileWidgetParser extends WidgetParser {
@override @override
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener) { Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
return LLSListTile( return LLSListTile(
key: map.containsKey('key') ? createKeyForWidget(map['key']) : null, key: map.containsKey('key') ? createKeyForWidget(map['key']) : null,
titleText: map.containsKey('titleText') ? map['titleText'] : null, titleText: map.containsKey('titleText') ? map['titleText'] : null,
subTitleText: map.containsKey('subTitleText') ? map['subTitleText'] : null, subTitleText: map.containsKey('subTitleText') ? map['subTitleText'] : null,
color: map.containsKey('color') ? parseHexColor(map['color'])! : LLSColors.WHITE, color: map.containsKey('color') ? parseHexColor(map['color'])! : LLSColors.WHITE,
avatar: map.containsKey('avatar') ? WidgetParserBuilder.buildFromMap(map['avatar'], buildContext, listener) : null, avatar: map.containsKey('avatar') ? WidgetParserBuilder.buildFromMap(map['avatar'], buildContext, listener, variable) : null,
title: map.containsKey('title') ? WidgetParserBuilder.buildFromMap(map['title'], buildContext, listener) : null, title: map.containsKey('title') ? WidgetParserBuilder.buildFromMap(map['title'], buildContext, listener, variable) : null,
subTitle: map.containsKey('subTitle') ? WidgetParserBuilder.buildFromMap(map['subTitle'], buildContext, listener) : null, subTitle: map.containsKey('subTitle') ? WidgetParserBuilder.buildFromMap(map['subTitle'], buildContext, listener, variable) : null,
description: map.containsKey('description') ? WidgetParserBuilder.buildFromMap(map['description'], buildContext, listener) : null, description: map.containsKey('description') ? WidgetParserBuilder.buildFromMap(map['description'], buildContext, listener, variable) : null,
icon: map.containsKey('icon') ? WidgetParserBuilder.buildFromMap(map['icon'], buildContext, listener) : null, icon: map.containsKey('icon') ? WidgetParserBuilder.buildFromMap(map['icon'], buildContext, listener, variable) : null,
padding: map.containsKey('padding') ? parseEdgeInsetsGeometry(map['padding']) as EdgeInsets : EdgeInsets.all(8), padding: map.containsKey('padding') ? parseEdgeInsetsGeometry(map['padding']) as EdgeInsets : EdgeInsets.all(8),
margin: map.containsKey('margin') ? parseEdgeInsetsGeometry(map['margin']) as EdgeInsets : EdgeInsets.symmetric(vertical: 8, horizontal: 16), margin: map.containsKey('margin') ? parseEdgeInsetsGeometry(map['margin']) as EdgeInsets : EdgeInsets.symmetric(vertical: 8, horizontal: 16),
enabled: map.containsKey('enabled') ? map['enabled'] as bool : true, enabled: map.containsKey('enabled') ? map['enabled'] as bool : true,
......
...@@ -40,6 +40,8 @@ import 'package:widgetparser/src/flutter_widget/cliprrect_widget_parser.dart'; ...@@ -40,6 +40,8 @@ import 'package:widgetparser/src/flutter_widget/cliprrect_widget_parser.dart';
import 'package:widgetparser/src/flutter_widget/overflowbox_widget_parser.dart'; import 'package:widgetparser/src/flutter_widget/overflowbox_widget_parser.dart';
import 'package:widgetparser/src/flutter_widget/inkwell_widget_parser.dart'; import 'package:widgetparser/src/flutter_widget/inkwell_widget_parser.dart';
import 'package:widgetparser/src/flutter_widget/gesturedetector_widget_parser.dart'; import 'package:widgetparser/src/flutter_widget/gesturedetector_widget_parser.dart';
import 'package:widgetparser/src/flutter_widget/form_widget_parser.dart';
import 'package:widgetparser/src/flutter_widget/textformfield_widget_parser.dart';
//exports llswidget parser //exports llswidget parser
import 'package:widgetparser/src/llswidget/llsbutton_widget_parser.dart'; import 'package:widgetparser/src/llswidget/llsbutton_widget_parser.dart';
import 'package:widgetparser/src/llswidget/llslisttile_widget_parser.dart'; import 'package:widgetparser/src/llswidget/llslisttile_widget_parser.dart';
...@@ -85,6 +87,8 @@ class WidgetParserBuilder { ...@@ -85,6 +87,8 @@ class WidgetParserBuilder {
OverflowBoxWidgetParser(), OverflowBoxWidgetParser(),
InkWellWidgetParser(), InkWellWidgetParser(),
GestureDetectorWidgetParser(), GestureDetectorWidgetParser(),
FormWidgetParser(),
TextFormFieldWidgetParser(),
//llswidget //llswidget
LLSButtonWidgetParser(), LLSButtonWidgetParser(),
LLSListTileWidgetParser(), LLSListTileWidgetParser(),
...@@ -105,44 +109,38 @@ class WidgetParserBuilder { ...@@ -105,44 +109,38 @@ class WidgetParserBuilder {
} }
} }
static Widget? build(String json, BuildContext buildContext, MethodListener? listener) { static Widget? build(String json, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
initDefaultParsersIfNess(); initDefaultParsersIfNess();
var map = jsonDecode(json); var map = jsonDecode(json);
MethodListener _listener = listener == null ? new MethodListener() : listener; MethodListener _listener = listener == null ? new MethodListener() : listener;
var widget = buildFromMap(map, buildContext, _listener); var widget = buildFromMap(map, buildContext, _listener, variable);
return widget; return widget;
} }
static Widget? buildFromMap(Map<String, dynamic>? map, BuildContext buildContext, MethodListener? listener) { static Widget? buildFromMap(Map<String, dynamic>? map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
initDefaultParsersIfNess(); initDefaultParsersIfNess();
late SnackBar snackBar;
if (map == null) { if (map == null) {
snackBar = SnackBar(content: Text("please initialize the widget's object to the WidgetBuilderParser."));
ScaffoldMessenger.of(buildContext).showSnackBar(snackBar);
return null; return null;
} }
String? widgetName = map['widget']; String? widgetName = map['widget'];
var parser = _widgetNameParserMap[widgetName]; var parser = _widgetNameParserMap[widgetName];
if (parser != null) { if (parser != null) {
try { try {
return parser.parse(map, buildContext, listener); return parser.parse(map, buildContext, listener, variable);
} catch (e) { } catch (e) {
snackBar = SnackBar(content: Text(e.toString())); print("${e.toString().split('.')[0]} ${e.toString().split('.')[0]}");
ScaffoldMessenger.of(buildContext).showSnackBar(snackBar);
return null;
} }
} else { } else {
snackBar = SnackBar(content: Text("please initialize the $widgetName widget to the WidgetBuilderParser.")); print("please initialize the $widgetName widget to the WidgetBuilderParser.");
ScaffoldMessenger.of(buildContext).showSnackBar(snackBar);
return null;
} }
return null;
} }
static List<Widget> buildWidgets(List<dynamic> values, BuildContext buildContext, MethodListener? listener) { static List<Widget> buildWidgets(List<dynamic> values, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable) {
initDefaultParsersIfNess(); initDefaultParsersIfNess();
List<Widget> rt = []; List<Widget> rt = [];
for (var value in values) { for (var value in values) {
var buildFromMap2 = buildFromMap(value, buildContext, listener); var buildFromMap2 = buildFromMap(value, buildContext, listener, variable);
if(buildFromMap2!=null) { if(buildFromMap2!=null) {
rt.add(buildFromMap2); rt.add(buildFromMap2);
} }
...@@ -152,7 +150,7 @@ class WidgetParserBuilder { ...@@ -152,7 +150,7 @@ class WidgetParserBuilder {
} }
abstract class WidgetParser { abstract class WidgetParser {
Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener); Widget parse(Map<String, dynamic> map, BuildContext buildContext, MethodListener? listener, Map<String, dynamic>? variable);
String get widgetName; String get widgetName;
...@@ -160,16 +158,18 @@ abstract class WidgetParser { ...@@ -160,16 +158,18 @@ abstract class WidgetParser {
} }
class MethodListener { class MethodListener {
void run(BuildContext context, Map<String, dynamic>? event) { // the data type of the "function" is string
// the data type of the "parameters" is Map<String, dynamic>
run(BuildContext context, Map<String, dynamic>? event) {
if (isFunctionNameExist(event)) { if (isFunctionNameExist(event)) {
print("event: ${event!['func_name']}"); print("event: ${event!['function']}");
} else { } else {
print("receiver event: ${event.toString()}"); print("receiver event: ${event.toString()}");
} }
} }
bool isFunctionNameExist(Map<String, dynamic>? event) { bool isFunctionNameExist(Map<String, dynamic>? event) {
return event!.containsKey('func_name'); return event!.containsKey('function');
} }
bool isParametersExist(Map<String, dynamic>? event) { bool isParametersExist(Map<String, dynamic>? event) {
......
name: widgetparser name: widgetparser
description: this package to dynamically render widgets from JSON description: this package to dynamically render widgets from JSON
version: 0.0.1 version: 0.0.4
author: Rizal Hermawan author: Rizal Hermawan
homepage: https://locatorlogic.com homepage: https://locatorlogic.com
...@@ -17,7 +17,7 @@ dependencies: ...@@ -17,7 +17,7 @@ dependencies:
llswidget: llswidget:
path: ../llswidget path: ../llswidget
cupertino_icons: ^1.0.2 cupertino_icons: ^1.0.2
json_schema2: ^2.0.0+2 json_schema2: 2.0.0+2
dev_dependencies: dev_dependencies:
flutter_test: flutter_test:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment