Cara Integrasi DOKU ke Aplikasi Flutter

Cara Integrasi DOKU ke Aplikasi Flutter

Halo sob! Kali ini ane pengen share tentang sebuah riset yang ane lakuin beberapa hari ke belakang. Ane ada project mobile app yang perlu integrasi ke payment gateway yang namanya DOKU. Ane tau payment gateway satu ini udah cukup lama, pas zaman DOKU masih belum terlalu terkenal dan bisa dibilang agak ribet buat setupnya waktu itu. Tapi kayanya udah banyak major update nih dari si DOKU dan mulai nyaman untuk dipake.

Integrasi DOKU Flutter


Oke, untuk bahan-bahan yang kita perlukan di sisi Flutter adalah webview. Disini ane gak pakai package webview_flutter kaya di tutorial-tutorial yang dikasih Google, tapi ane pakenya flutter_inappwebview. Package in_app_webview ini memungkinkan kita buat nempelin webview di aplikasi ini.


DOKU Payment URL

Disini ane gak bakalan bahas tentang gimana cara ngirim request ke DOKU nya. Tapi disini ane bakal pake yang namanya DOKU sandbox yang udah buatin kita form apa aja yang dibutuhin sama DOKU buat generate payment.url buat kita.

Jokul DOKU


  • Sebelum ke langkah selanjutnya, sobat bisa inspect element terlebih dahulu di browser sobat. Cara umumnya bisa dengan klik kanan -> Inspect Element. Nanti bakal muncul tampilan inspeksi dari website sandbox demo tersebut.
Jokul DOKU - Inspect Element


  • Setelah itu baru kita bisa klik tombol PURCHASE nya aja
Purchase


  • Di tampilan Inspect Element, sobat pindah ke tab Network, lalu cari API dengan url: <URL>, klik url tersebut, lalu dibawahnya ada tab Response.
Get URL from Network


  • Nah kita bisa dapetin payment.url yang udah DOKU buatin, yang nantinya bakal kita pake di aplikasi Flutter kita. Copy url tersebut dan simpan di notes.

Integrasi ke Flutter

Untuk integrasi ke flutter, sobat bisa ikuti langkah-langkah berikut
  • Tambahin package in_app_webview ke aplikasi kita dengan cara tambahin di pubspec.yaml
  • Jalanin flutter pub get buat nge-install package tersebut
  • Import package nya di aplikasi kita

import 'package:flutter/material.dart';
import 'package:flutter_inappwebview/flutter_inappwebview.dart';

  • Buat widget yang pake InAppWebView

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

  @override
  State createState() => _WebPageState();
}

class _WebPageState extends State {
  final GlobalKey webViewKey = GlobalKey();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: Column(
          children: [
            Expanded(
              child: InAppWebView(
                key: webViewKey,
                initialUrlRequest: URLRequest(
                  url: Uri.parse(
                      // ubah url dibawah ini
                      "https://sandbox.doku.com/checkout/link/0JLIXq08pYjDnP6hPXXknmMMyV3gu3ZF20233320053302808"),
                ),
                onLoadStart: (controller, url) {
                  if (url?.toString() == "https://doku.com/") {
                    Navigator.pop(context);
                  }
                },
              ),
            ),
          ],
        ),
      ),
    );
  }
}

Di widget tersebut, kita masukin widget InAppWebView, dimana kita passing url dari payment.url nya si DOKU ke initialUrlRequest. Nanti si InAppWebView bakalan nge-embed url tersebut di aplikasi Flutter kita.

Disini ane nambahin function onLoadStart untuk melakukan deteksi, apakah url yang ditampilin itu balik lagi ke redirect-nya si DOKU, dalam hal ini default-nya adalah "https://doku.com/". Ketika url yang di-load-nya itu balik ke default, kita bakal close halaman WebPage tersebut, dengan tujuan supaya user balik lagi ke halaman sebelum pembayaran. Disini sobat juga bisa handle redirect ke page manapun di aplikasi Flutter sobat.

Oke, untuk cara integrasi DOKU ke app flutter segitu aja, jika ada yang kurang boleh ditambahin, atau jika ada yang gak jelas mari kita discuss di comment section below sob! See ya!

