Pelacak Kebiasaan: Kebiasaanmu
Termasuk bagian Proyek dalam perjalanan Flutter di Coddy. Pelajaran 28 dari 36.
Aplikasi terakhir adalah pelacak kebiasaan: satu kartu untuk setiap kebiasaan dengan tanda centang untuk tiap hari dalam seminggu, rentetan hari, cincin yang terisi seiring berjalannya minggu, dan mode gelap. Aplikasi seperti ini biasanya dibuka orang setiap hari.
Datanya sudah ada di starter. Sebuah Habit memiliki nama dan tujuh bool, dari Senin sampai Minggu:
Habit('Drink water', [true, true, true, false, true, false, false]),
Habit('Stretch', List.filled(7, false)),List.filled(7, false) membuat list yang berisi tujuh false, yaitu seminggu tanpa melakukan apa pun.
Mulailah dengan satu kartu untuk setiap kebiasaan. Pada akhirnya, sebuah kartu akan memuat banyak hal, jadi kartu itu memiliki widget sendiri, HabitCard, yang menerima sebuah Habit. Layar tetap ringkas: sebuah ListView dengan satu HabitCard untuk setiap kebiasaan. Sisakan ruang di bagian bawah list (88 piksel) untuk tombol yang nantinya mengambang di sana.
Tantangan
MudahTampilkan kebiasaan:
- tulis widget
HabitCardyang menerimarequiredhabitdan menampilkan namanya dengantitleMediumdari theme - card berupa
Carddenganmargin: const EdgeInsets.only(top: 12), yang berisiColumndengan padding 16 piksel di sekelilingnya (sebentar lagi akan ada lebih banyak child) - ganti
CenterdenganListViewyang memiliki paddingEdgeInsets.fromLTRB(16, 8, 16, 88)dan satuHabitCarduntuk setiap kebiasaan
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,
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.green),
),
home: const HabitScreen(),
);
}
}
const List<String> dayNames = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];
class Habit {
Habit(this.name, this.days);
final String name;
final List<bool> days;
}
class HabitScreen extends StatefulWidget {
const HabitScreen({super.key});
@override
State<HabitScreen> createState() => _HabitScreenState();
}
class _HabitScreenState extends State<HabitScreen> {
final List<Habit> _habits = [
Habit('Drink water', [true, true, true, false, true, false, false]),
Habit('Read 10 pages', [true, false, true, true, false, false, false]),
Habit('Stretch', List.filled(7, false)),
];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Habits')),
body: const Center(
child: Text('Your habits go here'),
),
);
}
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Proyek
1Proyek: Daftar Tugas
Daftar Tugas: Daftar TugasDaftar Tugas: Tambahkan Tugas4Proyek: Pelacak Kebiasaan
Pelacak Kebiasaan: KebiasaanmuPelacak Kebiasaan: Pekan IniLatihan sendiri: Compiler Flutter online