我在颤振中遇到了一个我自己无法弄清楚的问题。
所以我有以下代码(只粘贴了代码的重要部分),
class _PrimaryDetailsEditState extends State<PrimaryDetailsEdit> {
String bankName; <---------- I have this variable inside my state class
void _getFormData() {
BackendApi.call(
endpoint: APIEndPoints.GET_FORM_DATA,
data: {'id': widget.jobId},
onSuccess: (data) {
setState(() {
bankName = data['clientBank']['name']; <-------------- I assign a new value to the above variable here
print('Bank name is $bankName'); <-------------- This print confirms that the new value has been indeed assigned to the variable
});
},
onFailed: (error) {
print('Failed to get data');
});
}
@override
void initState() {
_getFormData(); <------- I call the _getFormData function declared above right here.
super.initState();
}
在上面的代码中,
我有一个名为bankName
字符串数据类型的类变量。
_getFormData
下面定义的方法bankName
,调用另一个静态方法BackendApi.call()
,该方法负责发出http请求以获取一些数据。接受 4 个命名参数,其中BackendApi.call()
两个重要参数是onSuccess
和onFailed
。这两个参数在数据获取成功与否的情况下都会调用回调函数。
如您所见,在onSuccess
回调中,我将从 http 请求接收到的一些数据分配给bankName
变量。
我还调用_getFormData
内部@override initState()
以确保在挂载小部件之前发出请求。
问题
即使bankName
保存了我想要的数据,当该变量传递给小部件时,我的 UI 也不会更新!
➡ 我将正确的变量传递给小部件以更新 UI。我通过注释掉_getFormData
函数并最初为 a 值分配一个值来确认这一点,bankName
例如bankName = 'Hello'
. 如果我这样做,UI 会更新为 value Hello
。所以我将正确的变量传递给小部件。
谢谢!