Referensi:

Mengubah Aplikasi Browser Bawaan di Android

Mengubah Aplikasi Browser Bawaan di Android


Aplikasi browser merupakan aplikasi yang wajib dimiliki oleh perangkat smartphone. Ngomong-ngomong, ada banyak sekali aplikasi browser berbasis desktop, android, dan ios. Dan setiap pengguna perangkat tentunya punya aplikasi browser favoritnya sendiri. Ada banyak alasan mengapa suatu browser menjadi pilihan pengguna.

Connect Android ke Hidden WiFi

Connect Android ke Hidden WiFi

 

Keamanan jaringan menjadi salah satu hal yang perlu diperhatikan oleh para pemilik WiFi. Salah satu cara yang bisa digunakan untuk pengamanan adalah menyembunyikan SSID atau nama WiFi kita sob. Dengan begitu, hanya beberapa orang atau device aja yang bisa mengakses WiFi kita. 


Kali ini ane pengen share tentang gimana sih cara connect Android kita ke hidden WiFi. 

Copy Paste Tanpa Format

Copy Paste Tanpa Format

Copy Paste memindahkan text dari suatu tempat ke tempat lain. Kadang juga kalo misal kita copy dari website, pas kita paste di Word, malah jadi ada format-formatnya gitu. Padahal, kita bisa loh paste text dari web (atau hampir dari manapun juga) tanpa ada formatting-nya sob. Kita bisa pake shortcut berikut.


Tanpa format disini berarti gak ada alinea baru, gak ada perbedaan ukuran font, gak ada bold dan italic dan gak ada hyperlink. Sobat gak perlu lagi lah wasting time buat hapus format copas-an kita dari web. Kita cuman perlu paste text yang udah di copy langsung ke apps yang bakal kita paste-in.

Untuk paste tanpa format, kita bisa tekan Ctrl + Shift + V sebagai pengganti dari Ctrl + V. Hal ini bekerja di kebanyakan apps seperti web browser Google Chrome contohnya. Harusnya sih ini juga bisa kita lakukan di berbagai OS kaya Windows, Linux sama Chrome OS.

Baca Juga : Cara Ganti Orientasi Halaman di Google Docs

Kalo di Mac sih agak beda ya, shortcut nya itu Command + Option + Shift + V. Ini juga bekerja di kebanyakan apps di Mac OS juga sob.

Sayangnya nih sob, cara ini gak berhasil di Microsoft Word. Kita perlu cara khusus biar bisa copas tanpa ada format-format gitu. Untungnya, caranya cukup mudah dan menurut ane sih gak ribet-ribet amat lah ya. Kita bisa gunain special Paste option di ribbon buat "Keep Text Only". Kita juga bisa set default biar pas kita paste jadi "Keep Text Only".


Kalo masih gak jalan juga, kita bisa pake cara purba. Anjay. Buka notepad (atau apps lain tergantung OS kalian ya), terus paste deh disitu, abis gitu copy semua text-nya dari notepad, paste again di apps yang ingin kalian paste-in, and voila!

Nah itu dia sob, trick simple untuk paste teks tanpa format. Semoga bermanfaat and feel free to discuss in comment section. See ya! :

Sumber:
☕️ Penamaan di Java

☕️ Penamaan di Java

Beberapa orang mungkin biasanya skip dengan yang Namanya penamaan. Ada yang penyebabnya ribet lah, males lah, bahkan ada juga yang cuman bilang “yang penting jalan”. Hey hey hey . . .


Buat ane sendiri sih, penamaan itu penting. Kenapa? Karena because, itu akan memudahkan kita (atau bisa juga untuk orang lain) dalam hal maintenance dan keterbacaan code kita sob. Bayangin deh, kalo misal kita liat code orang yang susah banget di baca, kita juga bakal kesusahan itu nerusin atau benerin code orang tersebut kan, bisa-bisa kita cuman wasting time gara-gara baca kodingan doang.

