mirror of
https://github.com/Iconica-Development/flutter_form_wizard.git
synced 2025-05-19 19:03:47 +02:00
Compare commits
No commits in common. "master" and "6.3.1" have entirely different histories.
13 changed files with 205 additions and 530 deletions
14
.github/workflows/release.yml
vendored
14
.github/workflows/release.yml
vendored
|
@ -1,14 +0,0 @@
|
|||
name: Iconica Standard Component Release Workflow
|
||||
# Workflow Caller version: 1.0.0
|
||||
|
||||
on:
|
||||
release:
|
||||
types: [published]
|
||||
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
call-global-iconica-workflow:
|
||||
uses: Iconica-Development/.github/.github/workflows/component-release.yml@master
|
||||
secrets: inherit
|
||||
permissions: write-all
|
4
.gitignore
vendored
4
.gitignore
vendored
|
@ -29,7 +29,3 @@ migrate_working_dir/
|
|||
.packages
|
||||
build/
|
||||
.metadata
|
||||
|
||||
# FVM Version Cache
|
||||
.fvm/
|
||||
.fvmrc
|
||||
|
|
219
CHANGELOG.md
219
CHANGELOG.md
|
@ -1,129 +1,136 @@
|
|||
## 6.6.0 - September 5th 2024
|
||||
- Added `onBack` callback to the `FlutterFormOptions` to detect when the back button is pressed
|
||||
## 0.0.2 - October 10th 2022
|
||||
|
||||
## 6.5.0 - July 1st 2024
|
||||
- Added `FlutterFormMultipleChoice` for multiple choice selection
|
||||
- Initial release
|
||||
|
||||
## 6.4.0 - June 28th 2024
|
||||
- Added `FlutterFormInputDropdown` for dropdown selection
|
||||
- Added style property to `FlutterFormInputEmail`
|
||||
## 0.1.0 - October 12th 2022
|
||||
|
||||
## 6.3.2 - May 15th 2024
|
||||
- Loosened the dependency on intl to be more compatible with several Flutter versions
|
||||
- Added a multi line plain text input widget
|
||||
- Ability to set the scrolldirection of the pageview
|
||||
- Ability to set the scrollphysics of the pages' scrollview.
|
||||
|
||||
## 6.3.1 - February 29th 2024
|
||||
- Removed `TranslationService` and add `validationMessage` property to fields with validation.
|
||||
- Added a way to override a input field validator.
|
||||
- Exposed all properties for `FlutterFormInputDateTime` provided by `flutter_input_library`.
|
||||
## 0.2.0 - October 13th 2022
|
||||
|
||||
## 6.3.0 - February 21st 2024
|
||||
- Updated the `flutter_input_library` from 3.1.0 to 3.2.1
|
||||
- Added `FlutterFormInputPhone` for phone number with dial code selection.
|
||||
- Added `InputDecoration` parameter to the following input fields: `FlutterFormInputEmail` and `FlutterFormInputPassword`
|
||||
- Added date input widget
|
||||
|
||||
## 6.2.5 - February 15th 2024
|
||||
- Updated the `flutter_input_library` from 3.0.1 to 3.1.0
|
||||
## 1.0.0 - October 13th 2022
|
||||
|
||||
## 6.2.4 - February 9th 2024
|
||||
- Updated the `flutter_input_library` from 3.0.0 to 3.0.1
|
||||
- Fix: Proper use of generics
|
||||
- Inputcontrollers now have an onChange.
|
||||
- Added switch input field
|
||||
|
||||
## 6.2.3 - February 7th 2024
|
||||
- Added CI and linter
|
||||
## 1.0.1 - October 13th 2022
|
||||
|
||||
## 6.2.2 - February 6th 2024
|
||||
- Updated the `flutter_input_library` from 2.6.0 to 3.0.0
|
||||
- Added forgotten onChanged parameter on date input field
|
||||
|
||||
## 6.2.1 - January 12th 2024
|
||||
- Pass on the `initialValue` property to FlutterFormMultiLine
|
||||
## 1.0.2 - October 13th 2022
|
||||
|
||||
## 6.2.0 - December 14th 2023
|
||||
- Pass on the `textCapitalization` property to FlutterFormPlainText and FlutterFormMultiLine
|
||||
- Added forgotten icon parameter on date input field and scrollpadding on text inputfield
|
||||
## 2.0.0 - October 26th 2022
|
||||
|
||||
- Added the id of the input field on the input check widget.
|
||||
- Ability to set the height of the carousel input field.
|
||||
- InputController now contains the onSubmit callback.
|
||||
|
||||
## 2.0.1 - October 27th 2022
|
||||
|
||||
- onChange of switch input not firing fixed
|
||||
|
||||
## 4.0.2 - November 29th 2022
|
||||
|
||||
- Name change to flutter_form_wizard
|
||||
|
||||
|
||||
## 4.0.3 - November 29th 2022
|
||||
|
||||
- Change from input to `flutter_input_library`
|
||||
|
||||
## 5.0.0 - November 29th 2022
|
||||
|
||||
- `flutter_input_library` now enforces 24h time requirements
|
||||
|
||||
## 5.0.4 - January 12th 2023
|
||||
|
||||
- Add FocusNode option to inputs
|
||||
|
||||
## 5.0.5 - January 12th 2023
|
||||
|
||||
- Expose translations
|
||||
|
||||
## 5.0.6 - January 12th 2023
|
||||
|
||||
- `flutter_input_library` datetime validator fix
|
||||
|
||||
## 5.0.7 - January 12th 2023
|
||||
|
||||
- `flutter_input_library` add styling text datetime fix
|
||||
|
||||
## 5.0.8 - January 18th 2023
|
||||
|
||||
- `flutter_input_library` add focusNode option to `FlutterFormInputMultiLine`
|
||||
|
||||
## 5.0.9 - January 18th 2023
|
||||
|
||||
- `flutter_input_library` add initial time picker parameter
|
||||
|
||||
## 6.0.0 - march 28th 2023
|
||||
|
||||
- Bump `flutter_input_library` to version 2.0.0
|
||||
- Remove unnecessary `riverpod` dependency
|
||||
|
||||
## 6.1.0 - May 12th 2023
|
||||
|
||||
- Make compatible to flutter 3.10
|
||||
|
||||
## 6.1.1 - August 10th 2023
|
||||
|
||||
- Bump `flutter_input_library` to version 2.2.0
|
||||
## 6.1.2 - August 11th 2023
|
||||
|
||||
- Bump `flutter_input_library` to version 2.2.1
|
||||
|
||||
## 6.1.3 - September 26th 2023
|
||||
- Fix date format for datecontroller
|
||||
|
||||
## 6.1.4 - October 26th 2023
|
||||
- Bump `flutter_input_library` to version 2.3.0
|
||||
|
||||
## 6.1.5 - October 26th 2023
|
||||
- Bump `flutter_input_library` to version 2.4.0
|
||||
|
||||
## 6.1.6 - October 26th 2023
|
||||
- Add enabled property to FlutterFormInputPlainText and FlutterFormInputDateTime
|
||||
|
||||
## 6.1.7 - November 1st 2023
|
||||
- pass on the show icon property to flutter form input date time widget
|
||||
|
||||
## 6.1.8 - December 6th 2023
|
||||
- Pass on the style property to the FlutterFormPlainText input widget
|
||||
- Bump `flutter_input_library` to version 2.5.0
|
||||
|
||||
## 6.1.7 - November 1st 2023
|
||||
- Pass on the show icon property to flutter form input date time widget
|
||||
## 6.2.0 - December 14th 2023
|
||||
- Pass on the `textCapitalization` property to FlutterFormPlainText and FlutterFormMultiLine
|
||||
|
||||
## 6.1.6 - October 26th 2023
|
||||
- Add enabled property to FlutterFormInputPlainText and FlutterFormInputDateTime
|
||||
## 6.2.1 - January 12th 2024
|
||||
- Pass on the `initialValue` property to FlutterFormMultiLine
|
||||
|
||||
## 6.1.5 - October 26th 2023
|
||||
- Bump `flutter_input_library` to version 2.4.0
|
||||
## 6.2.2 - February 6th 2024
|
||||
- Updated the `flutter_input_library` from 2.6.0 to 3.0.0
|
||||
|
||||
## 6.1.4 - October 26th 2023
|
||||
- Bump `flutter_input_library` to version 2.3.0
|
||||
## 6.2.3 - February 7th 2024
|
||||
- Added CI and linter
|
||||
|
||||
## 6.1.3 - September 26th 2023
|
||||
- Fix date format for date controller
|
||||
## 6.2.4 - February 9th 2024
|
||||
- Updated the `flutter_input_library` from 3.0.0 to 3.0.1
|
||||
|
||||
## 6.1.2 - August 11th 2023
|
||||
- Bump `flutter_input_library` to version 2.2.1
|
||||
## 6.2.5 - February 15th 2024
|
||||
- Updated the `flutter_input_library` from 3.0.1 to 3.1.0
|
||||
|
||||
## 6.1.1 - August 10th 2023
|
||||
- Bump `flutter_input_library` to version 2.2.0
|
||||
## 6.3.0 - February 21th 2024
|
||||
- Updated the `flutter_input_library` from 3.1.0 to 3.2.1
|
||||
- Added `FlutterFormInputPhone` for phone number with dial code selection.
|
||||
- Added `InputDecoration` parameter to the following inputfields: `FlutterFormInputEmail` and `FlutterFormInputPassword`
|
||||
|
||||
## 6.1.0 - May 12th 2023
|
||||
- Make compatible with Flutter 3.10
|
||||
|
||||
## 6.0.0 - March 28th 2023
|
||||
- Bump `flutter_input_library` to version 2.0.0
|
||||
- Remove unnecessary `riverpod` dependency
|
||||
|
||||
## 5.0.9 - January 18th 2023
|
||||
- `flutter_input_library` add initial time picker parameter
|
||||
|
||||
## 5.0.8 - January 18th 2023
|
||||
- `flutter_input_library` add focusNode option to `FlutterFormInputMultiLine`
|
||||
|
||||
## 5.0.7 - January 12th 2023
|
||||
- `flutter_input_library` add styling text datetime fix
|
||||
|
||||
## 5.0.6 - January 12th 2023
|
||||
- `flutter_input_library` datetime validator fix
|
||||
|
||||
## 5.0.5 - January 12th 2023
|
||||
- Expose translations
|
||||
|
||||
## 5.0.4 - January 12th 2023
|
||||
- Add FocusNode option to inputs
|
||||
|
||||
## 5.0.0 - November 29th 2022
|
||||
- `flutter_input_library` now enforces 24h time requirements
|
||||
|
||||
## 4.0.3 - November 29th 2022
|
||||
- Change from input to `flutter_input_library`
|
||||
|
||||
## 4.0.2 - November 29th 2022
|
||||
- Name change to flutter_form_wizard
|
||||
|
||||
## 2.0.1 - October 27th 2022
|
||||
- onChange of switch input not firing fixed
|
||||
|
||||
## 2.0.0 - October 26th 2022
|
||||
- Added the id of the input field on the input check widget.
|
||||
- Ability to set the height of the carousel input field.
|
||||
- InputController now contains the onSubmit callback.
|
||||
|
||||
## 1.0.2 - October 13th 2022
|
||||
- Added forgotten icon parameter on date input field and scroll padding on text input field
|
||||
|
||||
## 1.0.1 - October 13th 2022
|
||||
- Added forgotten onChanged parameter on date input field
|
||||
|
||||
## 1.0.0 - October 13th 2022
|
||||
- Fix: Proper use of generics
|
||||
- Input controllers now have an onChange.
|
||||
- Added switch input field
|
||||
|
||||
## 0.2.0 - October 13th 2022
|
||||
- Added date input widget
|
||||
|
||||
## 0.1.0 - October 12th 2022
|
||||
- Added a multi-line plain text input widget
|
||||
- Ability to set the scroll direction of the page view
|
||||
- Ability to set the scroll physics of the pages' scroll view.
|
||||
|
||||
## 0.0.2 - October 10th 2022
|
||||
- Initial release
|
||||
## 6.3.1 - February 29th 2024
|
||||
- Removed `TranslationService` and add `validationMessage` property to fields with validation.
|
||||
- Added a way to override a input field validator.
|
||||
- Exposed all properties for `FlutterFormInputDateTime` provided by `flutter_input_library`.
|
45
example/.metadata
Normal file
45
example/.metadata
Normal file
|
@ -0,0 +1,45 @@
|
|||
# This file tracks properties of this Flutter project.
|
||||
# Used by Flutter tool to assess capabilities and perform upgrades etc.
|
||||
#
|
||||
# This file should be version controlled.
|
||||
|
||||
version:
|
||||
revision: 4f9d92fbbdf072a70a70d2179a9f87392b94104c
|
||||
channel: stable
|
||||
|
||||
project_type: app
|
||||
|
||||
# Tracks metadata for the flutter migrate command
|
||||
migration:
|
||||
platforms:
|
||||
- platform: root
|
||||
create_revision: 4f9d92fbbdf072a70a70d2179a9f87392b94104c
|
||||
base_revision: 4f9d92fbbdf072a70a70d2179a9f87392b94104c
|
||||
- platform: android
|
||||
create_revision: 4f9d92fbbdf072a70a70d2179a9f87392b94104c
|
||||
base_revision: 4f9d92fbbdf072a70a70d2179a9f87392b94104c
|
||||
- platform: ios
|
||||
create_revision: 4f9d92fbbdf072a70a70d2179a9f87392b94104c
|
||||
base_revision: 4f9d92fbbdf072a70a70d2179a9f87392b94104c
|
||||
- platform: linux
|
||||
create_revision: 4f9d92fbbdf072a70a70d2179a9f87392b94104c
|
||||
base_revision: 4f9d92fbbdf072a70a70d2179a9f87392b94104c
|
||||
- platform: macos
|
||||
create_revision: 4f9d92fbbdf072a70a70d2179a9f87392b94104c
|
||||
base_revision: 4f9d92fbbdf072a70a70d2179a9f87392b94104c
|
||||
- platform: web
|
||||
create_revision: 4f9d92fbbdf072a70a70d2179a9f87392b94104c
|
||||
base_revision: 4f9d92fbbdf072a70a70d2179a9f87392b94104c
|
||||
- platform: windows
|
||||
create_revision: 4f9d92fbbdf072a70a70d2179a9f87392b94104c
|
||||
base_revision: 4f9d92fbbdf072a70a70d2179a9f87392b94104c
|
||||
|
||||
# User provided section
|
||||
|
||||
# List of Local paths (relative to this file) that should be
|
||||
# ignored by the migrate tool.
|
||||
#
|
||||
# Files that are not part of the templates will be ignored by default.
|
||||
unmanaged_files:
|
||||
- 'lib/main.dart'
|
||||
- 'ios/Runner.xcodeproj/project.pbxproj'
|
|
@ -45,10 +45,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: cupertino_icons
|
||||
sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6
|
||||
sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.8"
|
||||
version: "1.0.5"
|
||||
fake_async:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -68,24 +68,22 @@ packages:
|
|||
path: ".."
|
||||
relative: true
|
||||
source: path
|
||||
version: "6.5.0"
|
||||
version: "6.2.5"
|
||||
flutter_input_library:
|
||||
dependency: transitive
|
||||
description:
|
||||
path: "."
|
||||
ref: "3.4.0"
|
||||
resolved-ref: cdc06bbb7933ba7ac2835e29d2c8fabf69e5f5a6
|
||||
url: "https://github.com/Iconica-Development/flutter_input_library"
|
||||
source: git
|
||||
version: "3.4.0"
|
||||
path: "../../flutter_input_library"
|
||||
relative: true
|
||||
source: path
|
||||
version: "3.2.1"
|
||||
flutter_lints:
|
||||
dependency: "direct dev"
|
||||
description:
|
||||
name: flutter_lints
|
||||
sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04
|
||||
sha256: aeb0b80a8b3709709c9cc496cdc027c5b3216796bc0af0ce1007eaf24464fd4c
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.3"
|
||||
version: "2.0.1"
|
||||
flutter_localizations:
|
||||
dependency: transitive
|
||||
description: flutter
|
||||
|
@ -95,10 +93,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_riverpod
|
||||
sha256: "0f1974eff5bbe774bf1d870e406fc6f29e3d6f1c46bd9c58e7172ff68a785d7d"
|
||||
sha256: "371f6e8acb69dbe8aa3e0a50c8a65f8a9352b599134d585cc4923261cb5ae4d6"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.5.1"
|
||||
version: "2.1.1"
|
||||
flutter_test:
|
||||
dependency: "direct dev"
|
||||
description: flutter
|
||||
|
@ -108,82 +106,58 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: intl
|
||||
sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf
|
||||
sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.19.0"
|
||||
leak_tracker:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: leak_tracker
|
||||
sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "10.0.5"
|
||||
leak_tracker_flutter_testing:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: leak_tracker_flutter_testing
|
||||
sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.5"
|
||||
leak_tracker_testing:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: leak_tracker_testing
|
||||
sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.1"
|
||||
version: "0.18.1"
|
||||
lints:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: lints
|
||||
sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452"
|
||||
sha256: "5cfd6509652ff5e7fe149b6df4859e687fca9048437857cb2e65c8d780f396e3"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.1"
|
||||
version: "2.0.0"
|
||||
matcher:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: matcher
|
||||
sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb
|
||||
sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.12.16+1"
|
||||
version: "0.12.16"
|
||||
material_color_utilities:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: material_color_utilities
|
||||
sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
|
||||
sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.11.1"
|
||||
version: "0.5.0"
|
||||
meta:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: meta
|
||||
sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7
|
||||
sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.15.0"
|
||||
version: "1.10.0"
|
||||
path:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path
|
||||
sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
|
||||
sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.9.0"
|
||||
version: "1.8.3"
|
||||
riverpod:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: riverpod
|
||||
sha256: f21b32ffd26a36555e501b04f4a5dca43ed59e16343f1a30c13632b2351dfa4d
|
||||
sha256: "899cd0999b2f3b798349d9b5639cfea81d406c011bd914097145ff92e91b29f9"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.5.1"
|
||||
version: "2.1.1"
|
||||
sky_engine:
|
||||
dependency: transitive
|
||||
description: flutter
|
||||
|
@ -209,10 +183,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: state_notifier
|
||||
sha256: b8677376aa54f2d7c58280d5a007f9e8774f1968d1fb1c096adcb4792fba29bb
|
||||
sha256: "8fe42610f179b843b12371e40db58c9444f8757f8b69d181c97e50787caed289"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.0"
|
||||
version: "0.7.2+1"
|
||||
stream_channel:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -241,10 +215,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: test_api
|
||||
sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb"
|
||||
sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.7.2"
|
||||
version: "0.6.1"
|
||||
vector_math:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -253,14 +227,14 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.4"
|
||||
vm_service:
|
||||
web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: vm_service
|
||||
sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d"
|
||||
name: web
|
||||
sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "14.2.5"
|
||||
version: "0.3.0"
|
||||
sdks:
|
||||
dart: ">=3.3.0 <4.0.0"
|
||||
flutter: ">=3.18.0-18.0.pre.54"
|
||||
dart: ">=3.2.0-194.0.dev <4.0.0"
|
||||
flutter: ">=3.0.0"
|
||||
|
|
|
@ -16,7 +16,7 @@ dependencies:
|
|||
flutter_riverpod: ^2.1.1
|
||||
flutter_form_wizard:
|
||||
path: ../
|
||||
intl: any
|
||||
intl: ^0.18.0
|
||||
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
|
|
|
@ -487,7 +487,7 @@ class FlutterFormController extends ChangeNotifier {
|
|||
|
||||
Future<void> previousStep() async {
|
||||
_currentStep -= 1;
|
||||
_options.onBack?.call(_currentStep);
|
||||
|
||||
_checkingPages = false;
|
||||
|
||||
notifyListeners();
|
||||
|
|
|
@ -1,164 +0,0 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_form_wizard/flutter_form.dart';
|
||||
import 'package:flutter_input_library/flutter_input_library.dart' as input;
|
||||
|
||||
class FlutterFormInputDropdown extends FlutterFormInputWidget<Object> {
|
||||
const FlutterFormInputDropdown({
|
||||
required super.controller,
|
||||
required this.validationMessage,
|
||||
this.items,
|
||||
this.selectedItemBuilder,
|
||||
this.value,
|
||||
this.hint,
|
||||
this.disabledHint,
|
||||
this.onChanged,
|
||||
this.onTap,
|
||||
this.elevation = 8,
|
||||
this.style,
|
||||
this.icon,
|
||||
this.iconDisabledColor,
|
||||
this.iconEnabledColor,
|
||||
this.iconSize = 24.0,
|
||||
this.isDense = false,
|
||||
this.isExpanded = false,
|
||||
this.itemHeight,
|
||||
this.focusColor,
|
||||
this.autofocus = false,
|
||||
this.dropdownColor,
|
||||
this.decoration,
|
||||
this.onSaved,
|
||||
this.validator,
|
||||
this.autovalidateMode,
|
||||
this.menuMaxHeight,
|
||||
this.enableFeedback,
|
||||
this.alignment = Alignment.centerLeft,
|
||||
this.borderRadius,
|
||||
this.padding,
|
||||
super.key,
|
||||
super.focusNode,
|
||||
super.label,
|
||||
});
|
||||
|
||||
final List<DropdownMenuItem<Object?>>? items;
|
||||
final List<Widget> Function(BuildContext)? selectedItemBuilder;
|
||||
final Object? value;
|
||||
final Widget? hint;
|
||||
final Widget? disabledHint;
|
||||
final void Function(Object?)? onChanged;
|
||||
final void Function()? onTap;
|
||||
final int elevation;
|
||||
final TextStyle? style;
|
||||
final Widget? icon;
|
||||
final Color? iconDisabledColor;
|
||||
final Color? iconEnabledColor;
|
||||
final double iconSize;
|
||||
final bool isDense;
|
||||
final bool isExpanded;
|
||||
final double? itemHeight;
|
||||
final Color? focusColor;
|
||||
final bool autofocus;
|
||||
final Color? dropdownColor;
|
||||
final InputDecoration? decoration;
|
||||
final void Function(Object?)? onSaved;
|
||||
final String? Function(Object?)? validator;
|
||||
final AutovalidateMode? autovalidateMode;
|
||||
final double? menuMaxHeight;
|
||||
final bool? enableFeedback;
|
||||
final AlignmentGeometry alignment;
|
||||
final BorderRadius? borderRadius;
|
||||
final EdgeInsetsGeometry? padding;
|
||||
final String validationMessage;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
super.registerController(context);
|
||||
return input.FlutterFormInputDropdown(
|
||||
items: items,
|
||||
selectedItemBuilder: selectedItemBuilder,
|
||||
value: value,
|
||||
hint: hint,
|
||||
disabledHint: disabledHint,
|
||||
onChanged: controller.onChanged,
|
||||
onTap: () => onTap?.call(),
|
||||
elevation: elevation,
|
||||
style: style,
|
||||
icon: icon,
|
||||
iconDisabledColor: iconDisabledColor,
|
||||
iconEnabledColor: iconEnabledColor,
|
||||
iconSize: iconSize,
|
||||
isDense: isDense,
|
||||
isExpanded: isExpanded,
|
||||
itemHeight: itemHeight,
|
||||
focusColor: focusColor,
|
||||
focusNode: focusNode,
|
||||
autofocus: autofocus,
|
||||
dropdownColor: dropdownColor,
|
||||
decoration: decoration,
|
||||
onSaved: controller.onSaved,
|
||||
validator: validator ??
|
||||
(value) => controller.onValidate(
|
||||
value,
|
||||
validationMessage,
|
||||
),
|
||||
autovalidateMode: autovalidateMode,
|
||||
menuMaxHeight: menuMaxHeight,
|
||||
enableFeedback: enableFeedback,
|
||||
alignment: alignment,
|
||||
borderRadius: borderRadius,
|
||||
padding: padding,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class FlutterFormInputDropdownController
|
||||
implements FlutterFormInputController<Object> {
|
||||
FlutterFormInputDropdownController({
|
||||
required this.id,
|
||||
this.mandatory = false,
|
||||
this.value,
|
||||
this.checkPageTitle,
|
||||
this.checkPageDescription,
|
||||
this.onChanged,
|
||||
this.onSubmit,
|
||||
});
|
||||
|
||||
@override
|
||||
String? id;
|
||||
|
||||
@override
|
||||
Object? value;
|
||||
|
||||
@override
|
||||
bool mandatory;
|
||||
|
||||
@override
|
||||
String Function(Object? value)? checkPageTitle;
|
||||
|
||||
@override
|
||||
String Function(Object? value)? checkPageDescription;
|
||||
|
||||
@override
|
||||
void Function(Object? value)? onChanged;
|
||||
|
||||
@override
|
||||
void Function(Object? value)? onSubmit;
|
||||
|
||||
@override
|
||||
void onSaved(Object? value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
@override
|
||||
String? onValidate(
|
||||
Object? value,
|
||||
String validationMessage,
|
||||
) {
|
||||
if (mandatory) {
|
||||
if (value == null) {
|
||||
return validationMessage;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -23,7 +23,6 @@ class FlutterFormInputEmail extends FlutterFormInputWidget<String> {
|
|||
bool? enabled,
|
||||
this.validator,
|
||||
this.decoration,
|
||||
this.style,
|
||||
}) : super(
|
||||
enabled: enabled ?? true,
|
||||
);
|
||||
|
@ -31,14 +30,12 @@ class FlutterFormInputEmail extends FlutterFormInputWidget<String> {
|
|||
final InputDecoration? decoration;
|
||||
final String validationMessage;
|
||||
final String? Function(String?)? validator;
|
||||
final TextStyle? style;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
super.registerController(context);
|
||||
|
||||
return input.FlutterFormInputPlainText(
|
||||
style: style,
|
||||
enabled: enabled,
|
||||
initialValue: controller.value,
|
||||
onSaved: (value) {
|
||||
|
|
|
@ -7,7 +7,6 @@ export 'package:flutter_input_library/flutter_input_library.dart'
|
|||
|
||||
export 'input_carousel/input_carousel.dart';
|
||||
export 'input_date_picker/input_date_picker.dart';
|
||||
export 'input_dropdown.dart';
|
||||
export 'input_email.dart';
|
||||
export 'input_number_picker/input_number_picker.dart';
|
||||
export 'input_password/input_password.dart';
|
||||
|
@ -15,4 +14,3 @@ export 'input_phone.dart';
|
|||
export 'input_plain_text.dart';
|
||||
export 'input_slider/input_slider.dart';
|
||||
export 'input_switch/input_switch.dart';
|
||||
export 'multiple_choice.dart';
|
||||
|
|
|
@ -1,159 +0,0 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_form_wizard/flutter_form.dart';
|
||||
|
||||
class FlutterFormInputMultipleChoice extends FlutterFormInputWidget<String> {
|
||||
/// Creates a [FlutterFormInputMultipleChoice].
|
||||
///
|
||||
/// The [controller], [options], [builder], [validationMessage] parameters
|
||||
/// are required.
|
||||
/// The [key], [focusNode], [label] are optional.
|
||||
const FlutterFormInputMultipleChoice({
|
||||
required super.controller,
|
||||
required this.options,
|
||||
required this.builder,
|
||||
required this.validationMessage,
|
||||
super.focusNode,
|
||||
super.label,
|
||||
super.key,
|
||||
this.mainAxisExtent,
|
||||
this.childAspectRatio = 1,
|
||||
this.mainAxisSpacing = 0,
|
||||
this.crossAxisSpacing = 0,
|
||||
this.crossAxisCount = 3,
|
||||
this.height,
|
||||
this.shrinkwrap = true,
|
||||
this.validator,
|
||||
});
|
||||
|
||||
final List<String> options;
|
||||
final double? mainAxisExtent;
|
||||
final double childAspectRatio;
|
||||
final double mainAxisSpacing;
|
||||
final double crossAxisSpacing;
|
||||
final int crossAxisCount;
|
||||
final double? height;
|
||||
final bool shrinkwrap;
|
||||
final Widget Function(
|
||||
BuildContext context,
|
||||
int index,
|
||||
ValueNotifier<int?> selectedIndex,
|
||||
FlutterFormInputController controller,
|
||||
List<String> options,
|
||||
FormFieldState<String> state,
|
||||
) builder;
|
||||
final String? Function(String? value, String validationMessage)? validator;
|
||||
final String validationMessage;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
super.registerController(context);
|
||||
var selectedIndex = ValueNotifier<int?>(null);
|
||||
|
||||
return FormField<String>(
|
||||
onSaved: controller.onSaved,
|
||||
validator: (value) =>
|
||||
validator?.call(value, validationMessage) ??
|
||||
controller.onValidate(value, validationMessage),
|
||||
builder: (state) => SizedBox(
|
||||
height: height,
|
||||
child: Column(
|
||||
children: [
|
||||
GridView.builder(
|
||||
physics: const NeverScrollableScrollPhysics(),
|
||||
itemCount: options.length,
|
||||
shrinkWrap: shrinkwrap,
|
||||
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
|
||||
mainAxisExtent: mainAxisExtent,
|
||||
childAspectRatio: childAspectRatio,
|
||||
mainAxisSpacing: mainAxisSpacing,
|
||||
crossAxisSpacing: crossAxisSpacing,
|
||||
crossAxisCount: crossAxisCount,
|
||||
),
|
||||
itemBuilder: (context, index) => ListenableBuilder(
|
||||
listenable: selectedIndex,
|
||||
builder: (context, widget) => builder.call(
|
||||
context,
|
||||
index,
|
||||
selectedIndex,
|
||||
controller,
|
||||
options,
|
||||
state,
|
||||
),
|
||||
),
|
||||
),
|
||||
if (state.hasError)
|
||||
Text(
|
||||
state.errorText!,
|
||||
style: const TextStyle(
|
||||
color: Color(0xFFAD3645),
|
||||
fontSize: 14.0,
|
||||
fontWeight: FontWeight.bold,
|
||||
),
|
||||
)
|
||||
else
|
||||
const SizedBox.shrink(),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class FlutterFormInputMultipleChoiceController
|
||||
implements FlutterFormInputController<String> {
|
||||
/// Creates a [FlutterFormInputMultipleChoiceController].
|
||||
///
|
||||
/// The [id] parameter specifies the unique identifier for the controller.
|
||||
/// The [mandatory] parameter specifies whether the input is mandatory.
|
||||
/// The [value], [checkPageTitle], [checkPageDescription], [onChanged],
|
||||
/// and [onSubmit] parameters are optional.
|
||||
FlutterFormInputMultipleChoiceController({
|
||||
required this.id,
|
||||
this.mandatory = false,
|
||||
this.value,
|
||||
this.checkPageTitle,
|
||||
this.checkPageDescription,
|
||||
this.onChanged,
|
||||
this.onSubmit,
|
||||
});
|
||||
|
||||
@override
|
||||
String? id;
|
||||
|
||||
@override
|
||||
String? value;
|
||||
|
||||
@override
|
||||
bool mandatory;
|
||||
|
||||
@override
|
||||
String Function(String? value)? checkPageTitle;
|
||||
|
||||
@override
|
||||
String Function(String? value)? checkPageDescription;
|
||||
|
||||
@override
|
||||
void Function(String? value)? onChanged;
|
||||
|
||||
@override
|
||||
void Function(String? value)? onSubmit;
|
||||
|
||||
@override
|
||||
void onSaved(String? value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
@override
|
||||
String? onValidate(
|
||||
String? value,
|
||||
String validationMessage,
|
||||
) {
|
||||
if (mandatory) {
|
||||
if (value == null || value.isEmpty) {
|
||||
return validationMessage;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -22,7 +22,6 @@ import 'package:flutter/material.dart';
|
|||
///
|
||||
/// [onFinished] and [onNext] are both callbacks which give the users results.
|
||||
/// [onNext] is called when the user goes to the next page.
|
||||
/// [onBack] is called when the user goes back a page.
|
||||
/// [onFinished] is called when the form is finished. When checkpage is set
|
||||
/// [onFinished] is called when the checkpage is finished.
|
||||
///
|
||||
|
@ -36,7 +35,6 @@ class FlutterFormOptions {
|
|||
required this.pages,
|
||||
required this.onFinished,
|
||||
required this.onNext,
|
||||
this.onBack,
|
||||
this.checkPage,
|
||||
this.nextButton,
|
||||
this.backButton,
|
||||
|
@ -51,11 +49,6 @@ class FlutterFormOptions {
|
|||
backButton;
|
||||
final void Function(Map<int, Map<String, dynamic>>) onFinished;
|
||||
final void Function(int pageNumber, Map<String, dynamic>) onNext;
|
||||
|
||||
/// [onBack] is called when the user goes back a page. The [pageNumber] is the
|
||||
/// page the user is going back to. Not the page that the user was on when the
|
||||
/// user pressed the back button.
|
||||
final void Function(int pageNumber)? onBack;
|
||||
final Axis scrollDirection;
|
||||
final ScrollPhysics? scrollPhysics;
|
||||
}
|
||||
|
|
14
pubspec.yaml
14
pubspec.yaml
|
@ -1,12 +1,12 @@
|
|||
name: flutter_form_wizard
|
||||
description: A new Flutter package project.
|
||||
version: 6.6.0
|
||||
version: 6.3.1
|
||||
homepage: https://github.com/Iconica-Development/flutter_form_wizard
|
||||
|
||||
publish_to: https://forgejo.internal.iconica.nl/api/packages/internal/pub
|
||||
publish_to: none
|
||||
|
||||
environment:
|
||||
sdk: ">=3.0.0 <4.0.0"
|
||||
sdk: ">=2.18.0 <3.0.0"
|
||||
flutter: ">=1.17.0"
|
||||
|
||||
dependencies:
|
||||
|
@ -14,10 +14,11 @@ dependencies:
|
|||
sdk: flutter
|
||||
flutter_localizations:
|
||||
sdk: flutter
|
||||
intl: ">=0.18.0 <1.0.0"
|
||||
intl: ^0.18.0
|
||||
flutter_input_library:
|
||||
hosted: https://forgejo.internal.iconica.nl/api/packages/internal/pub
|
||||
version: ^3.4.0
|
||||
git:
|
||||
url: https://github.com/Iconica-Development/flutter_input_library
|
||||
ref: 3.2.1
|
||||
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
|
@ -27,3 +28,4 @@ dev_dependencies:
|
|||
url: https://github.com/Iconica-Development/flutter_iconica_analysis
|
||||
ref: 6.0.0
|
||||
|
||||
flutter:
|
||||
|
|
Loading…
Reference in a new issue