Rabu, 10 September 2025

BlogSpot Aisah

 Membangun Aplikasi Responsif dengan Flutter Menggunakan Tema Hijau Pastel


Pendahuluan


Flutter adalah framework yang sangat populer untuk mengembangkan aplikasi mobile yang responsif dan dapat berjalan di berbagai platform, baik Android maupun iOS. Pada artikel ini, kita akan membahas bagaimana cara membuat aplikasi sederhana menggunakan Flutter dengan menggunakan tema hijau pastel dan layout responsif. Selain itu, aplikasi ini juga akan dilengkapi dengan elemen interaktif seperti kotak yang dapat diklik, di mana setiap kotak memberikan umpan balik kepada pengguna melalui Snackbar.


Struktur Aplikasi


Aplikasi yang akan kita buat terdiri dari beberapa komponen penting:


1. AppBar: Menampilkan judul aplikasi di bagian atas.

2. Body: Bagian utama aplikasi yang berisi daftar kotak-kotak yang bisa diklik.

3. Snackbar: Sebagai umpan balik saat kotak ditekan.

4. Footer: Teks footer di bagian bawah aplikasi.

5. Tema Hijau Pastel: Semua elemen aplikasi menggunakan warna hijau pastel yang ceria dan menyegarkan.


Langkah-langkah Membangun Aplikasi


1. Menyiapkan Tema Aplikasi


Pada tahap pertama, kita mendefinisikan MaterialApp yang merupakan root widget aplikasi kita. Dalam MaterialApp, kita juga menyetel tema aplikasi menggunakan `ThemeData`untuk menyesuaikan warna aplikasi. Pada aplikasi ini, kita memilih tema hijau pastel dengan `primarySwatch: Colors.green`.


```dart

MaterialApp(

  theme: ThemeData(

    primarySwatch: Colors.green, // Menggunakan warna hijau pastel untuk aplikasi

    visualDensity: VisualDensity.adaptivePlatformDensity, // Menyesuaikan tampilan pada berbagai platform

  ),

  home: HomePage(), // Menunjukkan halaman utama aplikasi

  debugShowCheckedModeBanner: false, // Menonaktifkan banner debug

);

```


Pada bagian ini, kita menonaktifkan debugShowCheckedModeBanner agar aplikasi tidak menampilkan banner debug yang biasanya muncul saat dalam mode pengembangan.


2. Membangun Halaman Utama (HomePage)


Halaman utama aplikasi diatur dalam widget HomePage yang menggunakan `Scaffold` sebagai struktur dasar aplikasi. Pada bagian ini, terdapat beberapa komponen utama seperti `AppBar`, `Column`, dan `SingleChildScrollView` yang memungkinkan tampilan aplikasi dapat digulirkan jika konten melebihi ukuran layar.


```dart

Scaffold(

  appBar: AppBar(

    title: Text("Praktikum1"), // Judul pada appbar

    backgroundColor: Colors.green.shade700, // Warna appbar hijau pastel

  ),

  body: LayoutBuilder(

    builder: (context, constraints) {

      return SingleChildScrollView(

        child: Column(

          crossAxisAlignment: CrossAxisAlignment.start,

          children: <Widget>[

            _buildHeader(),

            _buildContent(),

          ],

        ),

      );

    },

  ),

);

```


AppBar: Menampilkan judul aplikasi dengan warna hijau pastel yang lebih gelap menggunakan `Colors.green.shade700`.

Body: Bagian utama aplikasi yang terdiri dari dua bagian: header dan konten utama.


3. Header dan Konten Utama


Pada header, kita menampilkan teks yang bersifat informatif:


```dart

Container(

  padding: EdgeInsets.all(20),

  color: Colors.green.shade100, // Warna hijau pastel untuk header

  width: double.infinity,

  child: Text(

    'Klik box!',

    style: TextStyle(

      color: Colors.green.shade800,

      fontSize: 24,

      fontWeight: FontWeight.bold,

    ),

  ),

),

```


Konten utama terdiri dari beberapa kotak yang dapat diklik, yang masing-masing memiliki fungsi untuk menampilkan Snackbar ketika ditekan. Kita menggunakan`_buildClickableBox` untuk menghasilkan setiap kotak dengan warna hijau pastel yang berbeda, dan `GestureDetector` untuk menangkap interaksi pengguna.