Di Java sendiri, biasanya kita pake CamelCase untuk penulisan method, variable, class, package dan konstanta. Apa sih Camel case itu?
  • Huruf awal dari suatu kata atau singkatan pake huruf kapital
  • Huruf paling awal pake huruf kecil, dan huruf awal dari kata atau singkatan selanjutnya pake huruf kapital

Kurang lebih seperti itulah si camel case ini. Biar lebih jelasnya tentang penamaan di Java ini langsung ae ya kita ke contoh:

  • Class dan Interface
    • Nama class itu harusnya sih kata benda, dengan huruf awal dari campuran kata itu kapital semua. Nama interface pun sama aturannya dengan class
    • Alangkah baiknya semuanya adalah “kata”, bukan singkatan

    interface LoveProgramming
    class LoveJava implements LoveProgramming
        
    interface SimpleInterface
    class SimpleClass implements SimpleInterface

  • Method
    • Nama method itu kalo bisa sih kata kerja, dengan huruf paling awalnya itu huruf kecil dan huruf pertama dari kata selanjutnya itu huruf besar

    void changeLanguage(String language) {...}
    void sumCount(int[] arrOfNum) {...}
    void getDateNow() {...}
    void calculateNumber(int firstNumber, int secondNumber) {...}

  • Variable
    • Gak boleh diawali dengan garis bawah (‘_’) atau dollar (‘$’)
    • Harus mnemonic, artinya mudah diingat. Soalnya kan si variable ini bakal banyak kita panggil setiap kali kita butuhkan
    • Hindari nama variable yang satu huruf, kecuali kalo emang variable nya itu temporary (sementara doang)

    int page;
    String postTitle;
    int postCount;
    
    // Temporary Variable pada looping Java
    for (int i = 0; i < 10; i++) {
      // Do something here
    }

  • Constant
    • Semuanya huruf kapital, perkatanya itu di pisah pake garis bawah

    static final int INITIAL_PAGE = 1;
    
    // Public Constants
    public static final String WELCOME_TO_MY_PROGRAM = "Selamat Datang di Program Saya";
    public static final String HELLO_WORLD = "Halo, Dunia!";

  • Package
    • Awalan dari suatu package itu selalu ditulis dalam huruf kecil ASCII dan harus salah satu dari top-level domain kaya com, edu, gov, mil, net, org
    • Komponen selanjutnya dari package, biasanya bervariasi berdasarkan penamaan organisasinya

    com.google.android
    net.kursigoyang.blog

Nah itu dia sob, tentang penamaan di bahasa Java. Ane biasanya juga nerapin ini di JavaScript sih cuman dengan beberapa custom, menyesuaikan dengan di platform apa sih ane ngoding. Yuk yang mau diskusi boleh kok drop di bawah ya!

Referensi:
  • https://www.geeksforgeeks.org/java-naming-conventions/
Credit:
☕️ this pada Pemrograman Java

☕️ this pada Pemrograman Java

this adalah sebuah keyword dalam bahasa Java. Keyword ini digunakan di dalam method atau constructor pada sebuah class. this ini bekerja sebagai acuan dari object saat ini, yang object tersebut bisa berupa method atau constructor yang dipanggil. this ini juga bisa digunakan untuk memanggil objek di dalam suatu instance method atau constructor.

Keyword this bisa sangat berguna dalam menangani Variable Hiding. Kita itu gak bisa buat dua variabel lokal atau dua variabel instance dengan nama yang sama. Namun, sah-sah saja jika kita buat satu variabel instance dan satu local variable atau parameter method dengan nama yang sama. Variabel lokal akan menyembunyikan variabel instance, inilah yang kita sebut Variable Hiding.
class KursiGoyang {
 int iniVariabel = 5;

 public static void main(String args[]) {
  KursiGoyang obj = new KursiGoyang();
  obj.iniMethod(20);
  obj.iniMethod();
 }

 void iniMethod(int iniVariabel) {
  iniVariabel = 10;
  System.out.println("Nilai iniVariabel adalah : " + iniVariabel);
 }

