Skip to content
Tutorial emka
Menu
  • Home
  • Debian Linux
  • Ubuntu Linux
  • Red Hat Linux
Menu

Tutorial Flutter: Animasi Blink Pada Teks

Posted on December 12, 2023

Flutter, dengan kerangka UI ekspresifnya, memungkinkan pengembang membuat pengalaman pengguna yang menarik melalui animasi. Dalam posting blog ini, kita akan membongkar sebuah widget Flutter yang disebut TapToScanTicker yang menggabungkan animasi fading in-and-out menggunakan AnimationController dan TweenSequence.

Memahami Widget Flutter

Mari kita mulai dengan memeriksa widget Flutter yang disediakan dalam source code:

class TapToScanTicker extends StatefulWidget {
  const TapToScanTicker({Key? key}) : super(key: key);

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

class _TapToScanTickerState extends State
    with SingleTickerProviderStateMixin {
  late AnimationController _controller;
  late Animation _fadeInOut;

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

    // Inisialisasi AnimationController
    _controller =
        AnimationController(vsync: this, duration: const Duration(seconds: 2));

    // Buat urutan Tween untuk fading in dan out
    _fadeInOut = TweenSequence([
      TweenSequenceItem(tween: Tween(begin: 0.0, end: 2.0), weight: 2),
      TweenSequenceItem(tween: Tween(begin: 2.0, end: 0.0), weight: 2),
    ]).animate(_controller);

    // Mulai loop animasi
    _controller.repeat(reverse: true);
  }

  @override
  Widget build(BuildContext context) {
    return FadeTransition(
      opacity: _fadeInOut,
      child: Text(
        'Tap to scan'.toUpperCase(),
        style: AppText.b1b?.copyWith(color: AppColors.antiqueRuby),
      ),
    );
  }

  @override
  void dispose() {
    // Dispose AnimationController untuk membebaskan sumber daya
    _controller.dispose();
    super.dispose();
  }
}

Rincian Widget

  • Class TapToScanTicker: Kelas ini adalah stateful widget yang membuat instance dari _TapToScanTickerState.

  • Class _TapToScanTickerState: Kelas state ini memperluas State dan menyertakan SingleTickerProviderStateMixin untuk menyediakan vsync untuk AnimationController.
  • initState: Metode ini menginisialisasi animation controller dan menyiapkan animasi fading in-and-out menggunakan TweenSequence.

  • build: Metode build mengembalikan widget FadeTransition yang menerapkan animasi fading ke widget Text yang menampilkan “Tap to scan”.

  • dispose: Metode dispose dipanggil saat widget dihapus dari pohon widget, memastikan bahwa AnimationController dihancurkan dengan benar untuk membebaskan sumber daya.

  • Inti dari widget ini terletak pada logika animasinya. TweenSequence digunakan untuk mendefinisikan urutan tween, menciptakan transisi yang mulus antara nilai-nilai. Dalam kasus ini, animasinya bergantian antara fading in (opacity meningkat) dan fading out (opacity berkurang).

  • Animasi dikontrol oleh AnimationController yang mengulang urutan secara terbalik, menciptakan efek fading in-and-out yang kontinu.

Integrasi Widget

Untuk mengintegrasikan widget TapToScanTicker ke dalam aplikasi Flutter kalian, cukup masukkan ke dalam pohon widget kalian. Contohnya:

class LayarKalian extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: TapToScanTicker(),
      ),
    );
  }
}

Sekarang, kalian memiliki animasi yang halus namun menarik yang mengundang pengguna untuk “Tap to scan” dalam aplikasi Flutter kalian.

Eksperimen dengan widget ini, ubah durasinya, atau sesuaikan gaya teks untuk mengintegrasikannya secara mulus ke dalam desain aplikasi kalian. Kemampuan animasi Flutter memberikan kemungkinan tak terbatas untuk menciptakan antarmuka pengguna yang menyenangkan.

Selamat mencoba lek!

Recent Posts

  • Gak Nyangka PearOS Balik Lagi! Distro Cantik Kini Pakai Arch Linux, Siap Bikin Kalian Tergoda
  • Inilah Trik Pakai Fedora Toolbox Biar Koding Makin Rapi dan Aman
  • Sudah Siap Pindah? Pop!_OS 24.04 LTS Hadir dengan Performa Plasma yang Lebih Baik
  • Masih Andalkan Teori? Ini Alasan Kenapa Perusahaan Besar Banting Setir ke Training Hands-On DevOps!
  • Wi-Fi 6 Dual-Band di Chip Kecil? Kenalan Sama MCU RA Family dari Renesas Ini!
  • Ribet Rakit Node? Muzi Baseboard Bikin Proyek Meshtastic Kalian Jadi Nggak Pusing Lagi!
  • Hati-Hati! Ekstensi VS Code Favorit Kalian Bisa Jadi Celah Pencurian Data Sensitif
  • Raspberry Pi Imager 2.0.2 Dirilis Bawa Fitur SSH Multi-Key dan Direct I/O!
  • Ubuntu 26.04 LTS Masih Ada Flavor Unity & MATE Desktop
  • Cinnamon 6.6 Rilis dengan Menu Aplikasi yang Dirancang Ulang
  • Aerynos 2025-12 Rilis dengan GNOME 49.2, Mesa 25.3, dan KDE Plasma 6.5.4
  • Cara Mempertahankan Sesi SSH Remote Tanpa Takut Putus Koneksi
  • Ini 2 Wallpapers Gnome Extension Percantik Desktop
  • Mozilla Rilis Firefox 146
  • Peazip 10.8 Dirilis, UI Baru dan Ada Fitur Previewing Dalam Arsip
  • Youyeetoo Mini PC: Sebuah NAS Ukuran Kecil Dengan 4 Slot M.2 dan 2 Port 2.5Gbe
  • Jolla Phone Kini Bisa di Pre-oder Jadi Ponsel Secure dengan Linux Independen
  • Inilah Proton Sheets: Spreadsheet Terenkripsi Online yang Aman dan Mudah Digunakan
  • Calibre 8.16 Dirilis dengan Fitur AI dan Perbaikan Bug
  • Radxa C200 Orin Developer Kit: Pakai Jetson Orin NX dan Ekspansi PCIe 4.0
  • Pimoroni Luncurkan Seri Badgeware Baru dengan E-Paper IPS dan LED Wearable
  • Metacomputing Rilis PC ARM 45 Tops Berdaya CIX CP8180 yang Siap Pakai
  • Ubuntu Pro Kini Gratis untuk Pengguna WSL
  • Alpine Linux 3.23 Dirilis dengan Linux Kernel 6.18 LTS, GNOME 49, dan KDE Plasma 6.5
  • Kernel Linux 6.18 Akan Didukung LTS Hingga Desember 2027

Archives

  • December 2025
  • November 2025
  • October 2025
  • August 2025
  • April 2025
  • February 2025
  • November 2024
  • October 2024
  • September 2024
  • May 2024
  • March 2024
  • February 2024
  • January 2024
  • December 2023
©2025 Tutorial emka | Design: Newspaperly WordPress Theme