Home > Mobile >  I am getting cast error while pulling data from flutter mysql database. How can I fix?
I am getting cast error while pulling data from flutter mysql database. How can I fix?

Time:03-08

There is a flutter application that I wrote below. I'm trying to connect to mysql database and pull data with api, but every time I try, I get an error like the following. The model codes to which it is linked are also available below. NoSuchMethodError (NoSuchMethodError: Class '_InternalLinkedHashMap<String, dynamic>' has no instance method 'cast' with matching arguments. Receiver: _LinkedHashMap len:3 Tried calling: cast<Map<String, dynamic>>() Found: cast<Y0, Y1>() => Map<Y0, Y1>) I am getting this error. How can I fix.


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;
  }
}

enter image description here

CodePudding user response:

Try this

Map<String, dynamic>.from(data)

CodePudding user response:

enter image description here

of course i can share. this is my flutter doctor

  • Related