Projects section usable, Sticky headers added

This commit is contained in:
Sewmina
2022-03-29 04:02:10 +05:30
parent 0763820b97
commit cad1b5db5a
8 changed files with 209 additions and 40 deletions

View File

@@ -1,6 +1,7 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:sticky_headers/sticky_headers/widget.dart';
import 'main.dart' as Main;
import 'newActivity.dart';
import 'Data.dart';
@@ -65,11 +66,12 @@ class _ActivitiesState extends State<Activities> {
// progressDialog.update(value: 100);
} catch (e) {}
}
Map<Widget, List<Widget>> activitiesGroups =<Widget, List<Widget>>{};
@override
Widget build(BuildContext context) {
// progressDialog = ProgressDialog(context: context);
List<Widget> activities = PrintTasks();
// List<Widget> activities = PrintTasks();
activitiesGroups = PrintTasks();
return Scaffold(
floatingActionButton: FloatingActionButton.extended(
onPressed: () {
@@ -171,9 +173,15 @@ class _ActivitiesState extends State<Activities> {
body: Container(
padding: EdgeInsets.all(0),
child: ListView.builder(
itemCount: activities.length,
itemCount: activitiesGroups.length,
itemBuilder: (context, index){
return activities[index];
// return activities[index];
return StickyHeader(
header:activitiesGroups.keys.toList()[index],
content:Column(children: activitiesGroups.values.toList()[index],)
);
})
// SingleChildScrollView(
// child: Column(
@@ -183,8 +191,8 @@ class _ActivitiesState extends State<Activities> {
}
int searchTime = 0;
List<Widget> PrintTasks() {
List<Widget> _tasks = [];
Map<Widget,List<Widget>> PrintTasks() {
Map<Widget,List<Widget>> _tasks = <Widget,List<Widget>>{};
print('Priting cats : ' + User.taskTypes.length.toString());
String lastDate = "";
DateFormat dFormat = DateFormat("MM/dd");
@@ -239,7 +247,9 @@ class _ActivitiesState extends State<Activities> {
if (thisDate != lastDate) {
int prodActs = productivtyActs[thisDate] ?? 0;
int unProdActs = unproductivtyActs[thisDate] ?? 0;
_tasks.add(DateSeperator(thisDate, prodActs, unProdActs));
//_tasks.add(DateSeperator(thisDate, prodActs, unProdActs));
_tasks.putIfAbsent(DateSeperator(thisDate, prodActs, unProdActs), () => [Container()]);
print('adding');
lastDate = thisDate;
}
String name = element.taskType.name;
@@ -250,7 +260,7 @@ class _ActivitiesState extends State<Activities> {
bool productive = element.taskType.cat?.productive ?? true;
Widget task = ActivityCard(context, name, element.startTime, element.endTime, productive, color, element, totalMinutes[thisDate] ?? 0);
// print('Activity : ${name} ,sTime: ${element.startTime}, eTime: ${element.endTime}');
_tasks.add(task);
_tasks.values.toList()[_tasks.length-1].add(task);
}
//Check for gaps
if(i < User.activities.length-1){
@@ -258,7 +268,7 @@ class _ActivitiesState extends State<Activities> {
if(gap > 10) {
Widget addGap = timeGap(User.activities[i].trueStartTime, User.activities[i+1].trueEndTime);
_tasks.add(addGap);
_tasks.values.toList()[_tasks.length-1].add(addGap);
}
}
}
@@ -317,9 +327,11 @@ class _ActivitiesState extends State<Activities> {
future: Settings.getUntrackedUnproductive(),
builder: (context, snapshot) {
double prodPercentage = (User.ParseBool(snapshot.data))? ((prodActs / 1440) * 100) : ((prodActs / unprodActs) * 100);
return Padding(
padding: const EdgeInsets.fromLTRB(0, 20, 10, 0),
return Container(
color: Color(0xFF333333),
padding: const EdgeInsets.fromLTRB(0, 10, 10, 10),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Row(
mainAxisSize: MainAxisSize.max,
@@ -538,4 +550,5 @@ class _ActivitiesState extends State<Activities> {
}
}
List<Activity> selectedActivities = [];