useSyncedTextEditingController function

TextEditingController useSyncedTextEditingController(
  1. void onChanged(
    1. TextEditingValue value
    ), {
  2. String? initialText,
})

A wrapper around useTextEditingController that makes it easier to add onChanged callback to TextEditingController.

Implementation

TextEditingController useSyncedTextEditingController(
  void Function(TextEditingValue value) onChanged, {
  String? initialText,
}) {
  final controller = useTextEditingController(text: initialText);

  useEffect(
    () {
      void listener() => onChanged(controller.value);

      controller.addListener(listener);
      return () => controller.removeListener(listener);
    },
    [controller, onChanged],
  );

  return controller;
}