Tutorial Membuat Spinner Multi Select Menggunakan flutter

Selamat malam teman teman,pada kesempatan kali ini saya ingin membagi tutorial bagaimana cara membuat spinner multi select menggunakan flutter dengan memanfaatkan package multi_select_flutter. Pada tutorial kali ini saya menggunakan versi ^4.0.0 .

Adapun hasil akhir tampilan dari tutorial kali ini adalah seperti berikut:





Disini saya mengasumsikan teman teman sudah bisa membuat project baru flutter, Di tutorial ini saya menggunakan IDE Android Studio, bagi teman teman yang menggunakan IDE Visual Studio Code tidak masalah karena itu tergantung dari kenyamanan teman teman dalam menulis code....

OK,Untuk menggunakan package multi_select_flutter kita harus menambahkan pada file  pubspec.yaml seperti contoh dibawah:


Jangan lupa setelah menambahkan dependencies ke pubspec.yaml agar melakukan perintah flutter pub get  pada terminal yang bertujuan memerintahkan flutter untuk menambahkan dependencies ke folder dependencies yang telah flutter sediakan.


Atau bisa dengan cara klik "Pub get" pada sudut kanan  atas di file pubspec.yaml.

Selanjutnya kita perlu ubah isi dari file main.dart  menjadi seperti berikut:

import 'package:flutter/material.dart';
import 'package:multi_select_flutter/bottom_sheet/multi_select_bottom_sheet_field.dart';
import 'package:multi_select_flutter/chip_display/multi_select_chip_display.dart';
import 'package:multi_select_flutter/util/multi_select_item.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Multi Select',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Multi Select'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key? key, required this.title}) : super(key: key);
  final String title;

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

class _MyHomePageState extends State<MyHomePage> {
  static List<SpinnerMulti> _angka = [
    SpinnerMulti(id: 1, name: "Satu"),
    SpinnerMulti(id: 2, name: "Dua"),
    SpinnerMulti(id: 3, name: "Tiga"),
    SpinnerMulti(id: 4, name: "Empat"),
    SpinnerMulti(id: 5, name: "Lima"),
  ];
  final _itemsAngka = _angka
      .map((angka) => MultiSelectItem<SpinnerMulti>(angka, angka.name))
      .toList();
  List<SpinnerMulti?> _selectedAngka = [];

  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text(widget.title),
        ),
        body: Container(
          padding: EdgeInsets.symmetric(vertical: 20, horizontal: 10),
          child: SingleChildScrollView(
            child: Column(
              children: [
                Container(
                    decoration: BoxDecoration(
                      border: Border.all(
                        color: Color.fromRGBO(33, 33, 33, 0.5),
                        width: 1,
                      ),
                      borderRadius: BorderRadius.circular(10),
                    ),
                    child: MultiSelectBottomSheetField<SpinnerMulti?>(
                      initialChildSize: 0.7,
                      decoration: BoxDecoration(color: Colors.transparent),
                      maxChildSize: 0.95,
                      title: Text("Angka"),
                      buttonText: Text(
                        "Angka",
                        style:
                            TextStyle(color: Color.fromRGBO(33, 33, 33, 0.7)),
                      ),
                      items: _itemsAngka,
                      searchable: true,
                      searchHint: "Cari",
                      buttonIcon: Icon(
                        Icons.add_circle_outline,
                        color: Color.fromRGBO(33, 33, 33, 0.5),
                      ),
                      cancelText: Text("Tutup"),
                      onConfirm: (values) {
                        setState(() {
                          _selectedAngka = values;
                        });
                      },
                      chipDisplay: MultiSelectChipDisplay(
                        decoration: BoxDecoration(
                          border: Border(
                            top: BorderSide(
                                width: 1.0,
                                color: Color.fromRGBO(33, 33, 33, 0.5)),
                          ),
                        ),
                        onTap: (item) {},
                      ),
                    ) // This trailing comma makes auto-formatting nicer for build methods.
                    ),
              ],
            ),
          ),
        ));
  }
}

