更新 TextEditingController 文本时应用程序关闭

问题描述 投票:0回答:1

当用户选择向发票中添加的产品时,会出现一个包含数量 TextField 的警告对话框,以便他可以更改产品所需的数量,在 TextFormFiels 中手动更改数量效果很好,但使用减号按钮更改数量会使应用程序关闭,控制台中的唯一消息是:与设备的连接丢失。

class InputNumberAlertDialog extends StatefulWidget {
  const InputNumberAlertDialog(
      {super.key, this.title, this.subTitle, this.initialValue});

  final String? title;
  final String? subTitle;
  final double? initialValue;

  @override
  State<InputNumberAlertDialog> createState() => _InputNumberAlertDialogState();
}

class _InputNumberAlertDialogState extends State<InputNumberAlertDialog> {
  double val = 0;
  final TextEditingController _controller = TextEditingController();

  @override
  void initState() {
    val = widget.initialValue ?? 0;
    _controller.text = val.toString();
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return AlertDialog(
      title: Text("${widget.title}"),
      content: Column(
        mainAxisSize: MainAxisSize.min,
        children: [
          Text(widget.subTitle ?? ""),
          TextFormField(
            controller: _controller,
            textAlign: TextAlign.center,
            keyboardType: TextInputType.number,
            decoration: InputDecoration(
              prefixIcon: IconButton(
                onPressed: () {
                  setState(() {
                    val--;
                    _controller.text = val.toString();
                  });
                },
                icon: const Icon(Icons.minimize),
              ),
              suffixIcon: IconButton(
                onPressed: () {},
                icon: const Icon(Icons.add),
              ),
            ),
          ),
        ],
      ),
      actions: [
        TextButton(
            onPressed: () {
              Navigator.of(context).pop(true);
            },
            child: const Text("OK")),
        TextButton(
            onPressed: () {
              Navigator.of(context).pop(false);
            },
            child: const Text("Annuler"))
      ],
    );
  }
}
flutter crash texteditingcontroller
1个回答
0
投票

我已经使用了你的代码。从我这边来看,你的代码运行良好。请重用您的代码并删除 setSaet()。 谢谢!!!

© www.soinside.com 2019 - 2024. All rights reserved.