тип «список» не является подтипом типа «строка».

#flutter

Вопрос:

Я новичок в программировании на Flutter и сейчас пытаюсь получить данные из restapi. Я получаю этот тип ошибки 'list<dynamic>' is not a subtype of type 'string' и в отладке

Скриншот ошибки отладки

Есть какое-нибудь решение?

аписервис:

 Future<List<Petani>> getDafPet() async {
final response = await client.get("http://10.0.2.2:8000/api/dafPetani");
if (response.statusCode == 200) {
  return petaniFromJson(response.body);
} else {
  return null;
}
 

}

дротик:

 FutureBuilder(
            future: ApiServices().getDafPet(),
            builder: (BuildContext context, AsyncSnapshot<List<Petani>> snapshot){
              if(snapshot.hasError){
                return Center(
                  child: Text(
                    "Something wrong with message : ${snapshot.error.toString()}",
                    style: TextStyle(
                      color: Color(0xFFAB47BC),
                    ),
                    textAlign: TextAlign.center,
                  ),
                );
              }else if(snapshot.connectionState == ConnectionState.done){
                lptn = snapshot.data;
                return ListView.builder(
                  itemBuilder: (context, position){
                    return Card(
                      margin: new EdgeInsets.symmetric(horizontal: 10.0, vertical: 5.0),
                      shadowColor: Color(0xFFBA68C8),
                      elevation: 2.0,
                      color: Colors.white,
                      shape: RoundedRectangleBorder(
                        borderRadius: BorderRadius.circular(10),
                      ),
                      child: Container(
                        padding: EdgeInsets.fromLTRB(5, 2.5, 5, 2.5),
                        margin: EdgeInsets.fromLTRB(2.5, 2.5, 2.5, 2.5),
                        child: ListTile(
                          title: Text(
                            //lDsn[position].nik
                            lptn[position].nama,
                            style: TextStyle(
                              color: Color(0xFFAB47BC),
                              fontWeight: FontWeight.bold,
                            ),
                          ),
                          subtitle: Text(
                            lptn[position].nama,
                            style: TextStyle(
                              color: Colors.black54,
                              fontSize: 13,
                            ),
                          ),
                          trailing: IconButton(
                            icon: Icon(
                              Icons.arrow_forward_ios_rounded,
                              color: Colors.black26,
                              size: 20,
                            ),
                            onPressed: (){
                              //pindah ke menu Daftar Jadwal Dosen
                              // Navigator.push(
                              //   context,
                              //   MaterialPageRoute(builder: (context) => DaftarJadwalDosen(title: "Daftar Slot Jadwal Dosen",
                              //     nik: lDsn[position].nik, dsn: lDsn[position], nim_login: this.nim_login,)),).then(onGoBack);
                            },
                          ),
                        ),
                      ),
                    );
                  },
                  itemCount: lptn.length,
                );
              }
 

Данные JSON:

 [
    {
        "ID_User": "00",
        "nama": "Test Ganti",
        "jenis_kelamin": 0,
        "tanggal_lahir": "0000-00-00",
        "alamat": "",
        "provinsi": "",
        "kabupaten": "",
        "kecamatan": "",
        "kelurahan_desa": "",
        "nomor_telpon": "14022",
        "Email": "test1@gmail.com",
        "Foto": ""
    },
    {
        "ID_User": "000",
        "nama": "Test Jawaban",
        "jenis_kelamin": 0,
        "tanggal_lahir": "0000-00-00",
        "alamat": "",
        "provinsi": "",
        "kabupaten": "",
        "kecamatan": "",
        "kelurahan_desa": "",
        "nomor_telpon": "080989999",
        "Email": "a@jawab.id",
        "Foto": ""
    },
    {
        "ID_User": "003",
        "nama": "test Jawaban 3",
        "jenis_kelamin": 0,
        "tanggal_lahir": "0000-00-00",
        "alamat": "",
        "provinsi": "",
        "kabupaten": "",
        "kecamatan": "",
        "kelurahan_desa": "",
        "nomor_telpon": "1234",
        "Email": "c@c.id",
        "Foto": ""
    },
 

Комментарии:

1. поделитесь своим кодом

2. просто отредактировал сообщение

3. можете ли вы расшифровать данные своего ответа

4. можете ли вы добавить функцию petaniFromJson ()?

5. Список<Петани> Петанифромджсон(строка jsonData) { окончательные данные = json.декодировать(jsonData); печать(«Данные =» данные); возвращаемый список<Петани><Петани>.из(data.map((элемент) =<Петани>> Петани.из Json(элемент))); }

Ответ №1:

Вы можете попробовать с этим

 
Future<List<Petani>> getDafPet() async {
final response = await client.get("http://10.0.2.2:8000/api/dafPetani");
if (response.statusCode == 200) {
  var data = json.decode(response.body);
  List<Petani> itemList = [];
        data.map(( item) {
              itemList.add(Petani.fromJson(item));
         }).toList();
   return itemList;
} else {
  return null;
}
 

Комментарии:

1. все так же, как и раньше

2. класс Петани { Идентификатор строки; Пароль строки; Имя строки; int jenis_kelamin; Строка tanggal_lahir; Строка alamat; Строка provinsi; Строка nomor_telpon; Строка электронной почты; Строка jum_pekerja; Строка jum_lahan;

3. обновил свой ответ, пожалуйста, посмотрите, и он работает на моей машине

4. он по-прежнему возвращает тип » список<динамический>», который не является подтипом типа «строка».

5. отредактировал мой ответ, пожалуйста, попробуйте