class SpinnerMulti {
  final int id;
  final String name;

  SpinnerMulti({required this.id, required this.name});
}

Setelah semua langkah sudah kita lakukan,silahkan running project nya...


Sekian tutorial kali ini, Jangan sungkan untuk bertanya di kolom komentar di bawah jika mendapat  error....

 

Cara instalasi Framework Django

 Kali ini ketikanMD akan membuat tutorial yang sesuai dengan judulnya yaitu instalasi Framework django.

1. Pastikan kita sudah menginstall python, untuk mengecek dengan perintah python --version

2. Sekarang kita akan melakukan install PIP, PIP yaitu (PIP Install Packages) / Paket manager pada pemrograman python.

# apt install python3-pip python-dev

3. Melakukan verifikasi instalasi PIP.

$ pip3 -V


4. Selanjutnya kita akan membuat folder  di “~/ketikanMD/” dengan nama “django” untuk menampung project django kita.

5. membuat Env (pastikan sudah berada di dalam folder project) dengan Module yang digunakan untuk membuat Virtual Environments yaitu module venv, kegunaan Virtual environments untuk membuat sebuah environment yang terisolasi dari dunia luar. Sehingga, modul python apapun yang diinstall tidak mempengaruhi environment global, dan yang terpenting, project lainnya. 
$ python -m venv Env
* Terlihat ada folder dengan nama env

6. masuk/mangaktifkan Virtual Environment
$ source env/bin/activate
* Terlihat ada tanda (env) setalah mengeksekusi perintah diatas
7. Melihat package yang sudah diinstall pip.

8. Melakukan upgrade pip
$ pip install --upgrade pip


9. Melakukan instalasi django  disini kita akan install versi 2.2, disini bisa sesuaikan dengan kebutuhan teman".
$ pip install Django==2.2

10. Mengecek instalasi paket django menggunakan pip

11. Sekarang kita akan membuat project django dengan nama project “ketikanMD” dan secara otomatis akan terbuat folder berdasrkan nama project yang sudah ditentukan.

12. Menjalankan project yang kita buat, pastikan kita masuk ke dalam folder project kita yaitu ketikanMD

$ python manage.py runserver


13. Buka browser dan masukkan url http://127.0.0.1:8000 (sesuaikan dengan tampilan tanda kotak merah).



Sekarang kita sudah berhasil menginstall django dan menjalankan project django

14. Untuk Keluar dari environment
$ deactive
* secara otomatis tanda (env) akan hilang

Semoga Berhasil


Source code Aplikasi Mesin ATM Sederhana menggunakan bahasa pemrograman C++

Gimana kabarnya teman teman sekalian...

Hari ini saya akan membagikan source code  aplikasi Mesin ATM sederhana yang dibuat menggunakan bahasa pemrograman C++,dimana aplikasi ini memiliki 4 menu yaitu:

1. Tarik Tunai

2. Tabung Tunai

3. Cek Saldo

4. Transfer

Di dalam aplikasi ini juga diterapkan perulangan do while untuk menanyakan apakah akan melakukan transaksi kembali setelah transaksi sebelumnya berhasil...

Berikut saya lampir kan source code nya:

#include <iostream>
#include <cstdlib>

using namespace std;
int saldo_awal;

void header(){
cout<<"=========================================\n"
	<<"\t	SELAMAT DATANG DI ATM BERKAH		\n"
	<<"========================================= \n";
}
void footer(){
cout<<"=========================================\n"
	<<"\t	Terima Kasih atas kunjungan anda\n"
	<<"\t silahkan cek kembali uang anda\n"
	<<"dan pastikan tidak ada barang yang tertinggal\n"
	<<"========================================= \n";
}

void cekSaldo(){
    	cout<<"total saldo anda sekarang adalah "<<saldo_awal <<" rupiah"<< endl;
	cout<<"=========================\n";
}

