diff --git a/lib/main.dart b/lib/main.dart index 30aa948..a634662 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:workshop_task/screen/todo_screen.dart'; void main() { runApp(const MyApp()); @@ -20,4 +21,7 @@ class MyApp extends StatelessWidget { home: Container(), ); } + runApp(const MaterialApp( + home: TodoScreen(), + )); } diff --git a/lib/models/todo_list.dart b/lib/models/todo_list.dart index c7c3b03..e20c6fb 100644 --- a/lib/models/todo_list.dart +++ b/lib/models/todo_list.dart @@ -2,16 +2,20 @@ import 'package:workshop_task/models/todo.dart'; class TodoList { final List _allTodos = []; + final List _allTodos = []; List allTodos() { - //TODO:Add logic to complete + //to complete + return _allTodos; } void addTodo(Todo todo) { - //TODO:Add logic to add a todo + //to add a todo + _allTodos.add(todo); } void deleteTodo(Todo todo) { - //TODO:Add logic to delete todo + //to delete todo + _allTodos.remove(todo); } } diff --git a/lib/screen/todo_screen.dart b/lib/screen/todo_screen.dart index 70caa8b..7bfebee 100644 --- a/lib/screen/todo_screen.dart +++ b/lib/screen/todo_screen.dart @@ -3,13 +3,23 @@ import 'package:workshop_task/models/todo_list.dart'; class TodoScreen extends StatefulWidget { const TodoScreen({Key key}) : super(key: key); - - @override - _TodoScreenState createState() => _TodoScreenState(); + class TodoScreen extends StatefulWidget { } class _TodoScreenState extends State { TodoList todoList = TodoList(); + final TextEditingController titlecontroller = TextEditingController(); + final TextEditingController desccontroller = TextEditingController(); + final GlobalKey _scaffoldKey = GlobalKey(); + Widget wigbody = Row( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: const [ + Center( + child: Text("No Todos Added"), + ) + ], + ); @override Widget build(BuildContext context) { @@ -17,10 +27,120 @@ class _TodoScreenState extends State { appBar: AppBar( title: const Text("Your Todos"), ), - //TODO: Add todo button with this icon => "+". - floatingActionButton: const FloatingActionButton(), + body: //TODO: Add list view displaying all todo. Container(), ); + key: _scaffoldKey, + appBar: AppBar( + title: const Text("My Todos"), + ), + floatingActionButton: FloatingActionButton( + child: const Icon(Icons.add), + color: Colors.white + backgroundColor: Colors.blue, + onPressed: () { + showDialog( + context: context, + builder: (BuildContext context) { + return Dialog( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(5.0)), + child: SizedBox( + height: 200, + child: Padding( + padding: const EdgeInsets.all(12.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + TextField( + controller: titlecontroller, + decoration: const InputDecoration( + labelText: "Title", hintText: 'Title'), + ), + TextField( + controller: desccontroller, + decoration: const InputDecoration( + labelText: "Description", + hintText: 'Description')), + SizedBox( + width: 320.0, + child: TextButton( + onPressed: () { + if (titlecontroller.text.isNotEmpty && desccontroller.text.isNotEmpty) { + setState(() { + Navigator.of(context).pop(); + wigbody = ListView( + children: [ + GestureDetector( + child: ListTile( + title: + Text(titlecontroller.text), + subtitle: + Text(desccontroller.text), + leading: const CircleAvatar( + child: Text("1"), + ), + ), + onDoubleTap: () { + showDialog( + context: _scaffoldKey + .currentContext, + builder: (BuildContext + currentcontext) { + return AlertDialog( + content: const Text("Are you sure you want to delete this todo?"), + actions: [ + TextButton( + onPressed: () { + setState(() { + titlecontroller.clear(); + desccontroller.clear(); + Navigator.of(currentcontext).pop(); + wigbody = Row( + mainAxisAlignment: + MainAxisAlignment.center, + crossAxisAlignment:CrossAxisAlignment.center, + children: const [ + Center( + child: Text( "No Todos Added"), + ) + ], + ); + }); + }, + child: const Text( "Yes")), + TextButton( + onPressed: () { + setState(() { + Navigator.of(currentcontext) + .pop(); + }); + }, + child: const Text( "No")) + ], + ); + }); + }, + ) + ], + ); + }); + } + }, + child: const Text("Submit entry"), + style: TextStyle(color: Colors.blue), + ), + ), + ) + ], + ), + ), + ), + ); + }); + }), + body: wigbody); } } diff --git a/lib/widgets/add_todo_dialogue.dart b/lib/widgets/add_todo_dialogue.dart index 29ccd08..6b81d4b 100644 --- a/lib/widgets/add_todo_dialogue.dart +++ b/lib/widgets/add_todo_dialogue.dart @@ -1,17 +1,22 @@ import 'package:flutter/material.dart'; +import 'package:workshop_task/models/todo_list.dart'; +import 'package:workshop_task/models/todo.dart'; class AddTodoDialogue extends StatefulWidget { const AddTodoDialogue({Key key}) : super(key: key); - - @override - _AddTodoDialogueState createState() => _AddTodoDialogueState(); + class AddTodoDialogue extends StatefulWidget { } class _AddTodoDialogueState extends State { + final TextEditingController titlecontroller = TextEditingController(); + final TextEditingController desccontroller = TextEditingController(); + int i = 0; + TodoList listItem = TodoList(); + List lisWig = []; @override Widget build(BuildContext context) { return Container( - width: 200, + width: 180, padding: const EdgeInsets.all(16), child: Column( mainAxisSize: MainAxisSize.min, @@ -23,5 +28,41 @@ class _AddTodoDialogueState extends State { ], ), ); + return Dialog( + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(2.0)), +child: SizedBox( + height: 180, +child: Padding( + padding: const EdgeInsets.all(10.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + TextField( + controller: titlecontroller, + decoration: const InputDecoration(labelText: "Title"), + ), + TextField( + controller: desccontroller, + decoration: + const InputDecoration(labelText: "Description"), + ), + TextButton( + onPressed: () { + setState(() { + if (titlecontroller.text.isNotEmpty && + desccontroller.text.isNotEmpty) { + Todo content = Todo( + title: titlecontroller.text, + description: desccontroller.text); + + listItem.addTodo(content); + titlecontroller.clear(); + desccontroller.clear(); + } + }); + }, + child: const Text("Submit")) + ])))); } } diff --git a/lib/widgets/todo_list_item.dart b/lib/widgets/todo_list_item.dart index fe8536f..ab52b37 100644 --- a/lib/widgets/todo_list_item.dart +++ b/lib/widgets/todo_list_item.dart @@ -2,13 +2,15 @@ import 'package:flutter/material.dart'; import 'package:workshop_task/models/todo.dart'; class TodoListItem extends StatelessWidget { - final Todo todo; - final int index; - const TodoListItem({Key key, this.todo, this.index}) : super(key: key); @override Widget build(BuildContext context) { //TODO: display title and description of todo. return Container(); + return ListTile( + title: Text(todo.title), + subtitle: Text(todo.description), + ) } } +