0

I want to use useEffect with TextEditingController instead of useTextEditingController.

Error: late Initialization Error. Am I not writing init and disposing correctly?

class EffectTest extends HookWidget {
  const EffectTest({super.key});

  @override
  Widget build(BuildContext context) {
    late TextEditingController controller;

    useEffect(
      () {
        controller = TextEditingController();

        return () {
          controller.clear();
        };
      },
      [],
    );

    return MaterialApp(
      home: Scaffold(
        body: Column(
          children: [
            Text(controller.value.text),
            TextField(
              controller: controller,
              onSubmitted: (value) {
                print(controller.value.text);
              },
            ),
          ],
        ),
      ),
    );
  }
}

Anmol Singh
  • 393
  • 3
  • 16

1 Answers1

0
final TextEditingController controller = useTextEditingController();

flutter hooks will handle everything, you do not have to initialize it in useEffect.

ibrahim Eltayfe
  • 118
  • 2
  • 5