 void iniMethod() {
  int iniVariabel = 40;
  System.out.println("Nilai iniVariabel adalah : " + iniVariabel);
 }
}
Outputnya adalah sebagai berikut :
Nilai iniVariabel adalah 10
Nilai iniVariabel adalah 40
Seperti yang bisa kita liat, variabel instance tersembunyi, dan nilai dari local variabel (atau parameter dari method) lah yang ditampilin, bukan variabel instance. Untuk menyelesaikan masalah tersebut, digunakanlah keyword this diikuti dengan field/variabel untuk menampilkan hasil dari variabel instance.
class KursiGoyang {
 int iniVariabel = 5;

 public static void main(String args[]) {
  KursiGoyang obj = new KursiGoyang();
  obj.iniMethod(20);
  obj.iniMethod();
 }

 void iniMethod(int iniVariabel) {
  iniVariabel = 10;
  System.out.println("Nilai iniVariabel adalah : " + this.iniVariabel);
  System.out.println("Nilai iniVariabel adalah : " + iniVariabel);
 }

 void iniMethod() {
  int iniVariabel = 40;
  System.out.println("Nilai iniVariabel adalah : " + this.iniVariabel);
  System.out.println("Nilai iniVariabel adalah : " + iniVariabel);
 }
}
Outputnya adalah sebagai berikut :
Nilai iniVariabel adalah 5
Nilai iniVariabel adalah 10
Nilai iniVariabel adalah 5
Nilai iniVariabel adalah 40
This Keyword

Keyword this pada ConstructorKeyword this juga bisa kita gunakan di dalam sebuah contructor untuk memanggil constructor lain di class yang sama. Pemanggilan ini disebut Explicit Constructor Invocation. Hal ini terjadi jika sebuah class memiliki dua constructor, satu yang tanpa argument, dan satu lagi punya argument. Lalu, si this keyword bisa kita pake untuk manggil constructor yang punya argument dari constructor yang gak punya argument, soalnya constructor yang punya argument gak bisa kita panggil secara eksplisit.

Note:
  • this ini cuman bisa jadi statement pertama di constructor
  • Constructor bisa punya keyword this atau super, tapi gak bisa punya keduanya
class KursiGoyang {

 KursiGoyang() {
  this("KursiGoyang");
  System.out.println("Di dalam Constructor tanpa Parameter");
 }

 KursiGoyang(String str) {
  System.out.println("Di dalam Constructor pake Parameter : " + str);
 }

 public static void main(String args[]) {
  KursiGoyang obj = new KursiGoyang();
 }
}
Outputnya adalah sebagai berikut :
Di dalam Constructor pake Parameter KursiGoyang
Di dalam Constructor tanpa Parameter

Keyword this pada Method

Keyword this juga bisa kita pake didalam method untuk memanggil method lain dari class yang sama.
class KursiGoyang {

 public static void main(String args[]) {
  KursiGoyang obj = new KursiGoyang();
  obj.methodKedua();
 }

 void methodPertama() {
  System.out.println("Di dalam Method Pertama");
 }

 void methodKedua() {
  System.out.println("Di dalam Method Kedua");
  this.methodPertama();
 }
}
Outputnya adalah sebagai berikut :
Di dalam Method Kedua
Di dalam Method Pertama
Nah, itulah pembahasan tentang keyword this. Semoga bermanfaat ya dan jangan lupa bahagia sob!

Artikel ini hasil terjemahan dari https://javabeginnerstutorial.com/core-java-tutorial/this-keyword-java/
PreferenceManager Android Deprecated?

PreferenceManager Android Deprecated?

Belakangan ini, selama proses build aplikasi Android, ane sering nemuin warning warna merah bertuliskan PreferenceManager.getDefaultSharedPreferences has deprecated. Setelah mencari kesana kemari ternyata nemu penyebab dan solusinya.

Key - Android SharedPreference

Menurut sumber yang ane dapet sih, di Android Q, method untuk inisialisasi SharedPreference tersebut udah deprecated alias usang. Solusinya adalah dengan migrasi ke AndroidX. Kenapa harus ke AndroidX? Karena, ada method baru yang bisa kita gunakan untuk inisialisasi SharedPreference di AndroidX. Sebenernya sih bukan bawaan AndroidX nya, tapi kita harus implement salah satu library dari Android nya sendiri :

