FormeCupertinoTimerField constructor

FormeCupertinoTimerField({
  1. Duration? initialValue,
  2. required String name,
  3. bool readOnly = false,
  4. FormeCupertinoTimerFieldModel? model,
  5. Key? key,
  6. FormeDecoratorBuilder<Duration?>? decoratorBuilder,
  7. int? maxLines = 1,
  8. FormeValueFieldListener<Duration?, FormeValueFieldController<Duration?, FormeCupertinoTimerFieldModel>>? listener,
  9. int? order,
  10. bool quietlyValidate = false,
})

Implementation

FormeCupertinoTimerField({
  Duration? initialValue,
  required String name,
  bool readOnly = false,
  FormeCupertinoTimerFieldModel? model,
  Key? key,
  FormeDecoratorBuilder<Duration?>? decoratorBuilder,
  int? maxLines = 1,
  FormeValueFieldListener<
          Duration?,
          FormeValueFieldController<Duration?,
              FormeCupertinoTimerFieldModel>>?
      listener,
  int? order,
  bool quietlyValidate = false,
}) : super(
        quietlyValidate: quietlyValidate,
        listener: listener,
        decoratorBuilder: decoratorBuilder,
        key: key,
        model: (model ?? FormeCupertinoTimerFieldModel()).copyWith(
          FormeCupertinoTimerFieldModel(
            textFieldModel: FormeCupertinoTextFieldModel(
              maxLines: maxLines,
            ),
          ),
        ),
        name: name,
        initialValue: initialValue,
        builder: (state) {
          bool readOnly = state.readOnly;
          FocusNode focusNode = state.focusNode;
          TextEditingController textEditingController =
              (state as _FormeCupertinoTimerFieldState).textEditingController;

          void pickDuration() {
            state.duration = null;
            FormeCupertinos.showFormeCupertinoModalPopup(
              context: state.context,
              data: state.model.modelPopupData,
              builder: (context) {
                return Container(
                  color: CupertinoColors.systemBackground,
                  child: Wrap(children: [
                    Row(
                      mainAxisAlignment: MainAxisAlignment.end,
                      children: [
                        CupertinoButton(
                          onPressed: () {
                            if (state.duration == null) {
                              if (state.value == null) {
                                state.didChange(Duration.zero);
                              }
                            } else {
                              state.didChange(state.duration);
                            }
                            state.duration = null;
                            Navigator.of(context).pop();
                          },
                          child: (state.model.confirmWidget ??
                              const Icon(
                                CupertinoIcons.check_mark,
                              )),
                        ),
                      ],
                    ),
                    CupertinoTimerPicker(
                      minuteInterval: state.model.minuteInterval ?? 1,
                      secondInterval: state.model.secondInterval ?? 1,
                      backgroundColor: state.model.backgroundColor,
                      alignment: state.model.alignment ?? Alignment.center,
                      initialTimerDuration: state.value ?? Duration.zero,
                      mode: state.mode,
                      onTimerDurationChanged: (Duration changedtimer) {
                        state.duration = changedtimer;
                      },
                    ),
                  ]),
                );
              },
            ).whenComplete(() => state.requestFocus());
          }

          return FormeCupertinos.cupertinoTextField(
              textEditingController: textEditingController,
              focusNode: focusNode,
              model: FormeCupertinoTextFieldModel(
                inputFormatters: [],
                onTap: readOnly ? () {} : pickDuration,
                readOnly: true,
              ).copyWith(state.model.textFieldModel ??
                  FormeCupertinoTextFieldModel()));
        },
      );