int main(){
	
int tarik,setor,rekTujuan,transfer,kode;
string ulang;

header();
                    
cout<<"silahkan masukkan Saldo Awal anda:";
cin>>saldo_awal;

menu :
	cout<<"\nselamat datang\n\n";
	do{
	 system ("cls");
cout<<"PILIHAN MENU\n";
cout<<"1.tarik tunai\n2,tabung tunai\n3,cek saldo\n4,transfer\n\n";
cout<<"Masukkan kode menu :";
cin>>kode;
if(kode == 1){
	tarik :
cout<<"\n==========================\n";
cout<<"tarik tunai\n";
cout<<"============================\n";
cout<<"silahkan masukkan uang yang anda ingin ambil:";
cin>>tarik;
if(tarik<0){
cout<<"Jumlah penarikan masih kosong\n";
system("cls");
header();
goto tarik;
}
else{
	if (tarik>saldo_awal){
		cout<<"saldo tidak mencukupi\n";
	}
else{
	saldo_awal-=tarik;
	cout<<"=========================\n";
	cout<<"silahkan hitung kembali uang yang telah anda ambil\n";
	cekSaldo();
}
system("cls");
}
}else if (kode==2){
	setor :
cout<<"\n==========================\n";
cout<<"setor tunai\n";
cout<<"============================\n";
cout<<"silahkan masukkan uang yang anda ingin setor:";
cin>>setor;
if(setor<0){
cout<<"Jumlah setor masih kosong\n";
system("cls");
header();
goto setor;
}else{
	saldo_awal+=setor;
	cout<<"=========================\n";
	cout<<"silahkan hitung kembali uang yang telah anda ambil\n";
	cekSaldo();
}
}else if (kode==3){
	cout<<"\n=======================\n";
	cout<<"cek saldo\n";
	cout<<"=========================\n";
	cekSaldo();
system("cls");

}else if (kode==4){
	transfer :
cout<<"\n==========================\n";
cout<<"transfer\n";
	cout<<"=========================\n";
 cout << "Masukkan No. Rekening Tujuan: ";
      cin >> rekTujuan;
cout<<"============================\n";
cout<<"silahkan masukkan jumlah uang yang anda ingin transfer:";
cin>>transfer;
if(transfer<0){
cout<<"Jumlah transfer masih kosong\n";
system("cls");
header();
goto transfer;
}
else{
	if (transfer>saldo_awal){
		cout<<"saldo tidak mencukupi\n";
	}
else{
	saldo_awal-=transfer;
	cout<<"=========================\n";
	cout << " Anda telah transfer ke " << rekTujuan << " sebesar " << transfer <<
	" Rupiah"<< endl;
cekSaldo();
}
system("cls");
}
}else{
	cout<<"\nkode yang anda masukkan tidak ada,\npastikan kode yang anda masukkan benar\n";
system("pause");
system("cls");
header();
goto menu;
}
  cout << "Anda ingin melakukan transaksi lainnya ? <y/n> ";
      cin >> ulang;
      if (ulang == "y")
	{
	  system ("cls");
	}
      else if (ulang == "n")
	{
	  system ("cls");
	  cout <<
	    "Terima Kasih telah menggunakan ATM BERKAH\n Semoga hari anda menyenangkan ";
	}
}  while (ulang == "y");
}


Gambar Hasil menjalankan program


Saya berharap semoga melalui tulisan ini dapat membantu teman teman sekalian..

Menjalankan golang di Docker

Sekarang kita akan membahas bagaimana cara menjalankan file golang menggunakan docker, tanpa basa basi kita mulai:

1.Membuat folder sebagai contoh disini kita akan membuat foder dengan nama “belajar-golang” di dalam folder ~/Document/ untuk menampung file go dan Dockerfile. Setelah itu Masuk ke dalam folder  belajar-golang

2.Membuat file Dockerfile di folder belajar-golang yang didalamnya berisi script berikut.