Untuk yang pake Java
implementation "androidx.preference:preference:1.1.0"
Untuk yang pake Kotlin
implementation "androidx.preference:preference-ktx:1.1.0"
Nah itu dia sob, solusi yang mungkin bisa membantu ketika nemu warning terkait SharedPreference ini. Sebenernya agak ribet juga sih kalo emang harus migrate ke AndroidX, apalagi jika kita masih pake library yang belum support AndroidX atau yang udah gak di support sama si pemilik library-nya. Kalo kasusnya begitu ya mau gak mau ganti library atau bedah librarynya sendiri hehe . . Jangan lupa bahagia ya sob!

Referensi :
Cara Ganti Orientasi Halaman di Google Docs

Cara Ganti Orientasi Halaman di Google Docs

Penggunaan orientasi pada dokumen sangatlah masuk akal dan tentunya berguna sekali. Ketika kita membutuhkan ruang secara horizontal, kita bisa menggunakan mode landscape, sedangkan ketika kita membutuhkan ruang secara vertikal, kita bisa menggunakan mode portrait.

Google Docs

Mengubah Orientasi di Google Docs

Disini ane menggunakan Google Docs sebagai apps yang digunakan dalam office. Kenapa Google Docs? Alasan utamanya sih simple, yaitu Google Docs ini adalah aplikasi gretongan alias gratis. Maklum lah, ketebalan dompet sangat mempengaruhi ketika ane ingin beli Microsoft Office, lagian di Linux ga support (atau ane ga nemu caranya.. hemm)

Baca Juga : Android Apps untuk Test Hardware

Untuk mengubah orientasi halaman di Google Docs ini ada batasannya sob. Yaitu kita gak bisa ganti orientasi dari sebagian halaman. Jadi kalo mau ganti orientasi halaman, ya bakal keganti semuanya gitu, ga kaya Microsoft yang katanya bisa ganti orientasi per halaman. Jadi kalo kita ganti orientasi dari suatu halaman, halaman lain gak akan ganti. Well, namanya juga gretongan, syukur-syukur Google udah buatin aplikasi office ini, daripada enggak!

Langsung aja, untuk mengubah orientasi tentunya kita harus buka dulu Google Docs nya. Buka docs.google.com dan buat dokumen baru sob, dan oh iya jangan lupa login terlebih dahulu menggunakan akun Google sobat. Kalo belum punya ya bikin lah dulu. Setelah dokumen baru terbuat, klik File terus ke Page Setup (atau kalo yang versi bahasa Indonesia raya nya itu ‘Penataan Halaman’).

Menu File

Di page setup ini kita bakal liat opsi Orientation/Orientasi. Nah disini kita bisa milih mana orientasi yang bakal kita pakai, bisa Landscape ataupun Portrait (Lanskap atau Potret).

Page Setup

Buat kamu yang pengen jadiin si lanskap ini sebagai default atau bawaannya, kita bisa mengetuk tombol “Tetapkan Sebagai Default”. Jadi tiap kita buat dokumen baru, si orientasi halamannya bakalan sesuai pengaturan yang kita tetapkan.

Nah itu dia sob sedikit bahasan yang bisa kita share. Semoga bermanfaat dan jangan lupa untuk bahagia!
Offline Game Chrome without Ofline

Offline Game Chrome without Ofline

Chrome memiliki game lari yang ga abis-abisnya, yang bisa kita mainkan kapanpun ketika komputer/ponsel kita offline, tapi tahukan sobat kalo game "Dino" yang ada di Chrome itu bisa kita mainkan tanpa harus memutuskan koneksi Internet?

Dino

Kita hanya perlu mengetikkan chrome://dino di address bar, dan layar "No Internet" akan terbuka. Tekan spasi untuk mulai bermain. Sekarang, game tersebut memiliki kue ulang tahun dan topinya untuk merayakan 4 tahun game tersembunyi tersebut. Makanya, pas pertama kali oe liat game ini, ko ada kue sama topinya, jangan-jangan ini untuk si dino kebal selama sekian detik, eh ternyata bukan, hihi . .

Nah, itu dia sob sedikit info buat para 'Dino Lover'. Ada pertanyaan? Boleh kok, coret di kolom komentar ya!