【发布时间】:2021-09-21 07:26:49
【问题描述】:
我有以下使用 d 验证票证/令牌的方法
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();
}
从上面你可以看到,如果这个简单的步骤失败,我会对二维码/令牌进行非常简单的检查,我不会费心进行 API 调用,而是根据这些值设置状态。
但是,如果检查通过,我会继续对服务器进行 API 调用以完全验证令牌/代码。
我的问题是我现在正在努力将 API 调用中的值分配给 ticketStatus、ticketMainMsg 和 ticketsubtitle 参数。任何人都可以helo阐明一些观点。我对颤动很陌生,但我知道TicketModel 将是一种未来。我的背景是 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的代码 -
@AnandaPramono 我现在添加了它。请检查
-
这能回答你的问题吗? What is a Future and how do I use it?
标签: flutter dart flutter-http