2022-11-29 13:16:44 +01:00
|
|
|
// SPDX-FileCopyrightText: 2022 Iconica
|
|
|
|
//
|
|
|
|
// SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
|
2024-08-07 10:38:33 +02:00
|
|
|
import "package:flutter/material.dart";
|
2022-11-29 13:16:44 +01:00
|
|
|
|
2024-08-07 10:38:33 +02:00
|
|
|
import "package:flutter_input_library/src/inputs/number_picker/number_picker_field.dart";
|
2022-11-29 13:16:44 +01:00
|
|
|
|
2023-03-26 12:16:25 +02:00
|
|
|
class FlutterFormInputNumberPicker extends StatelessWidget {
|
2022-11-29 13:16:44 +01:00
|
|
|
const FlutterFormInputNumberPicker({
|
2024-02-02 11:48:45 +01:00
|
|
|
super.key,
|
2022-11-29 13:16:44 +01:00
|
|
|
this.minValue = 0,
|
|
|
|
this.maxValue = 100,
|
|
|
|
this.onSaved,
|
|
|
|
this.onChanged,
|
|
|
|
this.initialValue,
|
|
|
|
this.validator,
|
2024-04-25 08:39:37 +02:00
|
|
|
this.axis = Axis.vertical,
|
2024-08-07 10:38:33 +02:00
|
|
|
}) : assert(minValue < maxValue, "minValue must be less than maxValue");
|
2022-11-29 13:16:44 +01:00
|
|
|
|
|
|
|
final int minValue;
|
|
|
|
final int maxValue;
|
|
|
|
final Function(int?)? onSaved;
|
2022-11-29 13:37:58 +01:00
|
|
|
final String? Function(int?)? validator;
|
2022-11-29 13:16:44 +01:00
|
|
|
final int? initialValue;
|
|
|
|
final Function(int?)? onChanged;
|
2024-04-25 08:39:37 +02:00
|
|
|
final Axis axis;
|
2022-11-29 13:16:44 +01:00
|
|
|
|
|
|
|
@override
|
2024-02-02 11:48:45 +01:00
|
|
|
Widget build(BuildContext context) => NumberPickerFormField(
|
|
|
|
minValue: minValue,
|
|
|
|
maxValue: maxValue,
|
|
|
|
onSaved: (value) => onSaved?.call(value),
|
|
|
|
validator: (value) => validator?.call(value),
|
|
|
|
onChanged: (value) => onChanged?.call(value),
|
|
|
|
initialValue: initialValue ?? 0,
|
2024-04-25 08:39:37 +02:00
|
|
|
axis: axis,
|
2024-02-02 11:48:45 +01:00
|
|
|
);
|
2022-11-29 13:16:44 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
class NumberPickerFormField extends FormField<int> {
|
|
|
|
NumberPickerFormField({
|
2024-02-02 11:48:45 +01:00
|
|
|
required FormFieldSetter<int> super.onSaved,
|
|
|
|
required FormFieldValidator<int> super.validator,
|
|
|
|
super.key,
|
2022-11-29 13:16:44 +01:00
|
|
|
void Function(int value)? onChanged,
|
2024-02-02 11:48:45 +01:00
|
|
|
int super.initialValue = 0,
|
2022-11-29 13:16:44 +01:00
|
|
|
int minValue = 0,
|
|
|
|
int maxValue = 100,
|
2024-04-25 08:39:37 +02:00
|
|
|
Axis axis = Axis.vertical,
|
2022-11-29 13:16:44 +01:00
|
|
|
}) : super(
|
2024-02-02 11:48:45 +01:00
|
|
|
builder: (FormFieldState<int> state) => NumberPicker(
|
|
|
|
minValue: minValue,
|
|
|
|
maxValue: maxValue,
|
|
|
|
value: initialValue,
|
|
|
|
onChanged: (int value) {
|
|
|
|
onChanged?.call(value);
|
2022-11-29 13:16:44 +01:00
|
|
|
|
2024-02-02 11:48:45 +01:00
|
|
|
state.didChange(value);
|
|
|
|
},
|
|
|
|
itemHeight: 35,
|
2024-04-25 08:39:37 +02:00
|
|
|
itemWidth: 35,
|
2024-02-02 11:48:45 +01:00
|
|
|
itemCount: 5,
|
2024-04-25 08:39:37 +02:00
|
|
|
axis: axis,
|
2024-02-02 11:48:45 +01:00
|
|
|
),
|
|
|
|
);
|
2022-11-29 13:16:44 +01:00
|
|
|
}
|