我已经从RegisteredPatient小部件返回了患者的IC编号,但是初始值不会更新和显示。我已经尝试打印患者IC的值,但是我不明白为什么初始值不更新。我什至尝试了setstate。

TextFormField(
  initialValue: ic,
  validator: (val) => val.isEmpty ? 'Enter patient IC' : null,
  decoration: textInputDecoration.copyWith(
    hintText: 'Patient IC e.g. 960XXXXXXXXX'
  ),
  onChanged: (val) {
    setState(() => ic = val);
  },
  onTap: () async {
    ic = await Navigator.push(
      context,
      MaterialPageRoute(builder: (context) => RegisteredPatient())
    );
  },
),

最佳答案

如果我正确理解了您的问题,那么您希望从RegisteredPatient路由返回时更新文本字段的值。为此,您应该执行以下操作:
声明

TextEditingController _textEditingController =  TextEditingController();

您的TextFormField上的
onTap: () async {
  Navigator.push(
    context,
    MaterialPageRoute(builder: (context) => RegisteredPatient())
  ).then((newIcValue){
    setState(() {
      _textEditingController.text = newIcValue;
    });
  });
},

关于firebase - 为什么初始值不更新和显示?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59929329/

10-11 14:57