Home Flutter Create Data menggunakan Rest API

Create Data menggunakan Rest API

0

Get dan Create Data menggunakan Rest API

Apa itu CRUD?

CRUD adalah operasi dasar yang harus ada pada setiap sistem komputer, yang terdiri dari beberapa perintah pada sistem tersebut. Masing-masing fungsi sistem tersebut adalah Create, Read, Update, dan Delete.

  • Create secara istilah, create adalah salah satu fungsi dalam sebuah aplikasi yang berperan dalam membuat atau menginputkan data ke dalam sistem. Data ini nantinya akan terkirim ke database yang tertuju secara otomatis dari sistem yang Anda buat.
  • Read adalah perintah membaca. Maksud dari perintah ini adalah untuk menampilkan data yang diambil dari database yang terhubung dengan sistem. Perintah ini menggunakan id unik sebagai pembeda satu data dengan yang lainnya.
  • Update pada CRUD adalah sebuah perintah yang memungkinkan pengguna melakukan editing atau update informasi dari data yang sudah tersaji. Jadi, pengguna harus memposisikan opsi perintah ini pada bagian tampilan data yang Anda beri akses untuk bisa pengguna edit.
  • – Delete pada CRUD adalah fungsi hapus, yang memungkinkan pengguna aplikasi Anda untuk menghapus entri data yang tersedia. Pada proses kerja sistem penghapusan ini, jangan langsung hapus data yang pengguna hapus.

untuk pembahasan kali ini kita akan menggunakan Api yang telah disediakan oleh reqres.in

dan kita akan coba untuk Get dan Post data dari API reqres.in.

Post

Untuk Post kita akan menggunakann API

https://reqres.in/api/users

Tampilan Awal

Jadi sebelum kita mengget data kita perlu membuat perlu tampilan awal berikut tampilan awal, 

mport 'package:flutter/material.dart';

import 'person.dart';
import 'person_card.dart';

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

 @override
 State<MainPage> createState() => _MainPageState();
}

class _MainPageState extends State<MainPage> {
 Person? person;

 @override
 Widget build(BuildContext context) {
   return Scaffold(
       appBar: AppBar(
         title: const Text('Rest Api'),
       ),
       body: Center(
         child: Column(
           mainAxisAlignment: MainAxisAlignment.center,
           children: [
             person != null
                 ? PersonCard(person: person!)
                 : const Text('no data'),
             const SizedBox(
               height: 20,
             ),
             SizedBox(
               width: 100,
               child: ElevatedButton(
                   onPressed: () async {}, child: const Text('GET')),
             ),
             SizedBox(
               width: 100,
               child: ElevatedButton(
                   onPressed: () async {}, child: const Text('POST')),
             )
           ],
         ),
       ));
 }
}

Untuk tampilannya akan menjadi seperti berikut 

Setelah kita telah membuat tampil awal, lalu kita akan membuat class model sebagai wadah untuk menepatkan data data API agar dapat diakses pada UI Atau tampilan

Card

Setelah membuat tampilan awal kita juga akan membuat tampilan card untuk dapat menampilkan Data, Berikut kode untuk card

import 'package:flutter/material.dart';

import 'person.dart';

class PersonCard extends StatelessWidget {
 final Person person;

 const PersonCard({Key? key, required this.person}) : super(key: key);

 @override
 Widget build(BuildContext context) {
   return Container(
     padding: const EdgeInsets.all(15),
     width: 300,
     decoration: BoxDecoration(
         borderRadius: BorderRadius.circular(8), color: Colors.lightBlue[100]),
     child: Column(
       children: [
         Row(
           crossAxisAlignment: CrossAxisAlignment.start,
           children: [
             const SizedBox(
               width: 50,
               child: Text('ID',
                   style: TextStyle(
                     fontWeight: FontWeight.bold,
                   )),
             ),
             SizedBox(width: 220, child: Text(': ${person.id}'))
           ],
         ),
         Row(
           crossAxisAlignment: CrossAxisAlignment.start,
           children: [
             const SizedBox(
               width: 50,
               child: Text('Name',
                   style: TextStyle(
                     fontWeight: FontWeight.bold,
                   )),
             ),
             SizedBox(width: 220, child: Text(': ${person.name}'))
           ],
         ),
         Row(
           crossAxisAlignment: CrossAxisAlignment.start,
           children: [
             const SizedBox(
               width: 50,
               child: Text('Email',
                   style: TextStyle(
                     fontWeight: FontWeight.bold,
                   )),
             ),
             SizedBox(width: 220, child: Text(': ${person.email}'))
           ],
         )
       ],
     ),
   );
 }
}

Class Model

Untuk class model kita hanya menggunakan cara sederhana

class Person {
 int id;
 String name;
 String email;

 Person({required this.id, required this.name, required this.email});
}

Service

Setelah kita membuat model kita bisa memulai untuk Get Api menggunakan Dio, tetapi pertama kita perlu membuat class baru, dengan nama Services agar kita bisa menulis kode untuk mendapatkan Data dari API

import 'person.dart';

abstract class Services {
 /// Post Data / Create
 static Future<Person?> createUser(
     String firstName, String lastName, String email) async {}
}

Pada file Services kita perlu menyiapkan 2 Fungsi yang tipe datanya adalah Person Class atau Model yang telah kita buat yang akan kita buat untuk GET dan POST data Ke API, 

dan kita juga perlu menambahkan package DIO pada project kita dengan menuliskan 

flutter pub add dio

Kita bisa menuliskan command diatas dengan terminal di project kita 

Post API

Setelah kita membuat class serivce kita akan membuat Post untuk membuat / create data dari yang kita buat, kita perlu menambahkan kode pada fungsi Create User pada file Service

/// Post Data / Create
 static Future<Person?> createUser(
     String firstName, String lastName, String email) async {
   try {
     var response = await Dio().post('https://reqres.in/api/users',
     data: {
       'first_name' : firstName,
       'last_name' : lastName,
       'email' : email,
     });
     if (response.statusCode == 201) {
       return Person(
           id: int.tryParse(response.data['id'].toString())??0,
           name: response.data['first_name'] +
               '' +
               response.data['last_name'],
           email: response.data['email']);
     }
   } catch (e) {
     throw Exception(e.toString());
   }
 }
}

lalu pada pada tampilannya kita juga menambahkan kode pada button post dengan kode berikut

SizedBox(
 width: 100,
 child: ElevatedButton(
     onPressed: () async {
       Person? result  = await Services.createUser('Ahmad', 'Miqdad', '[email protected]');
       if(result != null){
         setState(() {
           person = result;
         });
       }
     }, child: const Text('POST')),
)

Berikut hasil dari Post 

Setelah Selesai lah pembahasan kita tentang POST API