Variabel final
Termasuk bagian Membuat Aplikasi Interaktif dalam perjalanan Flutter di Coddy. Pelajaran 16 dari 34.
final adalah kata lain untuk nilai yang tidak berubah. Variabel final mendapatkan nilainya satu kali dan tidak bisa diberi nilai lain:
final int total = _tickets * 12;
total = 50; // error: total bersifat finalPerbedaan dengan const terletak pada kapan nilainya diketahui. Nilai const diketahui saat kamu menulis kode, seperti 12. Nilai final bisa dihitung saat aplikasi berjalan, seperti _tickets * 12, yang bergantung pada jumlah tiket saat ini.
const int price = 12; // selalu 12
final int total = _tickets * price; // diketahui saat build dijalankanVariabel final di bagian atas build dihitung ulang pada setiap build, jadi setelah setState, nilainya menjadi total yang baru. Gunakan final untuk nilai yang kamu tetapkan satu kali dan hanya dibaca, dan int atau String biasa untuk nilai yang kamu ubah, seperti _tickets.
Tantangan
MudahHarga satu tiket adalah 12. Di bagian atas build, tambahkan const int price = 12; dan variabel final bernama total yang merupakan hasil perkalian _tickets dengan price. Tampilkan sebagai Total: 12 sebagai pengganti Total: ?, sehingga tertulis Total: 24 setelah satu tiket ditambahkan.
Coba sendiri
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(
debugShowCheckedModeBanner: false,
home: const HomePage(),
);
}
}
class HomePage extends StatefulWidget {
const HomePage({super.key});
@override
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
int _tickets = 1;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Tickets')),
body: Center(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Text('Tickets: $_tickets', style: const TextStyle(fontSize: 24)),
Text('Total: ?', style: const TextStyle(fontSize: 24)),
const SizedBox(height: 16),
ElevatedButton(
onPressed: () {
setState(() {
_tickets++;
});
},
child: const Text('Add a ticket'),
),
],
),
),
);
}
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Membuat Aplikasi Interaktif
Latihan sendiri: Compiler Flutter online