• 31-07-2023, 19:03:59
    #1
    Selamlar arkadaşlar aşağıdaki kodda api çekiminde sıkıntı yok sadece içinde I VE İ olan içerikleri çekemiyorum. Koddaki gerekli alanlara İ yazınca I çekmiyor tersi yapınca da diğeri çekilmiyor. Kodu inceleyip ikisini birden eklemem için yardımcı olur musunuz..
     Response response = await get(Uri.parse(
            "https://api.xxx.tr/getsureapi.php?sureadi=${widget.surah.name!.toLowerCase()}&datatipi=hakkinda&ayetno=${widget.surah.number}"));
        String data = jsonDecode(json.encode(response.body));
        String temp = "";
        bool run = false;
        for (int I = 0; I < data.length; I++) {
          if (data[I] == "{" && data[I - 1] == ':' || run == true) {
            temp += data[I];
            run = true;
            if (data[I] == "}") {
              run = false;
              break;
            }
          }
        }
        Map valueMap = json.decode(temp);
        Response response2 = await get(Uri.parse(
            "https://api.xxx.tr/getsureapi.php?sureadi=${widget.surah.name!.toLowerCase()}&datatipi=nuzul&ayetno=${widget.surah.number}"));
        String data2 = jsonDecode(json.encode(response2.body));
        String temp2 = "";
        bool run2 = false;
        for (int I = 0; I < data2.length; I++) {
          if (data2[I] == "{" && data2[I - 1] == ':' || run2 == true) {
            temp2 += data2[I];
            run2 = true;
            if (data2[I] == "}") {
              run2 = false;
              break;
            }
          }
        }
        Map valueMap2 = json.decode(temp2);
        Response response3 = await get(Uri.parse(
            "https://api.xxx.tr/getsureapi.php?sureadi=${widget.surah.name!.toLowerCase()}&datatipi=konu&ayetno=${widget.surah.number}"));
        String data3 = jsonDecode(json.encode(response3.body));
        String temp3 = "";
        bool run3 = false;
        for (int I = 0; I < data3.length; I++) {
          if (data3[I] == "{" && data3[I - 1] == ':' || run3 == true) {
            temp3 += data3[I];
            run3 = true;
            if (data3[I] == "}") {
              run3 = false;
              break;
            }
          }
        }
        Map valueMap3 = json.decode(temp3);
        Response response4 = await get(Uri.parse(
            "https://api.xxx.tr/getsureapi.php?sureadi=${widget.surah.name!.toLowerCase()}&datatipi=fazilet&ayetno=${widget.surah.number}"));
        String data4 = jsonDecode(json.encode(response4.body));
        String temp4 = "";
        bool run4 = false;
        for (int I = 0; I < data4.length; I++) {
          if (data4[I] == "{" && data4[I - 1] == ':' || run4 == true) {
            temp4 += data4[I];
            run4 = true;
            if (data4[I] == "}") {
              run4 = false;
              break;
            }
          }
        }
  • 31-07-2023, 19:22:00
    #2
    toLowerCase() düzgün çalışmaz Türkçe karakterler için, turkish kütüphanesini kullanın.
  • 31-07-2023, 19:30:07
    #3
    altayevrim adlı üyeden alıntı: mesajı görüntüle
    toLowerCase() düzgün çalışmaz Türkçe karakterler için, turkish kütüphanesini kullanın.
    Şimdi ekledim. String surahName = tr.toLowerCase(widget.surah.name!); bu şekilde kullanacağım sanırım.
  • 31-07-2023, 19:34:46
    #4
    Hayır. toLowerCase yerine toLowerCaseTr yazacaksınız.
  • 31-07-2023, 19:54:11
    #5
    altayevrim adlı üyeden alıntı: mesajı görüntüle
    Hayır. toLowerCase yerine toLowerCaseTr yazacaksınız.
    Hala çekmiyor.
  • 31-07-2023, 20:01:38
    #6
    utf8.decode yöntemini kullanabiliriz Future<Map> fetchData adinda yeni bir fonksiyon tanımlarsak örnek olarak böyle birşey yapabiliriz
    import 'dart:convert';
    import 'package:http/http.dart';
    
    Future<Map> fetchData(String dataTipi, String sureAdi, int ayetNo) async {
      final encodedSureAdi = Uri.encodeComponent(sureAdi.toLowerCase());
    
      final response = await get(Uri.parse(
        "https://api.xxx.tr/getsureapi.php?sureadi=$encodedSureAdi&datatipi=$dataTipi&ayetno=$ayetNo",
      ));
    
      final data = utf8.decode(response.bodyBytes); 
      return jsonDecode(data);
    }
    
    void main() async {
      Map valueMap = await fetchData("hakkinda", widget.surah.name!, widget.surah.number);
      Map valueMap2 = await fetchData("nuzul", widget.surah.name!, widget.surah.number);
      Map valueMap3 = await fetchData("konu", widget.surah.name!, widget.surah.number);
      Map valueMap4 = await fetchData("fazilet", widget.surah.name!, widget.surah.number);
    
      print("Hakkinda: $valueMap");
      print("Nuzul: $valueMap2");
      print("Konu: $valueMap3");
      print("Fazilet: $valueMap4");
    }
    gibi olur aslinda bir deneyin
  • 31-07-2023, 20:08:03
    #7
    OmerAti adlı üyeden alıntı: mesajı görüntüle
    utf8.decode yöntemini kullanabiliriz Future<Map> fetchData adinda yeni bir fonksiyon tanımlarsak örnek olarak böyle birşey yapabiliriz
    import 'dart:convert';
    import 'package:http/http.dart';
    
    Future<Map> fetchData(String dataTipi, String sureAdi, int ayetNo) async {
      final encodedSureAdi = Uri.encodeComponent(sureAdi.toLowerCase());
    
      final response = await get(Uri.parse(
        "https://api.xxx.tr/getsureapi.php?sureadi=$encodedSureAdi&datatipi=$dataTipi&ayetno=$ayetNo",
      ));
    
      final data = utf8.decode(response.bodyBytes);
      return jsonDecode(data);
    }
    
    void main() async {
      Map valueMap = await fetchData("hakkinda", widget.surah.name!, widget.surah.number);
      Map valueMap2 = await fetchData("nuzul", widget.surah.name!, widget.surah.number);
      Map valueMap3 = await fetchData("konu", widget.surah.name!, widget.surah.number);
      Map valueMap4 = await fetchData("fazilet", widget.surah.name!, widget.surah.number);
    
      print("Hakkinda: $valueMap");
      print("Nuzul: $valueMap2");
      print("Konu: $valueMap3");
      print("Fazilet: $valueMap4");
    }
    gibi olur aslinda bir deneyin
    Kod bilgim kısıtlı ChatGPT ile ben de denedim ama hala çekmiyor.