From 09a1171e8b107849f12ee2628d9688cd892e225b Mon Sep 17 00:00:00 2001 From: Thomas Klein Langenhorst Date: Thu, 12 Jan 2023 14:12:45 +0100 Subject: [PATCH] Add FocusNode option to inputs --- CHANGELOG.md | 6 +++++- example/pubspec.lock | 8 ++++---- lib/src/widgets/input/abstractions.dart | 3 +++ lib/src/widgets/input/input_types/input_email.dart | 3 +++ .../input_number_picker/input_number_picker.dart | 1 + .../input/input_types/input_password/input_password.dart | 8 +++++++- lib/src/widgets/input/input_types/input_plain_text.dart | 8 +++++++- .../input/input_types/input_slider/input_slider.dart | 8 +++++++- .../input/input_types/input_switch/input_switch.dart | 8 +++++++- pubspec.yaml | 2 +- 10 files changed, 45 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 77652b0..c7405e9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -46,4 +46,8 @@ ## 5.0.0 - November 29th 2022 -- `flutter_input_library` now enforces 24h time requirements \ No newline at end of file +- `flutter_input_library` now enforces 24h time requirements + +## 5.0.3 - January 12th 2023 + +- Add FocusNode option to inputs \ No newline at end of file diff --git a/example/pubspec.lock b/example/pubspec.lock index 528aab9..b130853 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -61,16 +61,16 @@ packages: path: ".." relative: true source: path - version: "5.0.1" + version: "5.0.2" flutter_input_library: dependency: transitive description: path: "." - ref: "1.0.1" - resolved-ref: "5afec9410503358c354d9324666a4eb11acbedb2" + ref: "1.0.2" + resolved-ref: ab6d840c0d326b1b1d5f738b2c7360a841d01015 url: "https://github.com/Iconica-Development/flutter_input_library" source: git - version: "1.0.0" + version: "1.0.2" flutter_lints: dependency: "direct dev" description: diff --git a/lib/src/widgets/input/abstractions.dart b/lib/src/widgets/input/abstractions.dart index ec00517..9cc1132 100644 --- a/lib/src/widgets/input/abstractions.dart +++ b/lib/src/widgets/input/abstractions.dart @@ -18,6 +18,7 @@ abstract class FlutterFormInputWidget extends ConsumerWidget { const FlutterFormInputWidget({ Key? key, required this.controller, + this.focusNode, this.label, String? hintText, }) : super(key: key); @@ -28,6 +29,8 @@ abstract class FlutterFormInputWidget extends ConsumerWidget { /// [label] is a standard parameter to normally sets the label of the input. final Widget? label; + final FocusNode? focusNode; + /// [registerController] should be called to register the given [controller] to the form page. registerController(BuildContext context) { FlutterFormInputController? localController = diff --git a/lib/src/widgets/input/input_types/input_email.dart b/lib/src/widgets/input/input_types/input_email.dart index 1a95943..a74115f 100644 --- a/lib/src/widgets/input/input_types/input_email.dart +++ b/lib/src/widgets/input/input_types/input_email.dart @@ -16,10 +16,12 @@ class FlutterFormInputEmail extends FlutterFormInputWidget { const FlutterFormInputEmail({ Key? key, required FlutterFormInputController controller, + FocusNode? focusNode, Widget? label, }) : super( key: key, controller: controller, + focusNode: focusNode, label: label, ); @@ -35,6 +37,7 @@ class FlutterFormInputEmail extends FlutterFormInputWidget { onSaved: (value) { controller.onSaved(value); }, + focusNode: focusNode, validator: (value) => controller.onValidate(value, _), onChanged: (value) => controller.onChanged?.call(value), decoration: InputDecoration( diff --git a/lib/src/widgets/input/input_types/input_number_picker/input_number_picker.dart b/lib/src/widgets/input/input_types/input_number_picker/input_number_picker.dart index f7b3a1c..ef024d3 100644 --- a/lib/src/widgets/input/input_types/input_number_picker/input_number_picker.dart +++ b/lib/src/widgets/input/input_types/input_number_picker/input_number_picker.dart @@ -19,6 +19,7 @@ class FlutterFormInputNumberPicker extends FlutterFormInputWidget { Key? key, required FlutterFormInputController controller, Widget? label, + FocusNode? focusNode, this.minValue = 0, this.maxValue = 100, }) : assert(minValue < maxValue), diff --git a/lib/src/widgets/input/input_types/input_password/input_password.dart b/lib/src/widgets/input/input_types/input_password/input_password.dart index edf837c..cafce58 100644 --- a/lib/src/widgets/input/input_types/input_password/input_password.dart +++ b/lib/src/widgets/input/input_types/input_password/input_password.dart @@ -15,8 +15,13 @@ class FlutterFormInputPassword extends FlutterFormInputWidget { const FlutterFormInputPassword({ Key? key, required FlutterFormInputController controller, + FocusNode? focusNode, Widget? label, - }) : super(key: key, controller: controller, label: label); + }) : super( + key: key, + controller: controller, + focusNode: focusNode, + label: label); @override Widget build(BuildContext context, WidgetRef ref) { @@ -27,6 +32,7 @@ class FlutterFormInputPassword extends FlutterFormInputWidget { return input.FlutterFormInputPassword( initialValue: controller.value, + focusNode: focusNode, onSaved: (value) => controller.onSaved(value), validator: (value) => controller.onValidate(value, _), onChanged: (value) => controller.onChanged?.call(value), diff --git a/lib/src/widgets/input/input_types/input_plain_text.dart b/lib/src/widgets/input/input_types/input_plain_text.dart index 3768352..b573992 100644 --- a/lib/src/widgets/input/input_types/input_plain_text.dart +++ b/lib/src/widgets/input/input_types/input_plain_text.dart @@ -16,6 +16,7 @@ class FlutterFormInputPlainText extends FlutterFormInputWidget { const FlutterFormInputPlainText({ Key? key, required FlutterFormInputController controller, + FocusNode? focusNode, Widget? label, this.decoration, this.textAlignVertical, @@ -24,7 +25,11 @@ class FlutterFormInputPlainText extends FlutterFormInputWidget { this.scrollPadding, this.maxLength, this.keyboardType, - }) : super(key: key, controller: controller, label: label); + }) : super( + key: key, + controller: controller, + focusNode: focusNode, + label: label); final InputDecoration? decoration; final TextAlignVertical? textAlignVertical; @@ -49,6 +54,7 @@ class FlutterFormInputPlainText extends FlutterFormInputWidget { return input.FlutterFormInputPlainText( scrollPadding: scrollPadding ?? const EdgeInsets.all(20.0), initialValue: controller.value, + focusNode: focusNode, onSaved: (value) => controller.onSaved(value), validator: (value) => controller.onValidate(value, _), onChanged: (value) => controller.onChanged?.call(value), diff --git a/lib/src/widgets/input/input_types/input_slider/input_slider.dart b/lib/src/widgets/input/input_types/input_slider/input_slider.dart index 6128c50..ec0d7ec 100644 --- a/lib/src/widgets/input/input_types/input_slider/input_slider.dart +++ b/lib/src/widgets/input/input_types/input_slider/input_slider.dart @@ -16,11 +16,16 @@ class FlutterFormInputSlider extends FlutterFormInputWidget { const FlutterFormInputSlider({ Key? key, required FlutterFormInputController controller, + FocusNode? focusNode, Widget? label, this.minValue = 0, this.maxValue = 100, }) : assert(minValue < maxValue), - super(key: key, controller: controller, label: label); + super( + key: key, + controller: controller, + focusNode: focusNode, + label: label); final int minValue; final int maxValue; @@ -33,6 +38,7 @@ class FlutterFormInputSlider extends FlutterFormInputWidget { super.registerController(context); return input.FlutterFormInputSlider( + focusNode: focusNode, onSaved: (value) => controller.onSaved(value), validator: (value) => controller.onValidate(value, _), ); diff --git a/lib/src/widgets/input/input_types/input_switch/input_switch.dart b/lib/src/widgets/input/input_types/input_switch/input_switch.dart index f9002c5..a2c0789 100644 --- a/lib/src/widgets/input/input_types/input_switch/input_switch.dart +++ b/lib/src/widgets/input/input_types/input_switch/input_switch.dart @@ -15,8 +15,13 @@ class FlutterFormInputSwitch extends FlutterFormInputWidget { const FlutterFormInputSwitch({ Key? key, required FlutterFormInputController controller, + FocusNode? focusNode, Widget? label, - }) : super(key: key, controller: controller, label: label); + }) : super( + key: key, + controller: controller, + focusNode: focusNode, + label: label); @override Widget build(BuildContext context, WidgetRef ref) { @@ -26,6 +31,7 @@ class FlutterFormInputSwitch extends FlutterFormInputWidget { super.registerController(context); return input.FlutterFormInputSwitch( + focusNode: focusNode, onSaved: (value) => controller.onSaved(value), onChanged: controller.onChanged, validator: (value) => controller.onValidate(value, _), diff --git a/pubspec.yaml b/pubspec.yaml index 05a82c0..6566d5d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: flutter_form_wizard description: A new Flutter package project. -version: 5.0.2 +version: 5.0.3 homepage: https://github.com/Iconica-Development/flutter_form_wizard publish_to: none