Flutter 此表达式的类型为';无效';所以它的值可以';不可用
我已经创建了一个新方法,在递归时使用它。我正在创建一个函数,从API服务器获取刷新令牌Flutter 此表达式的类型为';无效';所以它的值可以';不可用,flutter,recursion,dart,Flutter,Recursion,Dart,我已经创建了一个新方法,在递归时使用它。我正在创建一个函数,从API服务器获取刷新令牌 void postLogin(LoginRequest loginRequest) async { _postStream.sink.add(Result<String>.loading("Loading")); try { final response = await client.post('$BASE_URL\/$LOGIN_URL', h
void postLogin(LoginRequest loginRequest) async {
_postStream.sink.add(Result<String>.loading("Loading"));
try {
final response = await client.post('$BASE_URL\/$LOGIN_URL', headers: customHeader, body: json.encode(loginRequest));
print(response.body.toString());
if (response.statusCode == 200) {
_postStream.sink.add(Result<LoginResponse>.success(
LoginResponse.fromJson(json.decode(response.body))));
} else if(response.statusCode == 401) {
getAuthUpadate(postLogin(loginRequest));//error is showing at this place
}
else{
_postStream.sink.add(Result.error(REQUEST_ERROR));
}
} catch (error) {
print(error.toString());
_postStream.sink.add(Result.error(INTERNET_ERROR));
}
}
//////////////
我可以给你一个关于这个问题的想法。
您只需调用返回值为void的函数,并将其作为参数传递给函数
getAuthUpdate
你可以试试这样的
getAuthUpadate(Function function, LoginRequest loginRequest) async { }
else if(response.statusCode == 401) {
getAuthUpadate(postLogin, loginRequest); // Just pass Reference as parameter!
}
在postLogin
方法中,您可以尝试这样的方法
getAuthUpadate(Function function, LoginRequest loginRequest) async { }
else if(response.statusCode == 401) {
getAuthUpadate(postLogin, loginRequest); // Just pass Reference as parameter!
}
最后,getAuthUpdate
方法的迭代部分
try{
final response = await client.post('$BASE_URL\/NEW_ACCESS_TOKEN_PATH', headers: customHeader,body:json.encode('RefreshToken'));
//get the refreshToken from response
String accessToken = response.body.toString();
//store this access token to the data
function(loginRequest);
}
catch (error){
}
希望能成功 我可以给你一个关于这个问题的想法。
您只需调用返回值为void的函数,并将其作为参数传递给函数
getAuthUpdate
你可以试试这样的
getAuthUpadate(Function function, LoginRequest loginRequest) async { }
else if(response.statusCode == 401) {
getAuthUpadate(postLogin, loginRequest); // Just pass Reference as parameter!
}
在postLogin
方法中,您可以尝试这样的方法
getAuthUpadate(Function function, LoginRequest loginRequest) async { }
else if(response.statusCode == 401) {
getAuthUpadate(postLogin, loginRequest); // Just pass Reference as parameter!
}
最后,getAuthUpdate
方法的迭代部分
try{
final response = await client.post('$BASE_URL\/NEW_ACCESS_TOKEN_PATH', headers: customHeader,body:json.encode('RefreshToken'));
//get the refreshToken from response
String accessToken = response.body.toString();
//store this access token to the data
function(loginRequest);
}
catch (error){
}
希望能成功 当我在回调方法中传入一个
void
时(例如,当函数被声明为void function(){…}
时调用function()
发生了这个错误
例如:
IconButton(
图标:图标(
mdicons.plusCircle,
),
onPressed:_navigateToJoinQuizScreen());//当我在回调方法中传入void
时(例如,当函数声明为void function(){…}
时调用function()
时,我发生了此错误
例如:
IconButton(
图标:图标(
mdicons.plusCircle,
),
onPressed:_navigateToJoinQuizScreen();//getAuthUpadate
需要一个不带参数的函数。您需要执行类似于getAuthUpadate(()=>postLogin(loginRequest))
的操作getAuthUpadate
需要一个不带参数的函数。您需要执行类似于getAuthUpadate(()=>登录后(登录请求))
。