繁体   English   中英

从 flutter mysql 数据库中提取数据时出现转换错误。 我该如何解决?

[英]I am getting cast error while pulling data from flutter mysql database. How can I fix?

我在下面写了一个 flutter 应用程序。 我正在尝试连接到 mysql 数据库并使用 api 提取数据,但每次尝试时,都会出现如下错误。 它链接到的 model 代码也可以在下面找到。 NoSuchMethodError (NoSuchMethodError: Class '_InternalLinkedHashMap<String, dynamic>' 没有匹配 arguments 的实例方法 'cast'。接收方:_LinkedHashMap len:3 尝试调用:cast<Map<String, dynamic>>() 发现:cast<Y0, Y1>() => Map<Y0, Y1>) 我收到这个错误。 我该如何解决。


import 'package:dbconnecttest/data.dart';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Material App',
      home: main1(),
    );
  }
}

class main1 extends StatefulWidget {
  main1({Key? key}) : super(key: key);

  @override
  State<main1> createState() => _main1State();
}

class _main1State extends State<main1> {
  Future<List<data>>? futuredata;
  @override
  void initState() {
    // TODO: implement initState
    futuredata = fetchPost();
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Fake Friends"),
        backgroundColor: Colors.green,
      ),
      body: FutureBuilder<List<data>>(
        future: futuredata,
        builder: (context, snapshot) {
          if (snapshot.hasData) {
            return ListView.builder(
              itemCount: snapshot.data!.length,
              itemBuilder: (_, index) => Container(
                child: Text("${snapshot.data![index].autid}"),
              ),
            );
          } else {
            return Center(child: CircularProgressIndicator());
          }
        },
      ),
    );
  }
}

Future<List<data>> fetchPost() async {
  final response =
      await http.get(Uri.parse('http://192.168.1.108/server/data.php'));

  if (response.statusCode == 200) {
    final parsed = json.decode(response.body).cast<Map<String, dynamic>>();

    return parsed.map<data>((json) => data.fromJson(json)).toList();
  } else {
    throw Exception('Failed');
  }
}


import 'dart:convert';

List<data> postFromJson(String str) =>
    List<data>.from(json.decode(str).map((x) => data.fromJson(x)));

class data {
  int? id;
  String? autid;
  String? status;
  String? startdate;
  String? finishdate;

  data(
      {required this.id,
      required this.autid,
      required this.status,
      required this.startdate,
      required this.finishdate});

  data.fromJson(Map<String, dynamic> json) {
    id = json['id'];
    autid = json['autid'];
    status = json['status'];
    startdate = json['startdate'];
    finishdate = json['finishdate'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['id'] = this.id;
    data['autid'] = this.autid;
    data['status'] = this.status;
    data['startdate'] = this.startdate;
    data['finishdate'] = this.finishdate;
    return data;
  }
}

在此处输入图像描述

尝试这个

Map<String, dynamic>.from(data)

在此处输入图像描述

我当然可以分享。 这是我的 flutter 医生

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM