Cara Membuat Halaman Login dengan Flutter

Cara Membuat Halaman Login dengan Flutter

Flutter adalah framework UI yang dirancang untuk membuat aplikasi yang indah dan berkinerja tinggi untuk berbagai platform. Artikel ini menjelaskan langkah-langkah membuat halaman login dengan Flutter, termasuk validasi input dan desain responsif.

1. Menyiapkan Proyek Flutter

Buat proyek Flutter baru dengan perintah berikut:

flutter create login_app

Buka proyek dengan editor pilihan Anda seperti VS Code atau Android Studio, kemudian jalankan aplikasi dengan perintah:

flutter run

2. Struktur Dasar Halaman Login

Buka file lib/main.dart dan buat struktur dasar untuk halaman login:

import 'package:flutter/material.dart';

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

class LoginApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: LoginPage(),
    );
  }
}

class LoginPage extends StatefulWidget {
  @override
  _LoginPageState createState() => _LoginPageState();
}

class _LoginPageState extends State<LoginPage> {
  final _formKey = GlobalKey<FormState>();
  final TextEditingController _emailController = TextEditingController();
  final TextEditingController _passwordController = TextEditingController();

  void _login() {
    if (_formKey.currentState!.validate()) {
      print('Email: ${_emailController.text}');
      print('Password: ${_passwordController.text}');
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(content: Text('Login Berhasil')),
      );
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Login'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Form(
          key: _formKey,
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              TextFormField(
                controller: _emailController,
                decoration: InputDecoration(
                  labelText: 'Email',
                  border: OutlineInputBorder(),
                ),
                keyboardType: TextInputType.emailAddress,
                validator: (value) {
                  if (value == null || value.isEmpty) {
                    return 'Email tidak boleh kosong';
                  } else if (!RegExp(r'^[^@]+@[^@]+\.[^@]+').hasMatch(value)) {
                    return 'Format email tidak valid';
                  }
                  return null;
                },
              ),
              SizedBox(height: 16),
              TextFormField(
                controller: _passwordController,
                decoration: InputDecoration(
                  labelText: 'Password',
                  border: OutlineInputBorder(),
                ),
                obscureText: true,
                validator: (value) {
                  if (value == null || value.isEmpty) {
                    return 'Password tidak boleh kosong';
                  } else if (value.length < 6) {
                    return 'Password harus lebih dari 6 karakter';
                  }
                  return null;
                },
              ),
              SizedBox(height: 16),
              ElevatedButton(
                onPressed: _login,
                child: Text('Login'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

3. Penjelasan Kode

  • TextEditingController: Digunakan untuk mengontrol input pada TextField.
  • Form dan GlobalKey: Membantu melakukan validasi pada form.
  • validator: Digunakan untuk memvalidasi input pada TextField.
  • SnackBar: Memberikan umpan balik kepada pengguna setelah login berhasil.

4. Menambahkan Validasi Input

Validasi input dilakukan menggunakan properti validator pada TextFormField. Pastikan validasi memenuhi kebutuhan aplikasi Anda.

5. Desain Responsif

Untuk memastikan aplikasi responsif, gunakan widget seperti SingleChildScrollView untuk menangani tampilan pada layar kecil.

SingleChildScrollView(
  child: Column(
    children: [
      // Tambahkan widget lainnya di sini
    ],
  ),
)

6. Menambahkan Navigasi

Setelah login berhasil, Anda dapat menavigasikan pengguna ke halaman dashboard:

Navigator.push(
  context,
  MaterialPageRoute(builder: (context) => DashboardPage()),
);

Kesimpulan

Dengan Flutter, Anda dapat membuat halaman login yang interaktif dan mudah digunakan. Validasi input, desain responsif, dan navigasi adalah elemen penting dalam membangun pengalaman pengguna yang baik.

Check Also

Pengenalan Flutter: Framework untuk Aplikasi Mobile Modern

Flutter adalah framework open-source yang dikembangkan oleh Google untuk membangun aplikasi mobile, web, dan desktop …

Verified by MonsterInsights