1 Commits

Author SHA1 Message Date
marco 392ec22dcd Merge pull request 'Feature: dismissible tasks' (#1) from development into main
Flutter APK Build / Build Flutter APK (push) Successful in 5m43s
Reviewed-on: #1
2026-06-19 00:36:43 +02:00
5 changed files with 25 additions and 79 deletions
-37
View File
@@ -1,37 +0,0 @@
import 'package:flutter/material.dart';
class AppTheme {
AppTheme._();
static ThemeData get lightTheme => _baseTheme(
colorScheme: ColorScheme.fromSeed(
seedColor: Colors.indigo,
brightness: Brightness.light,
),
);
static ThemeData get darkTheme => _baseTheme(
colorScheme: ColorScheme.fromSeed(
seedColor: Colors.indigo,
brightness: Brightness.dark,
),
);
static ThemeData _baseTheme({required ColorScheme colorScheme}) {
final theme = ThemeData(useMaterial3: true, colorScheme: colorScheme);
final universalBorderRadius = BorderRadius.circular(12);
return theme.copyWith(
inputDecorationTheme: InputDecorationTheme(
border: OutlineInputBorder(borderRadius: universalBorderRadius),
),
listTileTheme: ListTileThemeData(
shape: RoundedRectangleBorder(
borderRadius: universalBorderRadius,
side: BorderSide(color: colorScheme.secondaryContainer, width: 2),
),
),
);
}
}
-3
View File
@@ -1,6 +1,5 @@
import 'package:flutter/material.dart';
import 'app_theme.dart';
import 'model/repositories/local_repository.dart';
import 'pages/task_edit_page.dart';
import 'pages/task_overview_page.dart';
@@ -34,8 +33,6 @@ class MainApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: AppTheme.lightTheme,
darkTheme: AppTheme.darkTheme,
routes: {
TaskOverviewPage.routeName: (context) => TaskOverviewPage(),
TaskEditPage.routeName: (context) => TaskEditPage(),
-2
View File
@@ -80,9 +80,7 @@ class _TaskEditPageState extends State<TaskEditPage> {
horizontal: MediaQuery.of(context).size.width * 0.05,
),
child: Column(
spacing: 12,
children: [
SizedBox(height: 6),
TextFormField(
autofocus: true,
controller: titleController,
+3 -12
View File
@@ -22,17 +22,12 @@ class _TaskOverviewPageState extends State<TaskOverviewPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Hallo Yannick')),
body: Padding(
padding: EdgeInsetsGeometry.symmetric(
horizontal: MediaQuery.of(context).size.width * 0.05,
),
child: ReorderableListView.builder(
appBar: AppBar(),
body: ReorderableListView.builder(
itemBuilder: itemBuilder,
itemCount: tasks.length,
onReorderItem: context.controller<TaskController>().reorderTask,
),
),
floatingActionButton: FloatingActionButton(
onPressed: onCreateTaskTapped,
child: Icon(Icons.add),
@@ -43,10 +38,7 @@ class _TaskOverviewPageState extends State<TaskOverviewPage> {
Widget itemBuilder(BuildContext context, int index) {
final task = tasks.elementAt(index);
return Padding(
key: Key(task.id),
padding: const EdgeInsets.only(bottom: 12),
child: TaskDismissible(
return TaskDismissible(
key: Key(task.id),
onDismissedRight: () =>
context.controller<TaskController>().deleteTask(task),
@@ -68,7 +60,6 @@ class _TaskOverviewPageState extends State<TaskOverviewPage> {
}
},
),
),
);
}
-3
View File
@@ -16,10 +16,7 @@ class TaskDismissible extends StatelessWidget {
key: key!,
direction: DismissDirection.startToEnd,
background: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12),
color: Theme.of(context).colorScheme.error,
),
child: Align(
alignment: AlignmentGeometry.centerLeft,
child: Padding(