useTextFormValidator<T> function

T useTextFormValidator<T>({
  1. required Validator validator,
  2. required TextEditingController controller,
  3. required T initialValue,
})

Each time given state changes - validator function is invoked.

Implementation

T useTextFormValidator<T>({
  required Validator validator,
  required TextEditingController controller,
  required T initialValue,
}) {
  final state = useState(initialValue);

  final validate = useCallback(() {
    state.value = validator(controller.value.text);
  }, [controller]);

  useEffect(() {
    controller.addListener(validate);
    return () => controller.removeListener(validate);
  }, [controller]);

  return state.value;
}