类型 '_InternalLinkedHashMap<String, dynamic>' 不是类型 'FutureOr<List<CamerasStreams>>' flutter API 问题的子类型

时间:2021-04-27 02:02:55

标签: flutter dart hybrid-mobile-app

如何从此链接“https://185.86.145.54/cameras/all”检索数据。我尝试从 API 获取数据,但在查看下图时出现问题。

类型 '_InternalLinkedHashMap' 不是类型 'FutureOr' Flutter API 问题的子类型

谁能解释我如何从这个 API 中检索数据?

响应类:

import 'dart:convert';

CamerasStreams camerasStreamsFromJson(String str) =>
    CamerasStreams.fromJson(json.decode(str));

String camerasStreamsToJson(CamerasStreams data) => json.encode(data.toJson());

class CamerasStreams {
  CamerasStreams({
    this.empty,
  });

  List<Empty> empty;

  factory CamerasStreams.fromJson(Map<String, dynamic> json) => CamerasStreams(
        empty: List<Empty>.from(json["Камеры"].map((x) => Empty.fromJson(x))),
      );

  Map<String, dynamic> toJson() => {
        "Камеры": List<dynamic>.from(empty.map((x) => x.toJson())),
      };
}

class Empty {
  Empty({
    this.id,
    this.info,
    this.resComplex,
    this.createDate,
    this.link,
  });

  int id;
  String info;
  int resComplex;
  DateTime createDate;
  String link;

  factory Empty.fromJson(Map<String, dynamic> json) => Empty(
        id: json["id"],
        info: json["info"],
        resComplex: json["res_complex"],
        createDate: DateTime.parse(json["create_date"]),
        link: json["link"],
      );

  Map<String, dynamic> toJson() => {
        "id": id,
        "info": info,
        "res_complex": resComplex,
        "create_date": createDate.toIso8601String(),
        "link": link,
      };
}

获取函数:

import 'dart:convert';
import 'dart:io';
import 'package:http/io_client.dart';

import '../AllData.dart';

Future<List<CamerasStreams>> getApplicationsAPICall() async {
  bool trustSelfSigned = true;

  HttpClient httpClient = new HttpClient()
    ..badCertificateCallback =
        ((X509Certificate cert, String host, int port) => trustSelfSigned);
  IOClient ioClient = new IOClient(httpClient);
  String url = "https://185.86.145.54/cameras/all";
  final response = await ioClient.get(
    Uri.parse('$url'),
    headers: {
      HttpHeaders.contentTypeHeader: 'application/json',
      //HttpHeaders.authorizationHeader: '',
    },
  );
  var jsonResponse = json.decode(response.body);
  print(jsonResponse);
  return jsonResponse;
  // return jsonResponse.map((job) => CamerasStreams.fromJson(job)).toList();
}

enter image description here

0 个答案:

没有答案