diff options
Diffstat (limited to 'lib/widgets/agenda_week.dart')
| -rw-r--r-- | lib/widgets/agenda_week.dart | 61 |
1 files changed, 52 insertions, 9 deletions
diff --git a/lib/widgets/agenda_week.dart b/lib/widgets/agenda_week.dart index fa3d100..9f3df63 100644 --- a/lib/widgets/agenda_week.dart +++ b/lib/widgets/agenda_week.dart @@ -1,6 +1,8 @@ import 'dart:async'; +import 'dart:convert'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:loading_animation_widget/loading_animation_widget.dart'; import 'package:training_planner/events/RefreshWeekEvent.dart'; import 'package:training_planner/main.dart'; @@ -35,14 +37,21 @@ class _AgendaWeekState extends State<AgendaWeek> { weekItems = null; }); - var data = await shiftProvider.getShiftsForWeek(this.widget.mondayOfWeek); + var data = await shiftProvider.getShiftsForWeek(widget.mondayOfWeek); if (!mounted) return; setState(() { + Duration hoursWorked = Duration(); + for (var item in data) { + hoursWorked += item.getElapsedSessionTime(); + } + weekItems = [ AgendaWeekTitle( - weekNr: this.widget.weekNr, - mondayOfWeek: this.widget.mondayOfWeek, - isCurrentWeek: this.widget.isCurrentWeek), + weekNr: widget.weekNr, + mondayOfWeek: widget.mondayOfWeek, + isCurrentWeek: widget.isCurrentWeek, + hoursWorked: hoursWorked, + ), Padding( padding: const EdgeInsets.all(10), ) @@ -66,13 +75,22 @@ class _AgendaWeekState extends State<AgendaWeek> { } @override + void didChangeDependencies() { + super.didChangeDependencies(); + + for (var item in getBackgrounds()) { + precacheImage(AssetImage('assets/goals/' + item), context); + } + } + + @override void initState() { - super.initState(); updateItems(); eventbusSubscription = eventBus.on<RefreshWeekEvent>().listen((event) { updateItems(); }); + super.initState(); } @override @@ -107,9 +125,11 @@ class _AgendaWeekState extends State<AgendaWeek> { padding: const EdgeInsets.all(10), ), AgendaWeekTitle( - weekNr: this.widget.weekNr, - mondayOfWeek: this.widget.mondayOfWeek, - isCurrentWeek: this.widget.isCurrentWeek), + weekNr: widget.weekNr, + mondayOfWeek: widget.mondayOfWeek, + isCurrentWeek: widget.isCurrentWeek, + hoursWorked: Duration(), + ), Padding( padding: const EdgeInsets.all(10), ), @@ -122,6 +142,29 @@ class _AgendaWeekState extends State<AgendaWeek> { ); } + List<String> getBackgrounds() { + return ['1.png', '2.jpg', '3.jpeg', '4.jpg', '5.jpg']; + } + + String getBackgroundImage() { + var options = getBackgrounds(); + int nrToChoose = widget.weekNr % options.length; + return options[nrToChoose]; + } + + Widget getData() { + return Container( + decoration: BoxDecoration( + image: DecorationImage( + image: AssetImage('assets/goals/' + getBackgroundImage()), + fit: BoxFit.cover, + opacity: 0.3, + ), + ), + child: getLoadingScreenOrDataList(), + ); + } + Widget getLoadingScreenOrDataList() { if (weekItems != null) { return getDataList(); @@ -152,7 +195,7 @@ class _AgendaWeekState extends State<AgendaWeek> { ).createShader(rect); }, blendMode: BlendMode.dstOut, - child: getLoadingScreenOrDataList(), + child: getData(), ); } } |
