Initial commit
This commit is contained in:
@@ -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),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -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),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -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,
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -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"),
|
||||
)
|
||||
],
|
||||
),
|
||||
)
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -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!)},
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user