Flutter中的文本形式场问题

5cnsuln7  于 2023-08-07  发布在  Flutter
关注(0)|答案(3)|浏览(139)

我想在不键入的情况下更改值输入。例如,我有两个文本表单字段,当我在文本表单字段#1中键入1时,我希望文本表单字段#2中显示的值为2。我想改变值取决于其他输入值,然后显示它。
我在努力,但没有工作。那么如何解决这个问题。请帮帮我!!!!!!!!!
更新:我解决了这个问题。谢谢大家!!!

5m1hhzi4

5m1hhzi41#

对于此任务,建议使用TextEditingController沿着TextFormField的onChanged回调函数。下面的示例清楚地说明了所需的方法。

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,
          )
        ],
      ),
    );
  }
}

字符串

ljo96ir5

ljo96ir52#

您可以简单地实现这一点,将相同的textEditingController分配给两个textFormField小部件,如下所示

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,
                  )
                ],
              ),
            );
          }
        }

字符串

p1tboqfb

p1tboqfb3#

您可以在文本字段1的onChanged方法中更新文本字段2的值。
示例:-

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

字符串

相关问题