zxcvbnm111
zxcvbnm111

Reputation: 11

Issue with Text-Form-Field in Flutter

I want to change value input without typing. Example, I have two Text-Form-Field then I want when I type 1 in Text-Form-Field #1 so the value display in Text-Form-Field #2 is 2. I want to value change depend on value in other input then display it.

I am trying but not work. So how to solve this problem. Please help me !!!!!!!!!

Update: I solved this problem. Thank for everyone !!!

Upvotes: -1

Views: 120

Answers (3)

ALPESH SHIYAL
ALPESH SHIYAL

Reputation: 1

You can simply implement this with assigning same textEditingController to the both textFormField widget as below

class TextFormFieldDemo extends StatefulWidget {
          const TextFormFieldDemo({super.key});
        
          @override
          State<TextFormFieldDemo> createState() => _TextFormFieldDemoState();
}
        
class _TextFormFieldDemoState extends State<TextFormFieldDemo> {
          late final TextEditingController textFieldController=TextEditingController();
        
          @override
          Widget build(BuildContext context) {
            return Scaffold(
              appBar: AppBar(),
              body: Column(
                children: [
                  TextFormField(
                    controller: textFieldController,
                  ),
                  const SizedBox(height: 10),
                  TextFormField(
                    controller: textFieldController,
                  )
                ],
              ),
            );
          }
        }

Upvotes: 0

Sami
Sami

Reputation: 126

For this task, using the TextEditingController along with the onChanged callback function of the TextFormField is recommended. The following example provides a clear illustration of the desired approach.

class TextFormFieldDemo extends StatefulWidget {
  const TextFormFieldDemo({super.key});

  @override
  State<TextFormFieldDemo> createState() => _TextFormFieldDemoState();
}

class _TextFormFieldDemoState extends State<TextFormFieldDemo> {
  late final TextEditingController textField1Controller;
  late final TextEditingController textField2Controller;

  @override
  void initState() {
    super.initState();
    textField1Controller = TextEditingController();
    textField2Controller = TextEditingController();
  }

  @override
  void dispose() {
    textField1Controller.dispose();
    textField2Controller.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: Column(
        children: [
          TextFormField(
            controller: textField1Controller,
            onChanged: (value) {
              final double? val = double.tryParse(value);
              if (val != null) {
                textField2Controller.text = (val + 1).toString();
              }
            },
          ),
          const SizedBox(height: 12),
          TextFormField(
            controller: textField2Controller,
          )
        ],
      ),
    );
  }
}

Upvotes: 0

Nidhi Jain
Nidhi Jain

Reputation: 285

You can update value of text field 2 in onChanged method of text field 1.

Example:-

TextFormField(
                controller: textController1,
                onChanged: (String? value){
                  textController2.text="new value";
                },
              ),

Upvotes: 0

Related Questions