Initial commit

This commit is contained in:
brausjonas
2024-09-15 17:03:37 +02:00
commit 8740525457
42 changed files with 1515 additions and 0 deletions
+19
View File
@@ -0,0 +1,19 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:todoapp/modals/addtodomodal.dart';
import 'package:todoapp/providers/todoprovider.dart';
class TodoActionButton extends StatelessWidget {
const TodoActionButton({super.key});
@override
Widget build(BuildContext context) {
return FloatingActionButton.extended(
onPressed: () => {
AddTodoModal.add(context)
}, //TODO: implement
label: const Text("Add ToDo"),
icon: const Icon(Icons.add),
);
}
}
+25
View File
@@ -0,0 +1,25 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:todoapp/providers/todoprovider.dart';
class TodoAppBar extends StatefulWidget implements PreferredSizeWidget {
const TodoAppBar({super.key});
@override
State<TodoAppBar> createState() => _TodoAppBarState();
@override
Size get preferredSize => const Size.fromHeight(kToolbarHeight);
}
class _TodoAppBarState extends State<TodoAppBar> {
@override
Widget build(BuildContext context) {
return Consumer<TodoProvider>(
builder: (context, todoProvider, child) => AppBar(
elevation: 5,
title: Text(todoProvider.selectedList),
),
);
}
}
+25
View File
@@ -0,0 +1,25 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:todoapp/providers/todoprovider.dart';
import '../elems/todo.dart';
class Body extends StatefulWidget {
const Body({super.key});
@override
State<Body> createState() => _BodyState();
}
class _BodyState extends State<Body> {
@override
Widget build(BuildContext context) {
return Consumer<TodoProvider>(
builder: (context, todoProvider, child) => Column(
children: [
for (Todo t in context.read<TodoProvider>().todos) t.widget,
],
),
);
}
}
+53
View File
@@ -0,0 +1,53 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:todoapp/modals/addlistmodal.dart';
import 'package:todoapp/providers/todoprovider.dart';
class TodoDrawer extends StatefulWidget {
const TodoDrawer({super.key});
@override
State<TodoDrawer> createState() => _TodoDrawerState();
}
class _TodoDrawerState extends State<TodoDrawer> {
@override
Widget build(BuildContext context) {
return Drawer(
child: Padding(
padding: const EdgeInsets.only(left: 20, right: 20),
child: Column(
children: [
const SizedBox(height: 60),
const Text("ToDo", style: TextStyle(fontSize: 20)),
const SizedBox(height: 20),
const Divider(height: 1),
const SizedBox(height: 20),
const Text("Lists", style: TextStyle(fontSize: 25)),
const SizedBox(height: 10),
SingleChildScrollView(
child: Consumer<TodoProvider>(
builder: (context, todoProvider, child) =>
Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
for (String key in todoProvider.todoLists.keys)
todoProvider.todoLists[key]!.widget,
const SizedBox(height: 30),
FilledButton.icon(
onPressed: () {
AddListModal.add(context);
},
icon: const Icon(Icons.add),
label: const Text("Add List"),
)
],
),
)
)
],
),
),
);
}
}
+42
View File
@@ -0,0 +1,42 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:todoapp/modals/editlistmodal.dart';
import 'package:todoapp/providers/todoprovider.dart';
class TodoListWidget extends StatefulWidget {
const TodoListWidget({super.key, required this.title});
final String title;
@override
State<TodoListWidget> createState() => _TodoListWidgetState();
}
class _TodoListWidgetState extends State<TodoListWidget> {
@override
Widget build(BuildContext context) {
ButtonStyle buttonStyle = context
.read<TodoProvider>()
.selectedList == widget.title ? const ButtonStyle() : const ButtonStyle(
backgroundColor: WidgetStatePropertyAll(Color(0x00000000)));
return FilledButton.tonal(
onPressed: () {
context.read<TodoProvider>().changeList(widget.title);
Navigator.pop(context);
},
onLongPress: () {
EditListModal.add(context, widget.title);
},
style: buttonStyle,
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
const Icon(Icons.list),
const SizedBox(width: 10),
Text(widget.title)
],
),
);
}
}
+34
View File
@@ -0,0 +1,34 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:todoapp/modals/edittodomodal.dart';
import 'package:todoapp/providers/todoprovider.dart';
class TodoWidget extends StatefulWidget {
const TodoWidget({super.key, required this.checked, required this.title});
final bool checked;
final String title;
@override
State<TodoWidget> createState() => _TodoWidgetState();
}
class _TodoWidgetState extends State<TodoWidget> {
@override
Widget build(BuildContext context) {
return GestureDetector(
onLongPress: () {
EditTodoModal.add(context, widget.title);
},
child: CheckboxListTile(
value: widget.checked,
title: Text(widget.title,
style: widget.checked
? const TextStyle(decoration: TextDecoration.lineThrough)
: const TextStyle()),
onChanged: (value) =>
{context.read<TodoProvider>().setTodoState(widget.title, value!)},
),
);
}
}