簡體   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