A Simple Json Form Builder For Flutter
Simple Form Builder
A complete form builder for all your needs is still under construction, this project was based on the following repositories:
Simple Json Builder : Tanmoy Karmakar Json Schema Form: Instituto Iracema
Specs
This library allows you to create a complete form from a json file with
multiple types of fields text
, checkbox
, multiselect
, date
, time
.
This package also provides additional remark options.
It has been written 100% in Dart. ❤️
Installing
Add the following to your pubspec.yaml
file:
dependencies:
simple_json_form: ^0.0.1
Simple Usage
To integrate the Simple form builder all you need to do is follow the given JSON schema and pass it to the formBuilder widget
JSON Schema
// The complete sample is provided in the global folder that can be used as a reference
{
"form": [
{
"key": "questions",
"properties": [
{
"key": "identifier_boat",
"fields": ["1", "2", "3", "4", "5"],
"title": "This is my title",
"description": "This is my description",
"remark": true,
"remark_label": "points",
"remark_title": "insert to points",
"type": "multiple",
"direction": "",
"is_mandatory": false,
"validations": {
"message": "This is my message",
"length": {"min": 10, "max": 20}
}
},
]
},
]
}
Widget Implementation
import 'package:flutter/material.dart';
import 'package:simple_form_builder/formbuilder.dart';
import 'package:simple_form_builder/global/constant.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Json Form Example',
home: Scaffold(
appBar: AppBar(
title: const Text('Material App Bar'),
),
body: SingleChildScrollView(
child: Column(
children: [
SimpleJsonForm(
jsonSchema: sampleData,
title: "My Title",
titleStyle: const TextStyle(
fontWeight: FontWeight.bold,
fontSize: 15,
),
description: "My description",
crossAxisAlignment: CrossAxisAlignment.center,
index: 0,
imageUrl: fileUpload(),
submitButtonText: 'Send',
nextButtonText: 'Next',
previousButtonText: 'Previous',
onSubmit: (val) {
if (val == null) {
print("no data");
} else {
var json = jsonEncode(val.toJson());
print(json);
}
},
),
],
),
),
),
);
}
}
Custom Usage
There are several options that allow for more control:
Properties | Description |
---|---|
jsonSchema |
JSON Schema to use to generate the form. |
crossAxisAlignment |
crossAxisAlignment to use general form |
padding |
padding to use general form |
title |
Title general to use the form |
titleStyle |
title style to use title the form |
description |
Description general to use the form |
descriptionStyle |
Description style to use description form |
submitButtonText |
To use for text the submit button |
previousButtonText |
To use for text the previous button |
nextButtonText |
To use for text the next button |
index |
If the data contains mutiple forms passing the index of the form will show the question of that perticular form |
onSubmit |
This function will take in the map value and pass it to the given function when submit button is pressed |
loading |
widget to use loading form |
validationTitle |
text for use dialog info |
validationDescription |
text for use dialog info |