Przeglądaj źródła

fix. Uri queryParameters 参数只支持字符串参数

James 3 miesięcy temu
rodzic
commit
f784d5c043
1 zmienionych plików z 28 dodań i 1 usunięć
  1. 28 1
      lib/network/httpClientWrap.dart

+ 28 - 1
lib/network/httpClientWrap.dart

@@ -67,9 +67,36 @@ class HttpClientWrap {
 
 
       late final Uri uri;
       late final Uri uri;
       if ((method == 'GET') && (body != null)) {
       if ((method == 'GET') && (body != null)) {
+        // queryParameters Map value 只接受 String 和 List<String> 两种类型
+        // final queryParams = body.map((key, value) {
+        //   if (value is Iterable) {
+        //     // 多值:转成 List<String>
+        //     return MapEntry(key, value.map((v) => v.toString()).toList());
+        //   } else {
+        //     // 单值:转成 String
+        //     return MapEntry(key, value.toString());
+        //   }
+        // });
+        final queryParams = <String, dynamic>{};
+        if (body is Map) {
+          body.forEach((key, value) {
+            if (value is Iterable) {
+              // 多值:转成 List<String>
+              queryParams[key.toString()] = value.map((v) => v.toString()).toList();
+            } else {
+              // 单值:转成 String
+              queryParams[key.toString()] = value.toString();
+            }
+          });
+        }
         uri = Uri.parse(url).replace(
         uri = Uri.parse(url).replace(
-          queryParameters: body,
+          queryParameters: queryParams,
         );
         );
+
+        // uri = Uri.parse(url).replace(
+        //   queryParameters: body,
+        // );
+
       } else {
       } else {
         uri = Uri.parse(url);
         uri = Uri.parse(url);
       }
       }