SkillAgentSearch skills...

Gsform

Flutter form maker

Install / Use

/learn @ritagroup/Gsform
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<!-- > **Warning**: under cunstruction --> </br> </br> </br> </br> <p align="center"> <img src="https://github.com/golrangsystem/gsform/blob/main/screenshot/gsform_logo.png?raw=true" width="300" height="100"> </br> </p>

This package helps to create forms in Flutter by removing the boilerplate needed to build a form, validate fields, react to changes and collect final user input.

Also included are common ready-made form input fields for GSForm. This gives you a convenient way of adding common ready-made input fields instead of creating your own FormBuilderField from scratch.

<!--* Project status: working --> <img src="https://github.com/golrangsystem/gsform/blob/main/screenshot/header.jpg?raw=true">

See real examples:

Table of contents

<!-- Use for instance <https://github.com/ekalinin/github-markdown-toc>: -->
<!-- > * [Features](#features) -->
<!-- > * [BankCard](#bankcard) -->
<!-- > * [Content](#content) --> <!-- > * [Requirements](#requirements) --> <!-- > * [Limitations](#limitations) --> <!-- > * [Build](#build) --> <!-- > * [Deploy (how to install build product)](#deploy-how-to-install-build-product) --> <!-- > * [Resources (Documentation and other links)](#resources-documentation-and-other-links) --> <!-- > * [Contributing / Reporting issues](#contributing--reporting-issues) -->

Installation

Run this command:

With Flutter: </br>

flutter pub add gsform

This will add a line like this to your package's pubspec.yaml (and run an implicit flutter pub get):

dependencies:
  gsform: ^0.3.6

Alternatively, your editor might support flutter pub get. Check the docs for your editor to learn more about it.

Style

<table> <tr> <td>
GSFormStyle(
	backgroundFieldColor: COLOR,
	backgroundSectionColor: COLOR,
	sectionCardElevation: 0
	titleStyle: TextStyle,
	fieldHintStyle: TextStyle,
	fieldTextStyle: TextStyle,
	sectionRadius: 10.0,
	errorTextStyle: TextStyle,
	fieldRadius: double,
	helpTextStyle:TextStyle ,
	requireType: GSFieldRequireTypeEnum, //text, star
	sectionCardPadding: 8.0,
	requiredText: '(required)'
)

<td><img src="https://github.com/golrangsystem/gsform/blob/main/screenshot/style.png?raw=true" alt="alternatetext" width="250" height="450"> </td> </tr> </table>

Dark Support

As we all now Dark theme is trending and most of the popular app has the feature to turn into the dark mode, we support Dark theme in GSForm if you did'nt user custom Style in components, otherwise you should handle this yourself.

<p align="center"> <img src="https://github.com/golrangsystem/gsform/blob/main/screenshot/darksupport.png?raw=true" alt="alternatetext" height="450"> </br> </p>

Direction

Some languages of the world (Arabic, Hebrew etc.) are RTL, meaning they are read right-to-left, instead of left-to-right. GSForm Support RTL Direction !

Required Show Types

You can set type of required show in form with GSFieldRequireTypeEnum (text Or star)

Fields

<table> <tr> <td> Row </td> <td> Field </td> <td> Sample Code </td> <td> Preview </td> </tr> <tr style="width:100%;"> <td> 1 </td> <td> <a href="#text">Text</a> </td> <td>
GSField.text(
	tag: 'postalCode',
	title: 'title',
	minLine: 1,
	maxLine: 1,
	weight: 12,
	required: true,
	maxLength: 100,
	errorMessage: 'error message',
	hint: 'hint message',
	helpMessage: 'help message',
	validateRegEx: regX,
	postfixWidget: widget,
	prefixWidget: widget,
)
</td> <td> <img src="https://github.com/golrangsystem/gsform/blob/main/screenshot/text.png?raw=true" alt="alternatetext" width="150" height="270"> </td> </tr> <tr> <td> 2 </td> <td> <a href="#textplain">Text Plain</a> </td> <td>
 GSField.textPlain(
	tag: 'textualAddress',
	title: 'title',
	weight: 12,
	required: true,
	errorMessage: 'error message',
	hint: 'hint message',
	helpMessage: 'help message',
	maxLength: 100,
	maxLine: 2,
	minLine: 1,
	postfixWidget: widget,
	prefixWidget: widget,
)
</td> <td> <img src="https://github.com/golrangsystem/gsform/blob/main/screenshot/text_plain.png?raw=true" alt="alternatetext" width="150" height="270"> </td> </tr> <tr> <td> 3 </td> <td> <a href="#number">Number</a> </td> <td>
   GSField.number(
	tag: '',
	title: 'title',
	weight: 12,
	maxLength: 11,
	required: true,
	errorMessage: 'Error Message',
	helpMessage: 'less than 100',
),
</td> <td> <img src="https://github.com/golrangsystem/gsform/blob/main/screenshot/number.png?raw=true" alt="alternatetext" width="150" height="270"> </td> </tr> <tr id="my-row"> <td> 4 </td> <td> <a href="#spinner">Spinner</a> </td> <td>
  GSField.spinner(
	errorMessage: 'error message',
	hint: 'hint message',
	helpMessage: 'help message',
	tag: 'tag',
	required: true,
	weight: 12,
	title: 'title',
	items: [
	SpinnerDataModel(
	name: '',
	id: 1,),
	],
)
</td> <td> <img src="https://github.com/golrangsystem/gsform/blob/main/screenshot/spinner.png?raw=true" alt="alternatetext" width="150" height="270"> </td> </tr> <tr> <td> 5 </td> <td> <a href="#datepicker">Date Picker</a> </td> <td>
 GSField.datePicker(
	tag: 'tag',
	title: 'title',
	weight: 12,
	isPastAvailable: false,
	required: true,
	postfixWidget: widget,
	displayDateType: DisplayDateType.numeric,
	initialDate: Jalali.now(),
	errorMessage: 'error message',
	hint: 'hint message',
	helpMessage: 'help message',
	prefixWidget: widget,
)
</td> <td> <img src="https://github.com/golrangsystem/gsform/blob/main/screenshot/date.png?raw=true" alt="alternatetext" width="150" height="270"> </td> </tr> <tr> <td> 6 </td> <td> <a href="#daterangedpicker">Date Ranged Picker</a> </td> <td>
GSField.dateRangePicker(
	tag: 'tag',
	title: 'title',
	weight: 12,
	required: true,
	postfixWidget: widget,
	displayDateType: DisplayDateType.numeric,
	isPastAvailable: false,
	availableFrom: Jalali,
	availableTo: Jalali,
	initialDate: Jalali.now(),
	from: 'From : ',
	to: 'To : ',
	errorMessage: 'error message',
	hint: 'hint message',
	helpMessage: 'help message',
	prefixWidget: widget,
)
</td> <td> <img src="https://github.com/golrangsystem/gsform/blob/main/screenshot/range_date.png?raw=true" alt="alternatetext" width="150" height="270"> </td> </tr> <tr> <td> 7 </td> <td> <a href="#timepicker">Time Picker</a> </td> <td>
GSField.time(
	tag: 'tag',
	prefixWidget: widget,
	postfixWidget: widget,
	errorMessage: 'error message',
	hint: 'hint message',
	helpMessage: 'help message',
	required: true,
	initialTime: TimeOfDay,
	weight: 12
	)
</td> <td> <img src="https://github.com/golrangsystem/gsform/blob/main/screenshot/time.png?raw=true" alt="alternatetext" width="150" height="270"> </td> </tr> <tr> <td> 8 </td> <td> <a href="#mobile">Mobile</a> </td> <td>
GSField.mobile(
	tag: 'tag',
	errorMessage: 'error message',
	hint: 'hint message',
	helpMessage: 'help message',
	title: 'title',
	maxLength: 11,
	postfixWidget: widget,
	prefixWidget: widget,
	validateRegEx: regex,
	weight: 12,
	required: true,
)
</td> <td> <img src="https://github.com/golrangsystem/gsform/blob/main/screenshot/mobile.png?raw=true" alt="alternatetext" width="150" height="270"> </td> </tr> <tr> <td> 9 </td> <td> <a href="#email">Email</a> </td> <td>
GSField.email(
	tag: 'tag',
	errorMessage: 'error message',
	hint: 'hint message',
	helpMessage: 'help message',
	title: 'title',
	maxLength: 11,
	postfixWidget: widget,
	prefixWidget: widget,
	validateRegEx: regex,
	weight: 12,
	required: true,
)
</td> <td> <img src="https://github.com/golrangsystem/gsform/blob/main/screenshot/email.png?raw=true" alt="alternatetext" width="150" height="270"> </td> </tr> <tr> <td> 10 </td> <td> <a href="#password">Password</a> </td> <td>
GSField.password(
	tag: 'tag',
	errorMessage: 'error message',
	hint: 'hint message',
	helpMessage: 'help message',
	title: 'title',
	maxLength: 11,
	prefixWidget: widget,
	weight: 12,
	required: true,
)
</td> <td> <img src="https://github.com/golrangsystem/gsform/blob/main/screenshot/password.png?raw=true" alt="alternatetext" width="150" height="270"> </td> </tr> <tr> <td> 11 </td> <td> <a href="#price">Price</a> </td> <td>
GSField.price(
	tag: 'tag',
	errorMessage: 'error message',
	hint: 'hint message',
	helpMessage: 'help message',
	title: 'title',
	maxLength: 11,
	prefixWidget: widget,
	currencyName: "\$" ,
	weight: 12,
	required: true,
)
</td> <td> <img src="https://github.com/golrangsystem/gsform/blob/main/screenshot/price.png?raw=true" alt="alternatetext" width="150" height="270"> </td> </tr> <tr> <td> 12 </td> <td> Bank Card </td> <td>
GSField.bankCard(
	tag: 'tag',
	postfixWidget: widget,
	prefixWidget: widget,
	title: 'title',
	weight: 12,
	required: true,
	errorMessage: 'error message',
	hint: 'hint message',
	helpMessage: 'help message',
)
</td> <td> <img src="https://github.com/golrangsystem/gsform/blob/main/screenshot/card.png?raw=true" alt="alternatetext" width="150" height="270"> </td> </tr> </table>

Attributes

Some features are common to all fields, which are introduced in the table below. The specific features of each field will be explained in detail below.

<table> <tr> <td>Attribute</td> <td>Type</td> <td>Values</td> <td>Required</td>
View on GitHub
GitHub Stars22
CategoryDevelopment
Updated4mo ago
Forks9

Languages

Dart

Security Score

82/100

Audited on Dec 3, 2025

No findings