From 7c7d6be9df26ac04f23c103343a4dfd0eb81a90f Mon Sep 17 00:00:00 2001 From: Benimautner Date: Sun, 23 Jul 2023 00:04:13 +0200 Subject: [PATCH] added subproject view to project home page --- lib/models/project.dart | 1 + lib/pages/project/overview.dart | 14 +++-------- lib/pages/project/project.dart | 44 ++++++++++++++++++++++++++++++++- 3 files changed, 47 insertions(+), 12 deletions(-) diff --git a/lib/models/project.dart b/lib/models/project.dart index 484d911..4ed5d1c 100644 --- a/lib/models/project.dart +++ b/lib/models/project.dart @@ -7,6 +7,7 @@ class Project { final String description; final String title; final DateTime created, updated; + Iterable? subprojects; Project( {this.id = 0, diff --git a/lib/pages/project/overview.dart b/lib/pages/project/overview.dart index 2c63691..22a78bc 100644 --- a/lib/pages/project/overview.dart +++ b/lib/pages/project/overview.dart @@ -56,7 +56,7 @@ class _ProjectOverviewPageState extends State ListTile( onTap: () { setState(() { - _onSelectItem(project); + onSelectProject(context, project); }); }, contentPadding: insets, @@ -83,6 +83,7 @@ class _ProjectOverviewPageState extends State List addProjectChildren(Project project, level) { Iterable children = _projects.where((element) => element.parentProjectId == project.id); + project.subprojects = children; List widgets = []; children.forEach((element) { widgets.add(createProjectTile(element, level + 1)); @@ -139,16 +140,7 @@ class _ProjectOverviewPageState extends State }); } - _onSelectItem(Project project) { - Navigator.push( - context, - MaterialPageRoute( - builder: (buildContext) => ProjectPage( - project: project, - ), - )); - //setState(() => _selectedDrawerIndex = index); - } + _addProjectDialog(BuildContext context) { showDialog( diff --git a/lib/pages/project/project.dart b/lib/pages/project/project.dart index e5fadbf..528e179 100644 --- a/lib/pages/project/project.dart +++ b/lib/pages/project/project.dart @@ -16,7 +16,49 @@ class ProjectPage extends StatefulWidget { class _ProjectPageState extends State { @override Widget build(BuildContext context) { - return Scaffold(body: Text(widget.project.title),); + return Scaffold( + body: Column( + children: [ + buildSubProjectSelector(), + ] + ), + appBar: AppBar( + title: Text(widget.project.title), + ),); } + Widget buildSubProjectSelector() { + return Container( + height: 80, + child: + ListView( + scrollDirection: Axis.horizontal, + //mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + ...?widget.project.subprojects?.map((elem) => + InkWell( + onTap: () {onSelectProject(context, elem);}, + child: + Container( + alignment: Alignment.center, + height: 20, + width: 100, + child: + Text(elem.title, overflow: TextOverflow.ellipsis,softWrap: false,))) + ), + ], + ), + ); + } +} + +onSelectProject(BuildContext context, Project project) { + Navigator.push( + context, + MaterialPageRoute( + builder: (buildContext) => ProjectPage( + project: project, + ), + )); + //setState(() => _selectedDrawerIndex = index); } \ No newline at end of file