我有一个简单的代码,如下所示:
TextFormField(
initialValue: otp ?? "",
),
SizedBox(height: getProportionateScreenHeight(20.0)),
Text(otp ?? ""),
SizedBox(height: getProportionateScreenHeight(20.0)),
现在我正在从api
给出otp的函数中调用api,而该函数需要显示在TextFieldInput
中,而根本没有显示!但以Text Widget
显示。可能是什么问题。
void processCoupon() async {
try {
if (_terms) {
print("processing mobile number !");
var data = {"mobile": _authModel.mobile};
ApiCall().postData(data, cApi).then((result) {
print(result);
if (result["data"] != null) {
print(result["data"]["otp"]);
setState(() {
otp = result["data"]["otp"].toString();
});
}
});
} else {
print("terms not agreed !");
}
} catch (e) {
print(e);
}
}
答案 0 :(得分:0)
list1
list2
list3
.
.
.
list30
更改
list2env(df_list, globalenv())
和
df_list
更改
TextFormField(
initialValue: otp ?? "",
),
答案 1 :(得分:0)
TextEditingController
创建一个TextField
: // create a controller for the TextField
TextEditingController controller = TextEditingController();
controller
分配给您的TextField
: TextFormField(
initialValue: otp ?? "",
// assign the controller to the TextField
controller: controller, // new line
),
SizedBox(height: getProportionateScreenHeight(20.0)),
Text(otp ?? ""),
SizedBox(height: getProportionateScreenHeight(20.0)),
otp
字符串分配给Text
的{{1}}属性:controller
答案 2 :(得分:0)
在您应该使用TextController更新之后,我假定InitialValue仅在第一个结构中使用。
声明:
var otpController = TextEditingController();
将控制器添加到您的TextFormField:
controller: otpController,
更新文本:
setState(() {
otpController.text = result["data"]["otp"].toString();
});
答案 3 :(得分:0)
我知道可以为此目的使用TextController
的方式,但是问题是表单相当冗长,这就是我们不能使用此方法的地方,因为需要使用对象。问题是它们inital value can be passed
,但是当我们尝试更新该值时,为了反映该值,我们还需要更新密钥,以便inputfield
也将更新。我刚刚添加了以下值,瞧!现在一切正常。
TextFormField(
key: Key(otp), <--- this line was added
initialValue: otp ?? "",
),
SizedBox(height: getProportionateScreenHeight(20.0)),
Text(otp ?? ""),
SizedBox(height: getProportionateScreenHeight(20.0)),