FROM golang:latest

RUN mkdir /app

WORKDIR /app


3. Menjalankan dockerfile dengan membuat image baru sebagai contoh “go-simple” dengan perintah

- docker build -t go-simple .

4. Mengecek images “go-simple” yang telah dibuat dengan perintah

- docker images

5. Membuat container menggunakan image id “go-simple” dengan nama container “golang”.

- docker run -td -v ~/Documents/belajar-golang:/app --name golang 17f5d90daf3c

6. Mengecek container apakah sudah berjalan  dan pastikan status dalam keadaan up.

7. Sekarang kita akan membuat file main.go dengan isian code sebagai berikut

package main
import "fmt"
func main() {
   nama := "KetikanMd"
   fmt.Println(nama)
}

8. Pastikan file main.go dan dockerfile didalam folder yang sama.

9. Sekarang kita akan menjalankan file go ada di dalam container yang sudah syncron dengan file yang ada di local laptop kita.

- docker exec golang go run main.go

* maka output yang dikeluarkan yaitu ketikanMD sesuai output yang diinginkan pada file main.go

Semoga berhasil....





Cara mengetahui IP parangkat dalam satu jaringan

Kali ini ketikanmd akan menulis artikel berkaitan dengan pengalaman pribadi sipenulis, kasusnya saya sama rekan kerja sedang melakukan maintenance jaringan salah satu kendala yang kami hadapi yaitu kebingungan untuk mengatahui ip address perangkat access point hal ini dikarenakan yang melakukan settingan perangkat AP nya karyawan sebelumnya. setelah mencari beberapa cara kami mendapatkan satu cara yang dibilang cara terakhir yaitu menggunakan script setelah menemukan beberapa ip yang statusnya success maka kami coba satu" untuk mengetahui ip perangkat yang kami cari alhasil kami berhasil, tidak perlu banyak cerita langsung saja ke tutorialnya:

Note: disini menggunakan sistem operasi windows.

  1.  pertama buka powershell, dengan cara ketik powershell di pencarian windows

  2. Copykan script berikut ke powershell

Penjelasan:

-simpan perintah ping ke dalam variable $ping

$ping = New-Object System.Net.Networkinformation.Ping

1..254 | % { $ping.send(“192.168.7._$”) | select address, status}

  • 1..254 -> range ip yang akan diping

  • 192.168.7. -> network ip yang akan di ping.


Sesuaikan dengan case yang dilapangan, Semoga bermamfaat walaupun ini bukan cara yang terbaik tapi tidak menutup kemungkinan kita akan membutuhkan.



Mengerjakan challenge SOAL dengan menggunakan bahasa pemrograman C++

Hari ini saya akan mengerjakan sebuah soal dengan menggunakan bahasa pemrograman C++. Adapun soal yang akan saya kerjakan adalah sebagai berikut:

25 / 100

Keterangan:

- dibutuhkan 25 hari untuk membangun sebuah kebiasaan
- dibutuhkan 100 hari untuk membangun sebuah gaya hidup

Berdasarkan rumus di atas, seorang lelaki sebut saja si Aldi bertekad membuat kegiatan lari pagi sebagai gaya hidupnya. Jika lari pagi sudah tercatat sebagai kebiasaannya sejak Minggu, 1 Januari 2021 maka pada hari dan tanggal berapakah dia mulai lari pagi dan lari pagi menjadi gaya hidupnya? 

Ketentuan:

1. Tiap bulan memiliki 30 hari, tiap tahun memiliki 12 bulan.

2. Menggunakan maksimal 7 variabel. 

3. Terdapat 4 input-an untuk hari, tanggal, bulan dan tahun. 

4. Minimal terdapat dua penggunaan switch-case.

5. Terdapat penggunaan statement looping.


Berikut saya tampilkan source code nya:

#include <iostream>

using namespace std;