```dart

Widget _buildClickableBox(String title, Color color) {

  return GestureDetector(

    onTap: () {

      _showSnackBar(context, "$title Ditekan!");

    },

    child: Container(

      margin: EdgeInsets.symmetric(vertical: 5),

      padding: EdgeInsets.all(20),

      decoration: BoxDecoration(

        color: color,

        borderRadius: BorderRadius.circular(12),

        boxShadow: [

          BoxShadow(

            color: Colors.black.withOpacity(0.1),

            blurRadius: 5,

            offset: Offset(0, 2),

          ),

        ],

      ),

      child: Center(

        child: Text(

          title,

          style: TextStyle(

            color: Colors.white,

            fontSize: 18,

            fontWeight: FontWeight.bold,

          ),

        ),

      ),

    ),

  );

}

```


`GestureDetector`: Digunakan untuk menangkap aksi ketukan (tap) pada kotak. Ketika kotak diklik, fungsi `onTap` akan dijalankan.

`_showSnackBar`: Fungsi ini menampilkan Snackbar dengan pesan yang menunjukkan nama kotak yang diklik.


4. Menampilkan Snackbar sebagai Umpan Balik


Fungsi `_showSnackBar` akan menampilkan umpan balik berupa pesan singkat di bagian bawah layar ketika kotak ditekan. Fungsi ini menggunakan `ScaffoldMessenger.of(context).showSnackBar` untuk menampilkan Snackbar dengan pesan yang telah diberikan.


```dart

void _showSnackBar(BuildContext context, String message) {

  ScaffoldMessenger.of(context).showSnackBar(

    SnackBar(

      content: Text(message),

      duration: Duration(seconds: 2),

    ),

  );

}

```


Snackbar adalah widget yang digunakan untuk menampilkan pesan singkat yang muncul di bagian bawah layar sebagai umpan balik kepada pengguna.


5. Footer dengan Pesan Ceria


Di bagian bawah aplikasi, kita menambahkan footer yang menampilkan teks ceria. Footer ini memiliki warna hijau pastel yang lebih gelap dan memberikan sentuhan akhir yang menyenangkan pada aplikasi.


```dart

Container(

  padding: EdgeInsets.all(15),

  color: Colors.green.shade800,

  child: Center(

    child: Text(

      'Footer Ceria Layout Responsif',

      style: TextStyle(color: Colors.white),

    ),

  ),

)

```


Footer ini ditambahkan menggunakan Container dengan padding dan warna latar belakang hijau pastel gelap, serta teks berwarna putih.


Kesimpulan


Dengan Flutter, kita bisa dengan mudah membuat aplikasi yang responsif dan interaktif. Dalam aplikasi ini, kita menggunakan beberapa widget penting seperti `LayoutBuilder`, `GestureDetector`, dan `Snack bar` untuk menciptakan pengalaman pengguna yang menyenangkan dan responsif. Desain dengan tema hijau pastel memberikan tampilan yang cerah dan menenangkan, sementara elemen-elemen yang dapat diklik memberikan interaksi yang menarik.


Flutter memberikan kemudahan dalam membangun aplikasi yang dapat beradaptasi dengan berbagai ukuran layar, serta menawarkan berbagai opsi untuk menambahkan interaktivitas dan desain yang menyenangkan. Dengan mengikuti tutorial ini, Anda dapat membuat aplikasi yang tidak hanya fungsional, tetapi juga estetis dan menyenangkan digunakan.


https://z91i206bq91i3.zapp.page/#/




_______________________________________________________



Membuat Aplikasi dengan Navigasi dan Bottom Navigation Bar di Flutter


Pada artikel ini, kita akan membahas kode Flutter yang membangun aplikasi dengan menggunakan navigasi antar halaman dan BottomNavigationBar. Aplikasi ini memiliki tiga halaman yang dapat diakses menggunakan tombol navigator.push() dan menu BottomNavigationBar di bagian bawah layar. Tema yang digunakan adalah hijau pastel, yang memberikan kesan lembut dan menyegarkan pada tampilan aplikasi.


Aplikasi ini cocok untuk praktikum bagi siswa yang baru belajar menggunakan Flutter untuk memahami konsep navigasi antar halaman dan penggunaan widget dasar seperti BottomNavigationBar dan Navigator.push().


Struktur Aplikasi


Aplikasi ini terdiri dari beberapa bagian penting:


1. MaterialApp - Merupakan widget root yang mengatur tema dan struktur aplikasi.

2. HomePage - Halaman utama dengan BottomNavigationBar dan pengaturan navigasi halaman.

3. Halaman 1 (FirstPage) - Halaman yang dapat mengarahkan pengguna ke halaman kedua dan ketiga.

4. Halaman 2 (SecondPage) - Halaman dengan tombol untuk kembali ke halaman pertama.

5. Halaman 3 (ThirdPage) - Halaman dengan tombol untuk kembali ke halaman pertama.


