Home > Enterprise >  Api response not showing problem flutter stuck at CircularProgressIndicator
Api response not showing problem flutter stuck at CircularProgressIndicator

Time:08-15

Im calling an api. This is my model

   final hisselist = hisselistFromJson(jsonString);

    import 'dart:convert';

    Hisselist hisselistFromJson(String str) => Hisselist.fromJson(json.decode(str));

    String hisselistToJson(Hisselist data) => json.encode(data.toJson());

    class Hisselist {
      Hisselist({
        required this.success,
        required this.result,
      });

      bool success;
      List<ResultClass> result;

      factory Hisselist.fromJson(Map<String, dynamic> json) => Hisselist(
        success: json["success"], result: json["result"].map<ResultClass>((x) => ResultClass.fromJson(x)).toList()
      );

      Map<String, dynamic> toJson() => {
        "success": success,
        "result": result.map((x) => x.toJson()),
      };
    }

    class ResultClass {
      ResultClass({
        required this.rate,
        required this.lastprice,
        required this.lastpricestr,
        required this.hacim,
        required this.hacimstr,
        required this.text,
        required this.code,
      });

      double rate;
      double lastprice;
      String lastpricestr;
      double hacim;
      String hacimstr;
      String text;
      String code;

      factory ResultClass.fromJson(Map<String, dynamic> json) => ResultClass(
        rate: json["rate"].toDouble(),
        lastprice: json["lastprice"].toDouble(),
        lastpricestr: json["lastpricestr"],
        hacim: json["hacim"].toDouble(),
        hacimstr: json["hacimstr"],
        text: json["text"],
        code: json["code"],
      );

      Map<String, dynamic> toJson() => {
        "rate": rate,
        "lastprice": lastprice,
        "lastpricestr": lastpricestr,
        "hacim": hacim,
        "hacimstr": hacimstr,
        "text": text,
        "code": code,
      };
    }

And this is where i call api

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

    import '../models/apis/hisselist.dart';

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

      @override
      State<Hisseler> createState() => _HisselerState();
    }

    class _HisselerState extends State<Hisseler> {

      final scaffoldKey = GlobalKey<ScaffoldState>();
      final url = Uri.parse('https://api.collectapi.com/economy/hisseSenedi');
      var counter;
      Hisselist? hisseResult;

      Future callHisse() async {
        try{
          Map<String, String> requestHeaders = {
            'Content-Type': 'application/json',
            'Authorization': 'apikey xxx'
          };
          final response = await http.get(url,headers:requestHeaders);

          if(response.statusCode == 200){
            var result = hisselistFromJson(response.body);

            if(mounted);
            setState(() {
              counter = result.result.length;
              hisseResult = result;
            });
            return result;
          } else {
            print(response.statusCode);
          }
        } catch(e) {
          print(e.toString());
        }
      }
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            centerTitle: false,
            automaticallyImplyLeading: false,
            title: Text(
                'Hisseler'
            ),
          ),
          body: Center(
            child: Padding(
              padding: const EdgeInsets.all(8.0),
              child: counter != null ?

              ListView.builder(
                  itemCount: counter,
                  itemBuilder: (context, index){
                    return Card(
                      child: ListTile(
                        title: Text(hisseResult?.result[index].code??""),
                        subtitle: Text(hisseResult?.result[index].text??""),

                      ),
                    );
                  }) : Center(child: CircularProgressIndicator(

              )),
            ),
          ),
        );
      }
    }


enter image description here

I'm using the same structure for news API in the same from the same API website. I tried API is working on postman. And I don't see any errors on the console. But circularprogessındicator working and nothing anymore happening. How can i fix this?

CodePudding user response:

You arent calling callHisse() method. try calling it inside initState

class _HisselerState extends State<Hisseler> {
  final scaffoldKey = GlobalKey<ScaffoldState>();
  final url = Uri.parse('https://api.collectapi.com/economy/hisseSenedi');
  var counter;
  Hisselist? hisseResult;

  @override
  void initState() {
    super.initState();
    callHisse();
  }

  Future callHisse() async {

It would be better using FutureBuilder

  • Related