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

#flutter #dart

Вопрос:

Всем привет, я новичок в flutter. Я пытаюсь получить данные из API. Когда я пытаюсь взять, я могу получить тело, но я не могу получить данные из него. Я получаю ошибку типа «I/flutter ( 8981): тип «Строка» не является подтипом типа «Описание»». Вот скриншот с моей консоли, когда я запускаю код: Вывод консоли

и вот мой код:

 import 'dart:convert';
import 'dart:ffi';

import 'package:feedme_start/main.dart';
import 'package:feedme_start/model/AnaEkran_modeli.dart';
import 'package:feedme_start/model/branch_list.dart';
import 'package:feedme_start/model/restourantList.dart';
import 'package:feedme_start/widgets/Navigation_Drawer_Widget.dart';
import 'package:flutter/material.dart';
import 'package:http/http.dart';

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

  @override
  _restaurantPageState createState() => _restaurantPageState();
}

final datas = [];

final datas_oneri = [];

class _restaurantPageState extends State<restaurantPage> {
  int counter = 0;
  var personalResu<
  Future getapidata() async {
//orjinal api denemesi

    String url =
        "https://www.mobilonsoft.com/fpsapi/default.aspx?op=branch_listamp;firmuid=feedmekktcamp;device_id=web_20210813180900001amp;device_platform=4amp;lang=en";

    try {
      Response responsee = await get(Uri.parse(url)); //yanıtı alır
      if (responsee.statusCode == 200) {
        // yanıt onaylanırsa
        Map sonuc = jsonDecode(responsee.body); //içeriği alır
        print("apideki veriler ;");
        print(sonuc);
         **Branchlist liste = Branchlist.fromJson(sonuc);**
        print(liste.result.branchList.toString());
      } else {}
    } catch (e) {
      print(e.toString());
      print("verileri çekerken hata oluştu");
    }

  


  }

  @override
  void initState() {
    getapidata();
  }

  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        appBar: AppBar(
          elevation: 0,
          leading: IconButton(
              onPressed: () {
                Navigator.push(
                    context, MaterialPageRoute(builder: (context) => MyApp()));
              },
              icon: Icon(Icons.arrow_back)),
          backgroundColor: Colors.red,
          actions: <Widget>[
            IconButton(
                onPressed: () {
                  showSearch(context: context, delegate: dataSearch());
                },
                icon: Icon(Icons.search)),
          ],
        ),
        backgroundColor: Colors.white,
        body: Center(
          child: Padding(
            padding: const EdgeInsets.all(10.0),
            child: ListView.builder(
                itemCount: counter,
                itemBuilder: (context, index) {
                  return ListTile(
                    title: Text(personalResult.data[index].firstName  
                        " "  
                        personalResult.data[index].lastName),
                    subtitle: Text(personalResult.data[index].email),
                    leading: CircleAvatar(
                      backgroundImage:
                          NetworkImage(personalResult.data[index].avatar),
                    ),
                  );
                }),
          ),
        ),
      ),
    );
  }
}

class dataSearch extends SearchDelegate<String> {
  @override
  List<Widget> buildActions(BuildContext context) {
    // actions for appbar
    return [
      IconButton(
          onPressed: () {
            query = "";
          },
          icon: Icon(Icons.clear))
    ];
  }

  @override
  Widget buildLeading(BuildContext context) {
    // leading icon on the left of the app bar
    return IconButton(
      icon: AnimatedIcon(
          icon: AnimatedIcons.menu_arrow, progress: transitionAnimation),
      onPressed: () {
        close(context, query);
      },
    );
  }

  @override
  Widget buildResults(BuildContext context) {
    // show some result based on the selection
    return Container(
      color: Colors.red,
      child: Card(),
    );

    throw UnimplementedError();
  }

  @override
  Widget buildSuggestions(BuildContext context) {
    // show when someone searches for something
    final datasOnerisi = query.isEmpty
        ? datas_oneri
        : datas.where((p) => p.startsWith(query)).toList();
    return ListView.builder(
      itemBuilder: (context, index) => ListTile(
        onTap: () {
          showResults(context);
        },
        leading: Icon(Icons.search),
        title: RichText(
          text: TextSpan(
              text: datasOnerisi[index].substring(0, query.length),
              style:
                  TextStyle(color: Colors.black, fontWeight: FontWeight.bold),
              children: [
                TextSpan(
                    text: datasOnerisi[index].substring(query.length),
                    style: TextStyle(color: Colors.grey))
              ]),
        ),
      ),
      itemCount: datasOnerisi.length,
    );
    throw UnimplementedError();
  }
}
 

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

1. В какой строке вы получаете эту ошибку?

2. я не получаю никаких ошибок. Это ответ api, вы можете увидеть его на картинке… он отправляет сообщение об ошибке в раздел «Поймать» и показывает мне это на консоли. Когда я ставлю точку останова, она отправляет в ловушку » Список ветвей liste = Список ветвей.FromJSON(sonuc);» он помечен в коде

Ответ №1:

Я решил эту проблему, изменив класс модели… В этом были некоторые ошибки. «Строка» была сохранена как «описание», вот почему она выдавала эту ошибку. Поэтому я изменил его с помощью строки, и это решило проблему. Это была небольшая, но коварная ошибка

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

1. Пожалуйста, добавьте дополнительные сведения, чтобы расширить свой ответ, например, ссылки на рабочий код или документацию.