【问题标题】:Flutter : Using String and boolean value in Map()Flutter:在 Map() 中使用字符串和布尔值
【发布时间】:2021-08-30 08:53:00
【问题描述】:

在 Map 中同时使用字符串和布尔值返回以下错误,如何同时使用这两个值?。

var bodyValues = new Map<String, dynamic>();
bodyValues['accountName'] = accountName;
bodyValues['customerEmail'] = customerEmail;
bodyValues['getAllAvailableBanks'] = false;


final http.Response response = await http.post(
    'https:url',
    body: bodyValues,
   headers:headerValues
);

[错误:flutter/lib/ui/ui_dart_state.cc(186)] 未处理的异常: “bool”类型不是类型转换中“String”类型的子类型

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    通过查看http 包的代码,很明显,如果您提供Map 作为body,它必须是Map&lt;String, String&gt;。您可以在此处查看cast 发生的位置:

      @override
      Future<Response> post(Uri url,
              {Map<String, String>? headers, Object? body, Encoding? encoding}) =>
          _sendUnstreamed('POST', url, headers, body, encoding);
    ...
    
      /// Sends a non-streaming [Request] and returns a non-streaming [Response].
      Future<Response> _sendUnstreamed(
          String method, Uri url, Map<String, String>? headers,
          [body, Encoding? encoding]) async {
        var request = Request(method, url);
    
        if (headers != null) request.headers.addAll(headers);
        if (encoding != null) request.encoding = encoding;
        if (body != null) {
          if (body is String) {
            request.body = body;
          } else if (body is List) {
            request.bodyBytes = body.cast<int>();
          } else if (body is Map) {
            request.bodyFields = body.cast<String, String>();
          } else {
            throw ArgumentError('Invalid request body "$body".');
          }
        }
    
        return Response.fromStream(await send(request));
      }
    

    https://github.com/dart-lang/http/blob/e89b190936d53d0e36148436283e28ba1091b35a/lib/src/base_client.dart#L87

    【讨论】:

    • 那么我该如何使用布尔值呢?
    • @chubi 好吧,你需要把它转换成String。如果你在上面使用toString(),你会得到truefalse作为字符串。
    猜你喜欢
    • 2023-01-18
    • 2019-05-03
    • 2012-08-10
    • 2019-10-15
    • 2011-04-23
    • 2022-12-31
    • 2012-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多