我有以下方法,使用 d 来验证票证/ token
var ticketArray = ticket.split('|');
//First check to verify token using simple versification algo
if (widget.eventID.toString() != (ticketArray[0])) {
setState(() {
ticketMainMsg = 'This QR code is NOT VALID';
ticketsubtitle = ticketArray.length != 2
? 'The QR code is fake'
: 'QR code could belong to another event';
ticketStatus = false;
return;
});
}
//Make API call
ticketModel = HttpVerifyTicketPost(
eventId: widget.eventID,
ticket: ticket,
scannerId: widget.scannerId,
).verifyTicket();
}
从上面,您可以看到我对二维码/ token 进行了非常简单的检查,如果这个简单的步骤失败,我不会费心进行 API 调用,而是根据这些值设置状态。
但是,如果检查通过,那么我将继续向服务器发出 API 调用以完全验证 token /代码。
我的问题是,我现在正在努力将 API 调用中的值分配给 ticketStatus
、ticketMainMsg
和 ticketsubtitle
参数。任何人都可以透露一些信息吗?我对 flutter 还很陌生,但我知道 TicketModel
将是 Future 的一种。我的背景是 PHP,所以请原谅我!
编辑:httpVerifyTicket 类
class HttpVerifyTicketPost {
String ticket;
int someId;
int anotherId;
HttpVerifyTicketPost(
{required this.ticket, required this.someId, required this.anotherId});
String verifyURL =
'https://api.com/api/vendors/scanner/native/verify/ticket';
Future<TicketModel> verifyTicket() async {
var storage = await SharedPreferences.getInstance();
var code= storage.getString('code');
var client = http.Client();
var ticketModel = null;
var body = {
'ticket': ticket,
'scanner': scannerCode,
'someId': someId,
'anotherId': anotherId
};
try {
var url = Uri.parse(verifyURL);
var res = await client.post(url, body: jsonEncode(body));
if (res.statusCode == 200) {
var jsonString = res.body;
var jsonMap = json.decode(jsonString);
ticketModel = TicketModel.fromJson(jsonMap);
}
return ticketModel;
} catch (Exception) {
return ticketModel;
}
}
}
最佳答案
请尝试一下
HttpVerifyTicketPost(
eventId: widget.eventID,
ticket: ticket,
scannerId: widget.scannerId,
).verifyTicket().then((value){setState(() {
ticketModel=value
});
});
关于flutter - 如何将 API 调用中的值分配给 flutter 中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69264951/