Kode yang Digunakan


Berikut adalah penjelasan kode untuk membangun aplikasi ini.


1. Menggunakan MaterialApp dan Tema


Pada bagian pertama aplikasi, kita menggunakan `MaterialApp` untuk menetapkan aplikasi sebagai aplikasi berbasis material design. Kita juga menetapkan tema hijau pastel dengan menggunakan `ThemeData`. Tema ini memberikan warna utama aplikasi menggunakan `primarySwatch: Colors.green`, yang memberikan kesan segar dan alami.


```dart

MaterialApp(

  theme: ThemeData(

    primarySwatch: Colors.green, // Tema hijau pastel

    visualDensity: VisualDensity.adaptivePlatformDensity, // Menyesuaikan tampilan di berbagai platform

  ),

  home: HomePage(), // Menetapkan halaman utama

  debugShowCheckedModeBanner: false, // Menonaktifkan banner debug

);

```


`primarySwatch`: Menentukan warna utama aplikasi (dalam hal ini hijau).

`visualDensity`: Mengatur kepadatan tampilan agar dapat menyesuaikan dengan berbagai platform.

`home: HomePage()`: Menetapkan halaman utama aplikasi (HomePage).


2. Halaman Utama (HomePage) dengan BottomNavigationBar


Halaman utama HomePage menggunakan `StatefulWidget` untuk memungkinkan perubahan status saat pengguna memilih item pada BottomNavigationBar. Di dalam HomePage, kita mendefinisikan beberapa hal:


`_selectedIndex`: Menyimpan index yang dipilih pada BottomNavigationBar.

`_onItemTapped`: Fungsi untuk mengubah halaman yang ditampilkan saat pengguna memilih item pada navigasi bawah.

`_getPage`: Fungsi untuk mengembalikan halaman yang sesuai berdasarkan index yang dipilih.


```dart

class _HomePageState extends State<HomePage> {

  int _selectedIndex = 0; // Index halaman yang dipilih


  void _onItemTapped(int index) {

    setState(() {

      _selectedIndex = index; // Mengubah halaman berdasarkan index yang dipilih

    });

  }


  Widget _getPage(int index) {

    switch (index) {

      case 0: return FirstPage(); // Halaman pertama

      case 1: return SecondPage(); // Halaman kedua

      case 2: return ThirdPage(); // Halaman ketiga

      default: return FirstPage(); // Default menampilkan halaman pertama

    }

  }

}

```


* **BottomNavigationBar**: Menyediakan navigasi bawah dengan tiga item, yang masing-masing mengarah ke halaman utama, halaman kedua, dan halaman ketiga.


```dart

BottomNavigationBar(

  currentIndex: _selectedIndex, // Menandakan halaman yang dipilih

  onTap: _onItemTapped, // Fungsi yang dipanggil saat item dipilih

  items: const <BottomNavigationBarItem>[

    BottomNavigationBarItem(

      icon: Icon(Icons.home), // Ikon untuk halaman pertama

      label: 'Halaman Utama', // Label untuk halaman pertama

    ),

    BottomNavigationBarItem(

      icon: Icon(Icons.face), // Ikon untuk halaman kedua

      label: 'Halaman Kedua', // Label untuk halaman kedua

    ),

    BottomNavigationBarItem(

      icon: Icon(Icons.cake), // Ikon untuk halaman ketiga

      label: 'Halaman Ketiga', // Label untuk halaman ketiga

    ),

  ],

  backgroundColor: Colors.green.shade100, // Warna latar belakang BottomNavigationBar

  selectedItemColor: Colors.green.shade800, // Warna untuk item yang dipilih

  unselectedItemColor: Colors.grey.shade600, // Warna untuk item yang tidak dipilih

)

```

3. Halaman-Halaman Aplikasi


FirstPage (Halaman Utama)


Pada FirstPage, pengguna dapat memilih untuk berpindah ke halaman kedua atau ketiga dengan menggunakan `Navigator.push()`. Halaman ini juga menampilkan dua tombol yang mengarahkan pengguna ke halaman yang dimaksud.