string KonversiHari (int inputHari){
  switch (inputHari){
    case 0:
      return "Minggu";
      break;
    case 1:
      return "Senin";
      break;
    case 2:
      return "Selasa";
      break;
    case 3:
      return "Rabu";
      break;
    case 4:
      return "Kamis";
      break;
    case 5:
      return "Jumat";
      break;
    case 6:
      return "Sabtu";
      break;
    default:
      return "Hari salah";
    }


}

string KonversiBulan (int inputBulan){
  switch (inputBulan){
    case 1:
      return "Januari";
      break;
    case 2:
      return "Februari";
      break;
    case 3:
      return "Maret";
      break;
    case 4:
      return "April";
      break;
    case 5:
      return "Mei";
      break;
    case 6:
      return "Juni";
      break;
    case 7:
      return "Juli";
      break;
    case 8:
      return "Agustus";
      break;
    case 9:
      return "September";
      break;
    case 10:
      return "Oktober";
      break;
    case 11:
      return "November";
      break;
    case 12:
      return "Desember";
      break;
    default:
      return "Bulan salah";
    }


}

int CekHari (int hari, int hitungan){
  if (hari == 0){
      if (((hitungan + hari) % 7) == 0){
	  return hari;
      }else{
	  return 7 - ((hitungan + hari) % 7);
      }
      return hari;
    }else
     return hari - (hitungan % 7);
}


void CekKebiasaan (string keterangan, int hari, int hitungan,
	      int inputTanggal, int inputBulan, int inputTahun, bool mulai){
  int tanggal = inputTanggal;
  int bulan = inputBulan;
  int tahun = inputTahun;
  if (mulai)
    {
      for (int i = hitungan; i >= 1; i--)
	{
	  tanggal--;
	  if (tanggal < 1)
	    {

	      tanggal = 30;
	      bulan--;
	      if (bulan < 1)
		{
		  bulan = 12;
		  tahun--;
		}
	    }

	}
    }
  else
    {

      for (int i = 1; i <= hitungan; i++)
	{

	  tanggal++;
	  if (tanggal > 30)
	    {
	      tanggal = 1;
	      bulan++;
	      if (bulan > 12)
		{

		  bulan = 1;
		  tahun++;
		}
	    }
	}

    }

  cout << keterangan <<
    KonversiHari (mulai ? CekHari (hari, hitungan)
		  : ((hitungan +
		      hari) %
		     7)) << ", " << tanggal << " " <<
    KonversiBulan (bulan) << " " << tahun;
}



int main (){
  int inputHari, inputTanggal, inputBulan, inputTahun;
  cout << "Masukkan hari (0 = Minggu..... 6 = Sabtu)" << endl;
  cout << "Pilihan Anda: ";
  cin >> inputHari;
  cout << "\nMasukkan tanggal: ";
  cin >> inputTanggal;
  cout << "\nMasukkan bulan: ";
  cin >> inputBulan;
  cout << "\nMasukkan tahun: ";
  cin >> inputTahun;
  CekKebiasaan ("\nAldi mulai pada hari ", inputHari, 25,
		inputTanggal, inputBulan, inputTahun, true);
  cout << "\nMenjadi kebiasaan pada hari " <<
    KonversiHari (inputHari) << ", " << inputTanggal << " " <<
    KonversiBulan (inputBulan) << " " << inputTahun;
  CekKebiasaan ("\nMenjadi gaya hidup pada hari ", inputHari, 75,
		inputTanggal, inputBulan, inputTahun, false);
  return 0;
}








Script mengaktifkan user hotspot sesuai jadwal harian pada mikrotik

Ketemu lagi niiiii, penulis akan membagikan tutorial dan script yang digunakan berdasarkan pengalaman pribadi si penulis kasusnya si pelanggan punya beberapa user hotspot sedangkan si pelanggan pengen setiap user bisa dipakai berdasarkan hari tertentu akhirnya setelah otak atik dan mencari tutorial di berbagai sumber akhirnya penulis menemukan script yang work it, langsung saja ke tutorial.

