mirror of
https://github.com/Iconica-Development/flutter_form_wizard.git
synced 2025-05-19 19:03:47 +02:00
Merge pull request #10 from Iconica-Development/feature/id_and_onsubmit
feat: Multiple features added
This commit is contained in:
commit
39a09251c6
15 changed files with 53 additions and 5 deletions
|
@ -25,3 +25,8 @@
|
|||
## 1.0.2 - October 13th 2022
|
||||
|
||||
- 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.
|
||||
|
|
|
@ -24,7 +24,7 @@ class CheckPageExample {
|
|||
),
|
||||
),
|
||||
inputCheckWidget:
|
||||
(String title, String? description, Function onPressed) {
|
||||
(String id, String title, String? description, Function onPressed) {
|
||||
return GestureDetector(
|
||||
onTap: () async {
|
||||
await onPressed();
|
||||
|
|
|
@ -321,6 +321,7 @@ class _FlutterFormState extends ConsumerState<FlutterForm> {
|
|||
if (widget.options.checkPage!.inputCheckWidget != null) {
|
||||
widgets.add(
|
||||
widget.options.checkPage!.inputCheckWidget!(
|
||||
inputController.id ?? '',
|
||||
inputController.checkPageTitle != null
|
||||
? inputController.checkPageTitle!(inputController.value)
|
||||
: inputController.value.toString(),
|
||||
|
|
|
@ -58,6 +58,8 @@ abstract class FlutterFormInputWidget<T> extends ConsumerWidget {
|
|||
///
|
||||
/// [onChanged] can be set to get the value whenever the user changes it. Should not be used to save the value.
|
||||
///
|
||||
/// [onSubmit] can be set to get the value whenever the user submits it. Should not be used to save the value.
|
||||
///
|
||||
/// [onSaved] goes of when the save function is called for the page if [onValidate] return null.
|
||||
///
|
||||
/// [onValidate] is used to validate the given input by the user.
|
||||
|
@ -89,6 +91,9 @@ abstract class FlutterFormInputController<T> {
|
|||
/// [onChanged] can be set to get the value whenever the user changes it. Should not be used to save the value.
|
||||
void Function(T? value)? onChanged;
|
||||
|
||||
/// [onSubmit] can be set to get the value whenever the user submits it. Should not be used to save the value.
|
||||
void Function(T? value)? onSubmit;
|
||||
|
||||
/// [onSaved] goes of when the save function is called for the page if [onValidate] return null.
|
||||
void onSaved(T? value);
|
||||
|
||||
|
|
|
@ -7,9 +7,11 @@ class CarouselFormField extends FormField<int> {
|
|||
required FormFieldSetter<int> onSaved,
|
||||
required FormFieldValidator<int> validator,
|
||||
void Function(int value)? onChanged,
|
||||
void Function(int value)? onSubmit,
|
||||
int initialValue = 0,
|
||||
bool autovalidate = false,
|
||||
required List<Widget> items,
|
||||
double height = 425,
|
||||
}) : super(
|
||||
key: key,
|
||||
onSaved: onSaved,
|
||||
|
@ -24,7 +26,7 @@ class CarouselFormField extends FormField<int> {
|
|||
|
||||
state.didChange(index);
|
||||
},
|
||||
height: 425,
|
||||
height: height,
|
||||
aspectRatio: 2.0,
|
||||
enlargeCenterPage: true,
|
||||
enableInfiniteScroll: false,
|
||||
|
|
|
@ -10,15 +10,19 @@ import 'carousel_form.dart';
|
|||
/// [items] will be the [Widget]s to be displayed in the carousel.
|
||||
///
|
||||
/// Standard controller is [FlutterFormInputCarouselController].
|
||||
///
|
||||
/// Height sets the height of the inputfield. Default to 425.
|
||||
class FlutterFormInputCarousel extends FlutterFormInputWidget<int> {
|
||||
const FlutterFormInputCarousel({
|
||||
Key? key,
|
||||
required FlutterFormInputController<int> controller,
|
||||
Widget? label,
|
||||
required this.items,
|
||||
this.height = 425,
|
||||
}) : super(key: key, controller: controller, label: label);
|
||||
|
||||
final List<Widget> items;
|
||||
final double height;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
|
@ -33,6 +37,7 @@ class FlutterFormInputCarousel extends FlutterFormInputWidget<int> {
|
|||
onChanged: controller.onChanged,
|
||||
initialValue: controller.value ?? 0,
|
||||
items: items,
|
||||
height: height,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -69,6 +74,9 @@ class FlutterFormInputCarouselController
|
|||
@override
|
||||
void Function(int? value)? onChanged;
|
||||
|
||||
@override
|
||||
void Function(int? value)? onSubmit;
|
||||
|
||||
@override
|
||||
void onSaved(int? value) {
|
||||
this.value = value;
|
||||
|
|
|
@ -105,6 +105,9 @@ class FlutterFormInputDateTimeController
|
|||
@override
|
||||
void Function(String? value)? onChanged;
|
||||
|
||||
@override
|
||||
void Function(String? value)? onSubmit;
|
||||
|
||||
@override
|
||||
void onSaved(dynamic value) {
|
||||
this.value = value;
|
||||
|
|
|
@ -52,6 +52,7 @@ class FlutterFormInputEmailController
|
|||
this.checkPageTitle,
|
||||
this.checkPageDescription,
|
||||
this.onChanged,
|
||||
this.onSubmit,
|
||||
});
|
||||
|
||||
@override
|
||||
|
@ -72,6 +73,9 @@ class FlutterFormInputEmailController
|
|||
@override
|
||||
void Function(String? value)? onChanged;
|
||||
|
||||
@override
|
||||
void Function(String? value)? onSubmit;
|
||||
|
||||
@override
|
||||
void onSaved(dynamic value) {
|
||||
this.value = value;
|
||||
|
|
|
@ -105,6 +105,9 @@ class FlutterFormInputNumberPickerController
|
|||
@override
|
||||
void Function(int? value)? onChanged;
|
||||
|
||||
@override
|
||||
void Function(int? value)? onSubmit;
|
||||
|
||||
@override
|
||||
void onSaved(int? value) {
|
||||
this.value = value;
|
||||
|
|
|
@ -36,6 +36,7 @@ class FlutterFormInputPasswordController
|
|||
this.checkPageTitle,
|
||||
this.checkPageDescription,
|
||||
this.onChanged,
|
||||
this.onSubmit,
|
||||
});
|
||||
|
||||
@override
|
||||
|
@ -56,6 +57,9 @@ class FlutterFormInputPasswordController
|
|||
@override
|
||||
void Function(String? value)? onChanged;
|
||||
|
||||
@override
|
||||
void Function(String? value)? onSubmit;
|
||||
|
||||
@override
|
||||
void onSaved(dynamic value) {
|
||||
this.value = value;
|
||||
|
|
|
@ -33,6 +33,7 @@ class _PasswordTextFieldState extends ConsumerState<PasswordTextField> {
|
|||
onSaved: (value) => widget.controller.onSaved(value),
|
||||
validator: (value) => widget.controller.onValidate(value, _),
|
||||
onChanged: (value) => widget.controller.onChanged?.call(value),
|
||||
onFieldSubmitted: (value) => widget.controller.onSubmit?.call(value),
|
||||
decoration: InputDecoration(
|
||||
label: widget.label ?? const Text("Password"),
|
||||
suffixIcon: IconButton(
|
||||
|
|
|
@ -15,7 +15,7 @@ class FlutterFormInputPlainText extends FlutterFormInputWidget<String> {
|
|||
this.decoration,
|
||||
this.textAlignVertical,
|
||||
this.expands = false,
|
||||
this.maxLines,
|
||||
this.maxLines = 1,
|
||||
this.scrollPadding,
|
||||
this.maxLength,
|
||||
}) : super(key: key, controller: controller, label: label);
|
||||
|
@ -45,6 +45,7 @@ class FlutterFormInputPlainText extends FlutterFormInputWidget<String> {
|
|||
onSaved: (value) => controller.onSaved(value),
|
||||
validator: (value) => controller.onValidate(value, _),
|
||||
onChanged: (value) => controller.onChanged?.call(value),
|
||||
onFieldSubmitted: (value) => controller.onSubmit?.call(value),
|
||||
decoration: inputDecoration,
|
||||
textAlignVertical: textAlignVertical,
|
||||
expands: expands,
|
||||
|
@ -119,6 +120,7 @@ class FlutterFormInputPlainTextController
|
|||
this.checkPageTitle,
|
||||
this.checkPageDescription,
|
||||
this.onChanged,
|
||||
this.onSubmit,
|
||||
});
|
||||
|
||||
@override
|
||||
|
@ -139,6 +141,9 @@ class FlutterFormInputPlainTextController
|
|||
@override
|
||||
void Function(String? value)? onChanged;
|
||||
|
||||
@override
|
||||
void Function(String? value)? onSubmit;
|
||||
|
||||
@override
|
||||
void onSaved(String? value) {
|
||||
this.value = value;
|
||||
|
|
|
@ -67,6 +67,9 @@ class FlutterFormInputSliderController
|
|||
@override
|
||||
void Function(double? value)? onChanged;
|
||||
|
||||
@override
|
||||
void Function(double? value)? onSubmit;
|
||||
|
||||
@override
|
||||
void onSaved(double? value) {
|
||||
this.value = value;
|
||||
|
|
|
@ -63,6 +63,9 @@ class FlutterFormInputSwitchController
|
|||
@override
|
||||
void Function(bool? value)? onChanged;
|
||||
|
||||
@override
|
||||
void Function(bool? value)? onSubmit;
|
||||
|
||||
@override
|
||||
void onSaved(bool? value) {
|
||||
this.value = value;
|
||||
|
|
|
@ -69,7 +69,8 @@ class FlutterFormPage {
|
|||
class CheckPage {
|
||||
final Widget? title;
|
||||
final MainAxisAlignment mainAxisAlignment;
|
||||
final Widget Function(String title, String? description, Function onPressed)?
|
||||
final Widget Function(
|
||||
String id, String title, String? description, Function onPressed)?
|
||||
inputCheckWidget;
|
||||
|
||||
const CheckPage({
|
||||
|
|
Loading…
Reference in a new issue