```dart

class FirstPage extends StatelessWidget {

  @override

  Widget build(BuildContext context) {

    return Center(

      child: Column(

        mainAxisAlignment: MainAxisAlignment.center,

        children: [

          Text(

            'Selamat datang di Halaman Utama!',

            style: TextStyle(fontSize: 24, fontWeight: FontWeight.bold, color: Colors.green.shade700),

          ),

          ElevatedButton(

            onPressed: () {

              Navigator.push(

                context,

                MaterialPageRoute(builder: (context) => SecondPage()),

              );

            },

            child: Text("Ke Halaman Kedua", style: TextStyle(color: Colors.white)),

            style: ElevatedButton.styleFrom(primary: Colors.green.shade300),

          ),

          ElevatedButton(

            onPressed: () {

              Navigator.push(

                context,

                MaterialPageRoute(builder: (context) => ThirdPage()),

              );

            },

            child: Text("Ke Halaman Ketiga", style: TextStyle(color: Colors.white)),

            style: ElevatedButton.styleFrom(primary: Colors.green.shade300),

          ),

        ],

      ),

    );

  }

}

```


SecondPage dan ThirdPage


Pada SecondPage dan ThirdPage, kita menggunakan 

`Navigator.pop()` untuk kembali ke halaman utama. Setiap halaman memiliki ikon dan teks untuk membedakan tampilan.


```dart

ElevatedButton(

  onPressed: () {

    Navigator.pop(context); // Kembali ke halaman utama

  },

  child: Text("Kembali ke Halaman Utama", style: TextStyle(color: Colors.white)),

  style: ElevatedButton.styleFrom(primary: Colors.green.shade300),

)

```


Halaman kedua dan ketiga menampilkan ikon yang berbeda dan memiliki tombol untuk kembali ke halaman utama.


Kesimpulan


Dengan menggunakan kode ini, kita dapat membuat aplikasi yang menyenangkan dengan navigasi antar halaman menggunakan BottomNavigationBar dan Navigator.push(). Aplikasi ini memberikan antarmuka yang mudah digunakan, dengan pilihan untuk berpindah antar halaman dengan tombol yang jelas dan intuitif.


Fitur yang Bisa Dipelajari

BottomNavigationBar: Memberikan cara yang sederhana untuk menavigasi antar halaman utama aplikasi.

`Navigator.push()` dan `Navigator.pop()`: Menyediakan cara untuk berpindah antar halaman dan kembali ke halaman sebelumnya.

StatefulWidget: Digunakan pada HomePage untuk mengelola status halaman yang dipilih pada BottomNavigationBar.


Aplikasi ini sangat cocok untuk praktikum Flutter di sekolah atau universitas karena mengajarkan dasar-dasar navigasi aplikasi di Flutter. Anda dapat menambahkan lebih banyak fitur seperti Drawer atau Dialog untuk memperkaya aplikasi ini lebih lanjut!

https://zn1je069fn1jf.zapp.page/#/

Rabu, 03 September 2025

Tampilan Login



✨ Pinterest: Tempat Nyari Inspo & Bikin Hidup Makin Estetik

Halo bestie! 👋
Kalian pasti udah nggak asing lagi sama Pinterest, kan? Yup, aplikasi kece yang penuh dengan vibes aesthetic, inspo outfit, desain kamar, sampe moodboard buat healing tipis-tipis. 🌸

Di Pinterest, kamu bisa:

  • 🖼️ Cari inspirasi buat apa aja (literally apa aja, dari outfit kuliah sampe resep dessert kekinian).

  • 🎨 Bikin board pribadi yang bisa jadi tempat ngumpulin semua hal yang bikin kamu happy.

  • 💡 Explore tren baru biar nggak ketinggalan update dunia estetik & kreatif.

Nah, pas pertama kali buka aplikasinya, kamu bakal disambut sama tampilan kece kayak di atas. Ada pilihan buat login pake email, Facebook, atau Google—praktis banget kan? Tinggal klik lanjutkan, beres deh.

Pinterest tuh kayak dunia paralel penuh ide, aesthetic feed, dan kreatifitas tanpa batas. Buat kamu yang suka desain, fashion, atau sekadar cari motivasi hidup, trust me, Pinterest is your new bestie. 💕

So, tunggu apa lagi?
Ciptain kehidupan yang kamu suka di Pinterest.
Karena hidup tuh lebih seru kalo dipenuhi inspirasi yang bikin hati happy. 🌈✨

Mau aku bikinin versi yang lebih singkat ala caption Instagram juga biar bisa dipasang di sosmed



https://www.figma.com/proto/VHvFp0hhVHRCCFSrAOb061/Untitled?node-id=1-2&p=f&t=la1qIYlLRGtCn4lk-0&scaling=scale-down&content-scaling=fixed&page-id=0%3A1&starting-point-node-id=1%3A2








Pengembangan Aplikasi Jadwal Pelajaran Berbasis CRUD dengan setState

Di era digital, pengelolaan jadwal pelajaran tidak lagi harus dilakukan secara manual. Dengan memanfaatkan teknologi seperti React, kita da...