Bukalapak

Kamis, 22 April 2021

Tutorial Fetch Data dari Internet di Flutter

 Mengambil data dari internet diperlukan untuk sebagian besar aplikasi. Untungnya, Dart dan Flutter menyediakan alat, seperti paket http, untuk jenis pekerjaan ini.

Langkah-langkahnya sebagai berikut :

1. Tambahkan httppaket

The httppaket menyediakan cara paling sederhana untuk mengambil data dari internet.

Untuk menginstal httppaket, tambahkan ke bagian dependensi pubspec.yamlfile. Anda dapat menemukan versi terbaru dari httppaket pub.dev.

dependencies:
  http: <latest_version>

Impor paket http.

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

Selain itu, di file AndroidManifest.xml Anda, tambahkan izin Internet.

<!-- Required to fetch data from the internet. -->
<uses-permission android:name="android.permission.INTERNET" />

2. Buat permintaan jaringan

Resep ini membahas cara mengambil album sampel dari JSONPlaceholder menggunakan http.get()metode tersebut.

Future<http.Response> fetchAlbum() {
  return http.get(Uri.https('jsonplaceholder.typicode.com', 'albums/1'));
}

The http.get()Metode mengembalikan Futureyang berisi Response.

  • Futureadalah kelas Dart inti untuk bekerja dengan operasi asinkron. Objek Future mewakili nilai potensial atau kesalahan yang akan tersedia di masa mendatang.
  • The http.Responsekelas berisi data yang diterima dari panggilan http sukses.


3. Ubah respons menjadi objek Dart kustom

Meskipun mudah untuk membuat permintaan jaringan, bekerja dengan raw Future<http.Response>sangatlah tidak nyaman. Untuk membuat hidup Anda lebih mudah, ubah http.Responsemenjadi objek Dart.

Buat Albumkelas

Pertama, buat Albumkelas yang berisi data dari permintaan jaringan. Ini termasuk konstruktor pabrik yang membuat Albumdari JSON.

Mengonversi JSON dengan tangan hanyalah salah satu opsi. Untuk informasi lebih lanjut, lihat artikel lengkap tentang JSON dan serialisasi .

class Album {
  final int userId;
  final int id;
  final String title;

  Album({@required this.userId, @required this.id, @required this.title});

  factory Album.fromJson(Map<String, dynamic> json) {
    return Album(
      userId: json['userId'],
      id: json['id'],
      title: json['title'],
    );
  }
}

Ubah http.ResponsemenjadiAlbum

Sekarang, gunakan langkah-langkah berikut untuk memperbarui fetchAlbum() fungsi untuk mengembalikan Future<Album>:

  1. Ubah isi respons menjadi JSON Mapdengan dart:convertpaket.
  2. Jika server mengembalikan respons OK dengan kode status 200, maka ubah JSON Mapmenjadi Album menggunakan fromJson()metode pabrik.
  3. Jika server tidak mengembalikan respons OK dengan kode status 200, lemparkan pengecualian. (Bahkan dalam kasus respons server "404 Not Found", berikan pengecualian. Jangan kembali null. Ini penting saat memeriksa data di snapshot, seperti yang ditunjukkan di bawah ini.)
import 'dart:convert';

Future<Album> fetchAlbum() async {
  final response = await http.get(Uri.https('jsonplaceholder.typicode.com', 'albums/1'));

  if (response.statusCode == 200) {
    // If the server did return a 200 OK response,
    // then parse the JSON.
    return Album.fromJson(jsonDecode(response.body));
  } else {
    // If the server did not return a 200 OK response,
    // then throw an exception.
    throw Exception('Failed to load album');
  }
}

Hore! Sekarang Anda memiliki fungsi yang mengambil album dari internet.

4. Ambil data

Panggil fetchAlbum()metode di salah satu metode initState()atau didChangeDependencies().

The initState()metode ini disebut persis sekali dan kemudian tidak pernah lagi. Jika Anda ingin memiliki opsi untuk memuat ulang API sebagai respons terhadap InheritedWidgetperubahan, masukkan panggilan ke dalam didChangeDependencies()metode. Lihat Stateuntuk lebih jelasnya.

class _MyAppState extends State<MyApp> {
  late Future<Album> futureAlbum;

  @override
  void initState() {
    super.initState();
    futureAlbum = fetchAlbum();
  }

Masa Depan ini digunakan di langkah berikutnya.

5. Menampilkan data

Untuk menampilkan data di layar, gunakan FutureBuilderwidget. The FutureBuilderwidget dilengkapi dengan Flutter dan membuatnya mudah untuk bekerja dengan sumber data asynchronous.

Anda harus memberikan dua parameter:

