kasim 0.0.2 copy "kasim: ^0.0.2" to clipboard
kasim: ^0.0.2 copied to clipboard

custom api call function

example/lib/main.dart

import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:kasim/Isolates/Parser.dart';
import 'dart:async';

import 'package:kasim/api.dart';



final apiPlugin = Api(timeout: 15);

void main() {

  runApp(const MaterialApp(home: MyApp(),));
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {

  var map = {};
  List<Model> list = [];
  Model? model;

  @override
  void initState() {
    super.initState();
    Future.delayed(Duration.zero, () async {
      // postRes = await apiPlugin.postJsonHttpReq(api: "https://reqres.in/api/users", data: {
      //   "name": "morpheus",
      //   "job": "leader"
      // }, loader: true, context: context);
      map = await apiPlugin.getJsonHttpReq(api: "https://reqres.in/api/users/2", loader: true, context: context, header: {
        'Content-Type': 'application/json; charset=utf-8',
        'Accept': 'application/json; charset=utf-8',
      });
      var json = jsonDecode(map["Body"]);
      model = await Parser<Model>(fromJson: (json) => Model.fromJson(json)).parseObject(jsonEncode(json['data']));
      print(jsonEncode(list));
      setState(() {});
    });
  }
  @override
  Widget build(BuildContext context) {
    return Scaffold(

      body: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          Text(jsonEncode(model))
        ],
      ), // This trailing comma makes auto-formatting nicer for build methods.
    );
  }
}

class Model {
  int id = 0;
  String email = '';
  String firstName = '';
  String lastName = '';
  String avatar = '';

  Model({
    required this.id,
    required this.email,
    required this.firstName,
    required this.lastName,
    required this.avatar
  });

  factory Model.fromJson(Map<String, dynamic> json) {
    return Model(
        id: json['id'],
        email: json['email'].toString(),
        firstName: json['firstName'].toString(),
        lastName: json['lastName'].toString(),
        avatar: json['avatar'].toString()
    );
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['id'] = this.id;
    data['email'] = this.email;
    data['first_name'] = this.firstName;
    data['last_name'] = this.lastName;
    data['avatar'] = this.avatar;
    return data;
  }
}