From fa3142d6665c0f7ccdda43e7afde4a5ffadcf5ac Mon Sep 17 00:00:00 2001 From: broodjeaap89 Date: Tue, 29 Jun 2021 21:46:38 +0200 Subject: [PATCH] added some test stuff for gui elements --- lib/entities/PlannedPizza.dart | 7 ++++ lib/pages/PlannedPizzasPage.dart | 68 ++++++++++++++++++++++++++------ 2 files changed, 62 insertions(+), 13 deletions(-) create mode 100644 lib/entities/PlannedPizza.dart diff --git a/lib/entities/PlannedPizza.dart b/lib/entities/PlannedPizza.dart new file mode 100644 index 0000000..27f9223 --- /dev/null +++ b/lib/entities/PlannedPizza.dart @@ -0,0 +1,7 @@ + +class PlannedPizza { + final String name; + final DateTime dateTime; + + PlannedPizza(this.name, this.dateTime); +} \ No newline at end of file diff --git a/lib/pages/PlannedPizzasPage.dart b/lib/pages/PlannedPizzasPage.dart index 167c044..af0bce9 100644 --- a/lib/pages/PlannedPizzasPage.dart +++ b/lib/pages/PlannedPizzasPage.dart @@ -1,5 +1,7 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:intl/intl.dart'; +import 'package:pizzaplanner/entities/PlannedPizza.dart'; class PlannedPizzasPage extends StatefulWidget { @override @@ -7,27 +9,67 @@ class PlannedPizzasPage extends StatefulWidget { } class PlannedPizzasState extends State { + final List plannedPizzas = [ + PlannedPizza("Movie Night", DateTime(2021, 6, 30)), + PlannedPizza("Birthday Pizza", DateTime(2021, 7, 14)), + PlannedPizza("Something else", DateTime(2021, 9, 3)), + ]; + @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("Planned Pizzas"), ), - body: ListView( + body: ListView.separated( padding: const EdgeInsets.all(8), - children: [ - Container( - height: 100, - color: Colors.blueAccent, - child: const Center(child: Text("Pizza!")) - ) - ], - ), - floatingActionButton: FloatingActionButton( - onPressed: () => null, - tooltip: "Add Pizza", - child: Icon(Icons.add) + itemCount: plannedPizzas.length, + itemBuilder: (BuildContext context, int i) { + return Container( + height: 100, + color: Colors.blueAccent, + child: PlannedPizzaWidget(plannedPizzas[i]) + ); + }, + separatorBuilder: (BuildContext context, int i) => const Divider(), ), ); } +} + +class PlannedPizzaWidget extends StatelessWidget { + final DateFormat dateFormatter = DateFormat("yyyy-MM-dd"); + final PlannedPizza plannedPizza; + + PlannedPizzaWidget(this.plannedPizza); + + @override + Widget build(BuildContext context){ + return Container( + height: 100, + color: Colors.blueAccent, + child: Column( + children: [ + Text(plannedPizza.name), + Text(dateFormatter.format(plannedPizza.dateTime)), + Text(this.getTimeRemainingString()) + ] + ) + ); + } + + String getTimeRemainingString(){ + DateTime now = DateTime.now(); + Duration duration = plannedPizza.dateTime.difference(now); + if (duration.inHours <= 0) { + return "In ${duration.inMinutes} minutes!"; + } + if (duration.inDays <= 0) { + return "In ${duration.inHours} hours"; + } + if (duration.inDays <= 31) { + return "In ${duration.inDays} days"; + } + return "In ${(duration.inDays / 7).floor()} weeks"; + } } \ No newline at end of file