  1. Yang Futureingin Anda ajak kerja sama. Dalam hal ini, masa depan kembali dari fetchAlbum()fungsi tersebut.
  2. Sebuah builderfungsi yang memberitahu Flutter apa untuk membuat, tergantung pada keadaan Future: pemuatan, sukses, atau kesalahan.

Perhatikan bahwa snapshot.hasDatahanya ditampilkan true jika snapshot berisi nilai data bukan null.

Karena fetchAlbumhanya dapat mengembalikan nilai bukan null, fungsi tersebut harus mengeluarkan pengecualian bahkan dalam kasus respons server "404 Not Found". Melemparkan pengecualian set yang snapshot.hasErroruntuk true yang dapat digunakan untuk menampilkan pesan kesalahan.

Jika tidak, spinner akan ditampilkan.

FutureBuilder<Album>(
  future: futureAlbum,
  builder: (context, snapshot) {
    if (snapshot.hasData) {
      return Text(snapshot.data!.title);
    } else if (snapshot.hasError) {
      return Text("${snapshot.error}");
    }

    // By default, show a loading spinner.
    return CircularProgressIndicator();
  },
);

Mengapa fetchAlbum () dipanggil initState ()?

Meskipun nyaman, tidak disarankan untuk melakukan panggilan API dalam suatu build()metode.

Flutter memanggil build()metode setiap kali perlu mengubah apa pun dalam tampilan, dan ini sering terjadi secara mengejutkan. Meninggalkan fetchpanggilan dalam build()metode Anda akan membanjiri API dengan panggilan yang tidak perlu dan memperlambat aplikasi Anda.

Menguji

Coding Lengkap

import 'package:flutter/material.dart';

import 'dart:async';
import 'dart:convert';
import 'package:http/http.dart' as http;
import 'models/Album.dart';

Future<Album> fetchAlbum() async {
final response =
await http.get(Uri.https('jsonplaceholder.typicode.com', 'albums/1'));

if (response.statusCode == 200) {
// If the server did return a 200 OK response,
// then parse the JSON.
return Album.fromJson(jsonDecode(response.body));
} else {
// If the server did not return a 200 OK response,
// then throw an exception.
throw Exception('Failed to load album');
}
}

void main() => runApp(MyApp());

class MyApp extends StatefulWidget {
MyApp({Key key}) : super(key: key);

@override
_MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
Future<Album> futureAlbum;

@override
void initState() {
super.initState();
futureAlbum = fetchAlbum();
}

@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Fetch Data Example',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: Scaffold(
appBar: AppBar(
title: Text('Anugerah_IF6MB_Tugas 6 --> Fetch Data Example'),
),
body: Center(
child: FutureBuilder<Album>(
future: futureAlbum,
builder: (context, snapshot) {
if (snapshot.hasData) {
return Text(snapshot.data.title);
} else if (snapshot.hasError) {
return Text("${snapshot.error}");
}

//By default, show a loading spinner,
return CircularProgressIndicator();
}),
)));
}
}


Hasil







"teknik informatika universitas bina darma palembang"

Tutorial membuat Class di Flutter

 Apa itu Class?

Class adalah cetak biru atau blueprint dari object. Class digunakan hanya untuk membuat kerangka dasar. Yang akan kita pakai nantinya adalah hasil cetakan dari class, yakni object.

Sebagai analogi, class bisa diibaratkan dengan laptop atau notebook. Kita tahu bahwa laptop memiliki ciri-ciri seperti merk, memiliki keyboard, memiliki processor, dan beberapa ciri khas lain yang menyatakan sebuah benda tersebut adalah laptop. Selain memiliki ciri-ciri, sebuah laptop juga bisa dikenakan tindakan, seperti: menghidupkan laptop atau mematikan laptop.

Class dalam analogi ini adalah gambaran umum tentang sebuah benda. Di dalam pemrograman nantinya, contoh class seperti: koneksi_database dan profile_user.

Objek memiliki anggota yang terdiri dari fungsi dan data (masing-masing metode dan variabel instan)

. Saat Anda memanggil sebuah metode, Anda memanggilnya pada sebuah objek: metode tersebut memiliki akses ke fungsi-fungsi objek tersebut

dan data. Gunakan titik (.) untuk merujuk ke variabel atau metode instance:

Yukk sekarang aplikasikan nya di Flutter...

class Mahasiswa {
int nim;
String nama;
String kelas;
String alamat;
int nohp;
int tahunlahir;
int umur;
Mahasiswa(int n, String m, String k, String a, int h, int t, int u) {
nim = n;
nama = m;
kelas = k;
alamat = a;
nohp = h;
tahunlahir = t;
umur = u;
}
}

