From 1ce55045a8019829149d46c6c9bfc88887ac5ab0 Mon Sep 17 00:00:00 2001 From: marco Date: Tue, 9 Jun 2026 11:23:25 +0200 Subject: [PATCH] created minimal view to show tasks --- lib/main.dart | 7 ++-- lib/model/pages/task_overview.dart | 51 ++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 lib/model/pages/task_overview.dart diff --git a/lib/main.dart b/lib/main.dart index 640824f..bef52c2 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,5 +1,7 @@ import 'package:flutter/material.dart'; +import 'model/pages/task_overview.dart'; + void main() { runApp(const MainApp()); } @@ -9,8 +11,9 @@ class MainApp extends StatelessWidget { @override Widget build(BuildContext context) { - return const MaterialApp( - home: Scaffold(body: Center(child: Text('Hello World!'))), + return MaterialApp( + routes: {TaskOverview.routeName: (context) => TaskOverview()}, + initialRoute: TaskOverview.routeName, ); } } diff --git a/lib/model/pages/task_overview.dart b/lib/model/pages/task_overview.dart new file mode 100644 index 0000000..989afab --- /dev/null +++ b/lib/model/pages/task_overview.dart @@ -0,0 +1,51 @@ +import 'package:flutter/material.dart'; + +import '../../example_data.dart'; +import '../task.dart'; + +class TaskOverview extends StatefulWidget { + static const String routeName = '/'; + const TaskOverview({super.key}); + + @override + State createState() => _TaskOverviewState(); +} + +class _TaskOverviewState extends State { + //TODO: Replace example data call + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar(), + body: ReorderableListView.builder( + itemBuilder: itemBuilder, + itemCount: tasks.length, + onReorderItem: (oldIndex, newIndex) => + reorderList(tasks, oldIndex, newIndex), + ), + ); + } + + Widget itemBuilder(BuildContext context, int index) { + final task = tasks.elementAt(index); + + return ListTile( + key: Key(task.id), + title: Text(task.title), + subtitle: Text(task.description), + ); + } + + List reorderList(List tasks, oldIndex, newIndex) { + final item = tasks.removeAt(oldIndex); + tasks.insert(newIndex, item); + + final List reordered = []; + + for (int i = 0; i < tasks.length; i++) { + reordered.add(tasks.elementAt(i).copyWith(position: i)); + } + + return reordered; + } +}