flutter - 如何将 API 调用中的值分配给 flutter 中的变量

标签 flutter dart flutter-http

我有以下方法,使用 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 调用中的值分配给 ticketStatusticketMainMsgticketsubtitle 参数。任何人都可以透露一些信息吗?我对 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/

相关文章:

functional-programming - Dart 是否支持函数式编程?

flutter - 在 flutter 中解析 json api 时对 null 值使用 Null 检查运算符

flutter - 上传图片/文件到 Strapi (Flutter Web)

json - 后台大JSON优化解析

if-statement - dart 替代很多 if else if

css - 如何调整输入的长度

升级后 Flutter 不再工作

dart - 如何使用 flutter 在移动应用程序中禁用多点触控

flutter - 如何在 Flutter 的消息中实现用户提及?