http dart:如何在请求的查询参数中发送地图?

http dart: How to send a Map in the query parameters of a request?

我有一个像这样的 http 请求,使用 http 包:

import 'package:http/http.dart' as http;

Uri url = Uri.http(
  'http://sample.com',
  '/request',
  {
    'dataMap': {
      'key1': ['item1', 'item2']
      'key2': ['item1', 'item2']
    },
  },
);

我收到这个错误:

 _TypeError (type '_InternalLinkedHashMap<String, List<String>>' is not a subtype of type 'Iterable<dynamic>')

如果我不在查询参数中放入地图,则不会抛出错误。

那么我该如何发送 Map

您可以jsonEncode地图:

import 'dart:convert';

void main() {
  Uri url = Uri.http(
    'sample.com',
    '/request',
    {
      'dataMap': jsonEncode({
        'key1': ['item1', 'item2'],
        'key2': ['item1', 'item2']
      }),
    },
  );
  
  print(url);
}

你可以这样实现:

  _request() async {
    
    
    var outer = {};
    
    outer['dataMap'] =  {
          'key1': ['item1', 'item2'],
           'key2': ['item1', 'item2']
    };
    
    print(jsonEncode(outer));
 
    
    
    return  http.post(Uri.parse('https://www.example.com/request'), body: jsonEncode(outer));
    
    
  }