Hal pertama Pastikan pengaturan waktu pada router mikrotik sudah sesuai dengan waktu wilayah anda hal ini mutlak diperlukan ketika anda sudah implementasikan rule-rule berdasarkan waktu misalnya dalam case ini penggunaan scheduler

Pengaturan waktu pada router mikrotik memiliki alternatif lain yaitu menggunakan service NTP (Network Time Protocol) yang memungkinkan router bisa melakukan sinkronisasi waktu, untuk case ini router kita akan jadikan NTP Client, pengaturan sntp client pada router mikrotik bisa dilakukan pada menu System > SNTP Client.

SNTP Client

Setelah pengaturan sntp selesai dan waktu router mikrotik sudah sesuai sekarang kita akan membuat scheduler untuk menambahkan script.
Untuk penjadwalan kita bisa konfigurasi pada menu System > Scheduler lalu klik icon "+"  untuk membuat schedule baru. Berikut nama misalnya "Aktif User", waktu eksekusi script setiap jam 1 malam dan interval waktu setiap 1 hari, untuk kolom On Event masukkan script yang sudah disediakan dibawah.

Selanjutnya kita buatkan user hotspot di menu Ip > Hotspot, pada halaman hotspot pilih tab users  lalu klik icon "+"  untuk membuat User baru dan jangan lupa untuk menambahkan comment pada masing" user hal ini dikarenakan sebagai kunci pada script untuk melakukan disable atau enable user seperti pada gambar dibawah.

Untuk melakukan mengujian sesuaikan dengan waktu yang sudah disetting pada kolom Start Time.


Berikut penulis sertakan Script nya





:local date [/system clock get date]

# Math Calculation here
:local result ""
:local months [:toarray "jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec"]
:local daytbl [:toarray "sun,mon,tue,wed,thu,fri,sat"]

:local month [:pick $date 0 3]
:local day [:pick $date 4 6]
:local dayc [:pick $date 5 6]
:local year [:pick $date 7 11]

# if the first char is a 0 (zero) only read last char, else script fails
:if ([:pick $date 4 5] = 0) do={ :set day ($dayc)}

:local sum 0
:local aaa 0
:local yyy 0
:local mmm 0
:local nmonth 1

:for mindex from=0 to=[:len $months] do={
  :if ([:pick $months $mindex] = $month) do={:set nmonth ($mindex + 1) }
}

:set aaa ((14 - $nmonth) / 12)
:set yyy ($year - $aaa)
:set mmm ($nmonth + 12 * $aaa - 2)
:set sum (7000 + $day + $yyy + ($yyy / 4) - ($yyy / 100) + ($yyy / 400) + ((31 * $mmm) / 12))
:set sum ($sum - (($sum / 7) * 7))
:set result [:pick $daytbl $sum]

:if ($result = "mon") do={/ip hotspot user set disable=no [find comment=Senin]} else= {/ip hotspot user set disable=yes [find comment=Senin]}
:if ($result = "tue") do={/ip hotspot user set disable=no [find comment=Selasa]} else= {/ip hotspot user set disable=yes [find comment=Selasa]}
:if ($result = "wed") do={/ip hotspot user set disable=no [find comment=Rabu]} else= {/ip hotspot user set disable=yes [find comment=Rabu]}
:if ($result = "thu") do={/ip hotspot user set disable=no [find comment=Kamis]} else= {/ip hotspot user set disable=yes [find comment=Kamis]}
:if ($result = "fri") do={/ip hotspot user set disable=no [find comment=Jumat]} else= {/ip hotspot user set disable=yes [find comment=Jumat]}
:if ($result = "sat") do={/ip hotspot user set disable=no [find comment=Sabtu]} else= {/ip hotspot user set disable=yes [find comment=Sabtu]}
:if ($result = "sun") do={/ip hotspot user set disable=no [find comment=Ahad]} else= {/ip hotspot user set disable=yes [find comment=Ahad]}