0Pricing
Flutter Mobile Development · Pelajaran

Elemen UI Interaktif

Implementasikan elemen interaktif umum seperti tombol, TextFields, gambar, dan ikon agar aplikasi Anda lebih menarik.

Elemen UI Interaktif adalah pelajaran Flutter Mobile Development gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Flutter Mobile Development, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Flutter Mobile Development mencakup 4 pelajaran total.

Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.

Engaging User Interaction

Welcome to creating interactive UIs! In Flutter, interactive elements are key to making your apps useful and fun to use.

These elements let users tap, type, and see dynamic content. We'll explore common ones like buttons, text fields, images, and icons.

Buttons: Your First Interaction

Buttons are fundamental for user actions. Flutter provides several button types, each suited for different emphasis levels:

  • ElevatedButton: A material design button with a shadow, indicating high emphasis.
  • TextButton: A text label button with no elevation, for less prominent actions.
  • OutlinedButton: A button with a border, for medium-emphasis actions.

All buttons typically have an onPressed callback, which defines what happens when the button is tapped.

ElevatedButton in Action

The ElevatedButton is great for primary actions. Let's see how to create one that prints a message when tapped.

The onPressed property takes a function that executes when the button is pressed.

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('Elevated Button')),
        body: Center(
          child: ElevatedButton(
            onPressed: () {
              print('Button Tapped!');
            },
            child: const Text('Tap Me!')
          ),
        ),
      ),
    );
  }
}

TextButton & OutlinedButton

Beyond ElevatedButton, you'll often use TextButton and OutlinedButton.

  • TextButton is ideal for secondary actions, like 'Cancel' in a dialog.
  • OutlinedButton provides a visual border, suitable for actions that need a bit more emphasis than a TextButton but less than an ElevatedButton.

They both share the onPressed property for handling taps.

TextFields for User Input

To get text input from users, Flutter provides the TextField widget. It's highly customizable for various input needs, from simple names to complex multi-line text.

You'll often use a TextEditingController with TextField to programmatically control and retrieve the text input by the user.

Building an Input Field

Here's a basic TextField that uses a TextEditingController. We'll also add a button to display what the user typed.

Notice how the controller is passed to the TextField and used to get its current text.

import 'package:flutter/material.dart';

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

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

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final TextEditingController _controller = TextEditingController();

  @override
  void dispose() {
    _controller.dispose(); // Important to dispose controllers!
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('Text Field')),
        body: Padding(
          padding: const EdgeInsets.all(16.0),
          child: Column(
            children: [
              TextField(
                controller: _controller,
                decoration: const InputDecoration(
                  labelText: 'Enter your name',
                  border: OutlineInputBorder(),
                ),
              ),
              const SizedBox(height: 10),
              ElevatedButton(
                onPressed: () {
                  print('User typed: ${_controller.text}');
                },
                child: const Text('Show Input'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

Showing Visuals with Images

Images bring visual appeal to your app. Flutter's Image widget can load images from various sources:

  • Assets: Image.asset('assets/my_image.png') for local images bundled with your app.
  • Network: Image.network('https://example.com/image.jpg') for images from the internet.
  • Files: Image.file(File('path/to/image.jpg')) from the device's file system.
  • Memory: Image.memory(bytes) from raw byte data.

Loading an Image from Web

Let's display an image directly from a URL using Image.network. This is common for dynamic content.

Make sure you have an internet connection to load network images.

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('Network Image')),
        body: Center(
          child: Image.network(
            'https://flutter.dev/assets/images/shared/brand/flutter/logo/flutter-lockup-horizontal.png',
            width: 250,
          ),
        ),
      ),
    );
  }
}

Icons for Clarity & Guidance

Icons are small, symbolic images that convey meaning quickly. Flutter has a rich set of built-in Material Design icons, accessible through the Icons class.

You use the Icon widget to display them. Icons are excellent for navigation, indicating actions, or simply adding visual flair.

Adding a Simple Icon

Displaying an icon is straightforward. Just pass an icon from the Icons class to the Icon widget. You can also customize its color and size.

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('Flutter Icon')),
        body: const Center(
          child: Icon(
            Icons.star, // A star icon
            color: Colors.amber,
            size: 100.0,
          ),
        ),
      ),
    );
  }
}

Interactive Elements Challenge

Which of the following are valid ways to display an image in Flutter using the Image widget constructors?

Wrapping Up Interactive UI

Great job! You've learned how to implement essential interactive UI elements in Flutter. We covered:

  • Buttons: ElevatedButton, TextButton, OutlinedButton for user actions.
  • TextFields: For collecting user text input.
  • Images: Displaying visuals from assets or the network.
  • Icons: Adding symbolic visual cues to your app.

Mastering these elements is crucial for building engaging and user-friendly Flutter applications. Keep practicing!

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Elemen UI Interaktif” gratis?

Ya — teks lengkap “Elemen UI Interaktif” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Flutter Mobile Development, upgrade ke CoddyKit PRO. Kursus Flutter Mobile Development mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Elemen UI Interaktif”?

Implementasikan elemen interaktif umum seperti tombol, TextFields, gambar, dan ikon agar aplikasi Anda lebih menarik. Kamu berlatih Flutter Mobile Development dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Flutter Mobile Development?

Tidak diperlukan pengalaman sebelumnya. Flutter Mobile Development di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Elemen UI Interaktif” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Flutter Mobile Development ini?

Ya. Setiap pelajaran Flutter Mobile Development menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Widget Stateless vs. Stateful
  2. Widget Tata Letak Dasar
  3. Elemen UI Interaktif
  4. Membangun Daftar yang Dapat Digulir dengan ListView
← Kembali ke Flutter Mobile Development