kasim 0.0.2 kasim: ^0.0.2 copied to clipboard
custom api call function
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;
}
}