Sudah tau dong pastinya Int itu apa?

yang belum tau ku kasih tau ya..jika kita ingin mengisi data kita dengan angka maka kita gunakan Int(Integer), sedangkan untuk huruf saja kita gunakan String.

Oke sekarang kita mengisi data tersebut dengan data yang sebenarnya.


void main() {
Mahasiswa b = Mahasiswa(181420170, 'Muhammad Anugerah Nurrobi', 'IF6MB',
'OPI Elite', 0896, 1997, 24);
b.nim = 181420170;
b.nama = 'Muhammad Anugerah Nurrobi';
b.kelas = 'IF6MB';
b.alamat = 'OPI Elite';
b.nohp = 089696939349;
b.tahunlahir = 1997;
b.umur = 24;

runApp(MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Mahasiswa --> Tugas 5'),
),
body: Center(
child: Text(
"NIM ${b.nim} \n NAMA ${b.nama} \n Kelas ${b.kelas} \n
              Alamat ${b.alamat} \n No Hp ${b.nohp} \n
               Tahun Lahir ${b.tahunlahir} \n Umur ${b.umur}")),
),
));
}


Data tersebut sudah terisi sesuai dengan data yang di inginkan...

coding lengkapnya seperti ini

import 'package:flutter/material.dart';

class Mahasiswa {
int nim;
String nama;
String kelas;
String alamat;
int nohp;
int tahunlahir;
int umur;
Mahasiswa(int n, String m, String k, String a, int h, int t, int u) {
nim = n;
nama = m;
kelas = k;
alamat = a;
nohp = h;
tahunlahir = t;
umur = u;
}
}

void main() {
Mahasiswa b = Mahasiswa(181420170, 'Muhammad Anugerah Nurrobi', 'IF6MB',
'OPI Elite', 0896, 1997, 24);
b.nim = 181420170;
b.nama = 'Muhammad Anugerah Nurrobi';
b.kelas = 'IF6MB';
b.alamat = 'OPI Elite';
b.nohp = 089696939349;
b.tahunlahir = 1997;
b.umur = 24;

runApp(MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Mahasiswa --> Tugas 5'),
),
body: Center(
child: Text(
"NIM ${b.nim} \n NAMA ${b.nama} \n Kelas ${b.kelas} \n
                Alamat ${b.alamat} \n No Hp ${b.nohp} \n
                Tahun Lahir ${b.tahunlahir} \n Umur ${b.umur}")),
),
));
}


Hasilnya




"teknik informatika universitas bina darma palembang" 



Tutorial Membuat List dan Mapping di Flutter

 Assalamualaikum wr wb.

Kali ini saya akan membahas cara membuat list dan mapping di flutter, dengan editor Virtual Studio Code di Ubuntu 20.04 LTS secara sederhana.


dari soal di atas bagaimana kita untuk tau hasil total pembelian nasi ayam + sayurnya, mau tau caranya yuk di coba?

import 'package:flutter/material.dart';

void main() {
List<int> harga_menu = [3000, 12000, 13000, 7000, 15000];
var menu = {
'0': 'Nasi',
'1': 'Ikan',
'2': 'Ayam',
'3': 'Sayur',
'4': 'Rendang'
};

runApp(MaterialApp(
home: Scaffold(
body: Center(
child: Text(
"List ${harga_menu[0]} \n Ayam : ${harga_menu[2]} \n
                 Sayur :${harga_menu[3]} \n
                 Jumlah:${harga_menu[0]+harga_menu[2]+harga_menu[3]}"))),
));
}

Hasil nya 



Gampang banget kan..

teknik informatika universitas bina darma palembang


Kamis, 14 Februari 2019

Pengertian Sistem Komputer

    Komputer merupakan peralatan elektronik yang bermanfaat untuk melaksanakan berbagai pekerjaan yang dilakukan oleh manusia. Meskipun komputer berasal dari kata "komputer", komputasi yang memang dilaksanakannya mungkin tidak terlihat secar eksplisit. Ketika orang menggunakan komputer untuk membuat dokumen, berbagi perhitungan yang dilakukan tidak terlihat. sebagai contoh, ketika pemakai memilih pengaturan "justify" atau rata di batas kiri dan batas kanan dokumen perhitungan untuk menambahakan karakter-karakter spasi sebenarnya terjadi.

    Istilah sistem komputer kerap pula dijumpai. Sistem komputer berarti kombinasi komponen yang dipakai untuk memproses data menggunakan komputer. Komponen-komponen yang dimaksud dapat berupa perangkat lunak (software) dan perangkat keras (hardware).