gpt4 book ai didi

request - 我如何在 flutter 中调用 Future rest api?

转载 作者:IT王子 更新时间:2023-10-29 07:00:17 26 4
gpt4 key购买 nike

如何调用 Future API?这是我的 API 代码

class ApiClient{

Future<String> getPasswordToken(String username, String password) async {
var response =
await http.post(Uri.parse(this.apiBaseUrl + "/auth/token"), headers: {
"Accept": "application/json"
}, body: {
"username": username,
"password": password
});

if (response.statusCode == 200) {
var token = OAuthToken.fromJson(json.jsonDecode(response.body));
return token.accessToken;
} else {
throw Exception('Failed to fetch access token');
}
}
}

我正在使用下面的容器来调用 API。基于 API 响应需要导航到另一个屏幕,我在 onPressed

中点击了调用 API
var apiClient = new ApiClient();
Container(
margin: const EdgeInsets.only(top: 20.0),
padding: const EdgeInsets.only(left: 20.0, right: 20.0),
child: new Row(
children: <Widget>[
new Expanded(
child: FlatButton(
shape: new RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(28.0)),
splashColor: this.primaryColor,
color: this.primaryColor,
child: new Row(
children: <Widget>[
new Padding(
padding: const EdgeInsets.only(left: 20.0),
child: Text(
"LOGIN",
style: TextStyle(color: Colors.white),
),

),

new Expanded(
child: Container(),
),
new Transform.translate(
offset: Offset(15.0, 0.0),
child: new Container(
padding: const EdgeInsets.all(5.0),
child: FlatButton(
shape: new RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(28.0)),
splashColor: Colors.white,
color: Colors.white,
child: Icon(
Icons.arrow_forward,
color: this.primaryColor,
),
onPressed: apiClient.getPasswordToken("",""),

/* child:new FutureBuilder(future: apiClient.getClientToken(),
builder: (BuildContext context, AsyncSnapshot response) {
response.hasData==false? new SignIn(): new Scaffold(
appBar: new AppBar(title: new Text("Future Builder"),),
body: new Center(
child: new Text("Build your widgets"),
),
);
}
);*/
),
),
)
],
),
onPressed: () => {},
//onPressed: apiClient.getPasswordToken(emailInputField.key,emailInputField.key),
),
),
],
),
);

我试过上面的代码。它显示 The argument type 'Future' can't be assigned to the parameter type '() → void

最佳答案

这应该做你想做的:

onPressed: () => apiClient.getPasswordToken("",""),

onPressed: () async {
var result = await apiClient.getPasswordToken("","");
print(result);
setState(() => this.foo = result); // you can omit `this.` it's just for demonstration purposes that this line would modify the widgets state
}

关于request - 我如何在 flutter 中调用 Future<string> rest api?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52199149/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com