Menu
CoddyTech

Alışkanlık Takipçisi: Alışkanlıkların

Coddy'nin Flutter Journey'sinin Projeler bölümünün bir parçası. Ders 28 / 36.

Son uygulama bir alışkanlık takip uygulaması: her alışkanlık için bir kart, haftanın her günü için bir onay işareti, bir seri, haftan iyi geçtikçe dolan bir halka ve karanlık mod. İnsanların her gün açtığı türden bir uygulama.

Veriler başlangıç projesinde. Bir Habit, bir ada ve pazartesiden pazara yedi bool değerine sahiptir:

Habit('Drink water', [true, true, true, false, true, false, false]),
Habit('Stretch', List.filled(7, false)),

List.filled(7, false), hiçbir şey yapılmamış bir haftayı temsil eden, yedi false değerinden oluşan bir liste oluşturur.

Her alışkanlık için bir kartla başla. Bir kartın içinde zamanla pek çok şey olur, bu yüzden kendi widget’ı olan ve bir Habit alan HabitCard widget’ını oluştur. Ekranı kısa tut: her alışkanlık için bir HabitCard içeren bir ListView. Daha sonra orada duracak bir düğme için listenin altında yer bırak (88 piksel).

challenge icon

Görev

Kolay

Alışkanlıkları göster:

  • required habit alan bir HabitCard widget'ı yaz ve alışkanlığın adını temanın titleMedium stiliyle göster
  • Kart, margin: const EdgeInsets.only(top: 12) değerine sahip bir Card olsun ve yakında başka alt öğeler de alacak bir Column çevresinde 16 piksel dolgu içersin
  • Center öğesini, EdgeInsets.fromLTRB(16, 8, 16, 88) dolgulu bir ListView ve her alışkanlık için bir HabitCard ile değiştir

Kendin dene

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'),
      ),
    );
  }
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Projeler bölümündeki tüm dersler

Kendi başına pratik yap: Online Flutter derleyicisi