Tracker delle abitudini: le tue abitudini
Fa parte della sezione Progetti del percorso Flutter di Coddy. Lezione 28 di 36.
L’ultima app è un tracker delle abitudini: una scheda per ogni abitudine, con una spunta per ogni giorno della settimana, una serie, un anello che si riempie man mano che la settimana procede bene e la modalità scura. È il tipo di app che si apre ogni giorno.
I dati sono nel progetto iniziale. Un Habit ha un nome e sette bool, dal lunedì alla domenica:
Habit('Drink water', [true, true, true, false, true, false, false]),
Habit('Stretch', List.filled(7, false)),List.filled(7, false) crea una lista di sette false, una settimana in cui non è stato fatto nulla.
Inizia con una scheda per ogni abitudine. Alla fine, una scheda conterrà molte cose, quindi avrà il suo widget, HabitCard, che accetta un Habit. La schermata rimane breve: un ListView con un HabitCard per ogni abitudine. Lascia spazio in fondo all’elenco (88 pixel) per un pulsante che in seguito vi rimarrà sospeso.
Sfida
FacileMostra le abitudini:
- scrivi un widget
HabitCardche richiede unhabite ne mostra il nome usandotitleMediumdel tema - la scheda è un
Cardconmargin: const EdgeInsets.only(top: 12), che contiene unaColumncon 16 pixel di spaziatura interna (presto avrà altri elementi figli) - sostituisci il
Centercon unListViewcon spaziatura internaEdgeInsets.fromLTRB(16, 8, 16, 88)e unHabitCardper ogni abitudine
Provalo tu
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'),
),
);
}
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Progetti
1Progetto: Lista delle cose da fare
Lista delle cose da fare: l’elenco delle attivitàLista delle cose da fare: aggiungere un’attività4Progetto: Tracker delle abitudini
Tracker delle abitudini: le tue abitudiniTracker delle abitudini: la settimanaEsercitati da solo: Compilatore Flutter online