🙂 İNSANLARIN EN HAYIRLISI INSANLARA FAYDALI OLANDIR 🙂

Ramazan HABER / FLUTTER / Http Client Get Post Delete Request Response Put Kullanımı

1-) FLUTTER - Http Client Get Post Delete Request Response Put Kullanımı

 

httpclient

türkçe karakter sorunu : final jsontext = utf8.decode(response.bodyBytes);

 

var _uri = Uri.parse(link);

 

 

body olarak data gönderme

 

Future<GenelModel> sendMail(String mail,String kod) async {

  
var headers = <String, String>{
    
'Content-Type': 'application/json; charset=UTF-8',
  };

Map data = {
  
"mail": mail,
  
"kod": kod
};
//encode Map to JSON
var body = json.encode(data);

var _uri = Uri.parse(Sabitler.apiBaseLink+"Mail/SendMail");

return await http.post(_uri,headers: headers,body: body).then(

 

 

 

 

 

1- AndroidManifest.xml

 

 

 <uses-permission android:name="android.permission.INTERNET"/>
 
<
application
     
android:label="Hastane Otomasyon"
     
android:name="${applicationName}"
     
android:icon="@mipmap/ic_launcher"
    
android:usesCleartextTraffic="true"
    
>

 

 

 

2- KULLANIMI

 

 

var headers = <String, String>{
  
'Content-Type': 'application/json; charset=UTF-8',
};

 

http.post(_uri,headers: headers)

 

import 'dart:convert';


String text = json.encode(classIsmi);

 

1- Terminale yaz çalıştır -> flutter pub add http -> ardından bunu çalıştır -> flutter pub get

 

2- Yazmış olduğunuz api'den jsonu buraya koplayın class ismini verip oluştur deyin

 

link : https://javiercbk.github.io/json_to_dart/

 

 

 

class ResModelim {
  
String? name;
  
int? age;
  
Null? car;

  
ResModelim({this.name, this.age, this.car});

  
ResModelim.fromJson(Map<String, dynamic> json) {
    
name = json['name'];
    
age = json['age'];
    
car = json['car'];
  }

  
Map<String, dynamic> toJson() {
    
final Map<String, dynamic> data = new Map<String, dynamic>();
    
data['name'] = this.name;
    
data['age'] = this.age;
    
data['car'] = this.car;
    
return data;
  }
}

 

 

3- Api.dart (Http get post yapmamıza yarayan sınıf)

 

import 'dart:convert';
import 'package:http/http.dart' as http;
import 'package:rmosflutterguest/page/anasayfa/anket/anket_departman.dart';
import '../anasayfa/anket/anket_sorular.dart';


class Api {
  
String apiBaseUrl = "192.168.1.105:15000";

  
Future<AnketSorular> getSorular() async {
    
var queryParameters = {
      
'dil': 'tr'
    
};

    
var _authority = apiBaseUrl;
    
var _path = "/Anket/getSorular";
    
var _uri = Uri.http( _authority,_path,queryParameters);

    
return http.post(_uri).then(
          (
http.Response response) {
        
int statusCode = response.statusCode;

        
String jsontext = response.body.toString();

        
if (statusCode < 200 || statusCode >= 400 || jsontext == null) {
          
String hata = jsonDecode(response.body)["message"].toString();
        }

        
//json= json.replaceAll("\"model\"", "\"modelSoru\""); // normalde bu satır yok
        
        
Map<String, dynamic> map= jsonDecode(jsontext);

        
AnketSorular anketSorular = AnketSorular.fromJson(map);

        
return anketSorular ;      },    );  }}

 

 

4- Kullanımı(Önemli kısmı veriler çekilmeden build kısmında return boş container donduruom)

 

 

Api api = new Api();

 

Future<AnketSorular> getSorular() async {

AnketSorular anketSorular = await api.getSorular();
EasyLoading.showToast(anketSorular.success.toString());

setState(() {
  
cekildi=true; // veriler çekilince build çalışşın dedim
});

 
  
return anketSorular;
}

 

 

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

 

 

bool cekildi=false;
@override
Widget build(BuildContext context) {

  
if(cekildi==false){
    
return Container(child: Text("ANKET"),);
  }

  
return Scaffold(
    appBar:
AppBar(

 

 

Açıklama : getSorular() metodu asenkron çalışır. ama kullanımında await yani çekilinceye kadar bekle dedik. o yüzden çekildikten sonra işlemlerimize devam ederiz. normalde aşağıdaki gibi then dedikten sonra donen değerden sonra işlem yapılır

 

    .then((http.Response response) {
        
int statusCode = response.statusCode;

 

 

5- DİĞER ÖRNEK DAHA BASİT ANLAYABİLİRİZ. BAKINIZ

 

 

KULLANIMI

 

 

 

Api api = new Api();

 

api.getDepartmanlar().then((departman) {

         / / YAPILACAK İŞLEMLERİ BURAYA YAZABİLİRSİN

 

      departman.modelDepartman!.forEach((element) {
        
/ /  TO DO CODE
       });

});

 

 

 

 

JSON' UMUZ

 

{  "message": "Başarılı",
"success": true,
"requestMetot": "Anket.getDepartman",
"model": [{
"dep_kod": "001",
"dep_ad": "RESEPSIYON"
},
{
"dep_kod": "002",
"dep_ad": "KAT HIZMETLERI"
}  ]  }

 

import 'dart:convert';
import 'package:http/http.dart' as http;

class Api {

  
String apiBaseUrl = "192.168.1.105:15000";
Future<AnketDepartman> getDepartmanlar() async {
  
var queryParameters = {
    
'dil': LocaleKeys.dil
  
};

  
var _authority = apiBaseUrl;
  
var _path = "/Anket/getDepartman";
  
var _uri = Uri.http( _authority,_path,queryParameters);

  
return await http.post(_uri).then(
        (
http.Response response) {
      
int statusCode = response.statusCode;

      
String jsontext = response.body.toString();

      
if (statusCode < 200 || statusCode >= 400 || jsontext == null) {
        
String hata = jsonDecode(response.body)["message"].toString();
      }

//json= json.replaceAll("\"model\"", "\"modelDepartman""); // normalde bu satır yok

      
Map<String, dynamic> map= jsonDecode(jsontext);

      
AnketDepartman modelim = AnketDepartman.fromJson(map);

      
return modelim ;    },  );}

 

class AnketDepartman {
  
String? message;
  
bool? success;
  
String? requestMetot;
  
List<ModelDepartman>? modelDepartman;

  
AnketDepartman(
      {
this.message, this.success, this.requestMetot, this.modelDepartman});

  
AnketDepartman.fromJson(Map<String, dynamic> json) {
    
message = json['message'];
    
success = json['success'];
    
requestMetot = json['requestMetot'];
    
if (json['modelDepartman'] != null) {
      
modelDepartman = <ModelDepartman>[];
      json[
'modelDepartman'].forEach((v) {
        
modelDepartman!.add(new ModelDepartman.fromJson(v));
      });
    }
  }

  
Map<String, dynamic> toJson() {
    
final Map<String, dynamic> data = new Map<String, dynamic>();
    
data['message'] = this.message;
    
data['success'] = this.success;
    
data['requestMetot'] = this.requestMetot;
    
if (this.modelDepartman != null) {
      
data['modelDepartman'] =
          
this.modelDepartman!.map((v) => v.toJson()).toList();
    }
    
return data;
  }
}

class ModelDepartman {
  
String? depKod;
  
String? depAd;

  
ModelDepartman({this.depKod, this.depAd});

  
ModelDepartman.fromJson(Map<String, dynamic> json) {
    
depKod = json['dep_kod'];
    
depAd = json['dep_ad'];
  }

  
Map<String, dynamic> toJson() {
    
final Map<String, dynamic> data = new Map<String, dynamic>();
    
data['dep_kod'] = this.depKod;
    
data['dep_ad'] = this.depAd;
    
return data;
  }
}


 

 

 

6- JSON LİST DÖNERSE köşeli parantezli ORNEK:

 

json ornek : [    { "id"54 }  ]

 

 

Future<List<TumBankaModel>> getTumBanka() async {

 

    var headers = <String, String>{

      'Content-Type': 'application/json; charset=UTF-8',

    };

 

    final _params = { "userName" : "re" ,"password" : "ze"};

 

    var _uri = Uri.http(StatikSinif.apiBaseUrl,"/api/Genel/getir",_params);

 

    return await http.post(_uri,headers: headers).then(

          (http.Response response) {

        int statusCode = response.statusCode;

 

        String jsontext = response.body.toString();

 

        if (statusCode < 200 || statusCode >= 400 || jsontext == null) {

          return <TumBankaModel>[];

        }

 

        List<TumBankaModel> modelim = (jsonDecode(response.body) as List)

            .map((data) => TumBankaModel.fromJson(data))

            .toList();

 

        return modelim ;

      },

    );

  }

 

 

 2024 Haziran 02 Pazar
 1,547