From 12557b9b66f5c64225f4db7cbe199721b2110f20 Mon Sep 17 00:00:00 2001 From: Yashsomalkar Date: Fri, 11 Feb 2022 02:36:02 +0530 Subject: [PATCH 1/5] task app --- android/build.gradle | 2 +- lib/main.dart | 9 +- lib/models/todo.dart | 3 +- lib/models/todo_list.dart | 11 +- lib/screen/todo_screen.dart | 157 ++++++++++++++++++++++++++++- lib/widgets/add_todo_dialogue.dart | 68 ++++++++++--- lib/widgets/todo_list_item.dart | 5 +- pubspec.lock | 20 ++-- 8 files changed, 234 insertions(+), 41 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index 24047dc..4256f91 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,5 +1,5 @@ buildscript { - ext.kotlin_version = '1.3.50' + ext.kotlin_version = '1.6.10' repositories { google() mavenCentral() diff --git a/lib/main.dart b/lib/main.dart index 30aa948..8a58df8 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()); @@ -6,18 +7,18 @@ void main() { class MyApp extends StatelessWidget { const MyApp({Key key}) : super(key: key); - + // This widget is the root of your application. @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', theme: ThemeData( - // is not restarted. - primarySwatch: Colors.blue, + // is not restarted. + primarySwatch: Colors.green, ), //GO to correct screen. - home: Container(), + home: const TodoScreen(), ); } } diff --git a/lib/models/todo.dart b/lib/models/todo.dart index 468c1ac..a2a8f4c 100644 --- a/lib/models/todo.dart +++ b/lib/models/todo.dart @@ -3,5 +3,6 @@ import 'package:flutter/material.dart'; class Todo { String title; String description; - Todo({@required this.title, @required this.description}); + Todo({@required this.title, + @required this.description}); } diff --git a/lib/models/todo_list.dart b/lib/models/todo_list.dart index c7c3b03..a867d54 100644 --- a/lib/models/todo_list.dart +++ b/lib/models/todo_list.dart @@ -1,17 +1,20 @@ import 'package:workshop_task/models/todo.dart'; class TodoList { - final List _allTodos = []; + final List _allTodos = []; List allTodos() { - //TODO:Add logic to complete + + return _allTodos; } void addTodo(Todo todo) { - //TODO:Add logic to add a todo + + _allTodos.add(todo); } void deleteTodo(Todo todo) { - //TODO:Add logic to delete todo + + _allTodos.remove(todo); } } diff --git a/lib/screen/todo_screen.dart b/lib/screen/todo_screen.dart index 70caa8b..25861db 100644 --- a/lib/screen/todo_screen.dart +++ b/lib/screen/todo_screen.dart @@ -1,5 +1,8 @@ import 'package:flutter/material.dart'; +import 'package:workshop_task/models/todo.dart'; import 'package:workshop_task/models/todo_list.dart'; +import 'package:workshop_task/widgets/todo_list_item.dart'; + class TodoScreen extends StatefulWidget { const TodoScreen({Key key}) : super(key: key); @@ -10,17 +13,163 @@ class TodoScreen extends StatefulWidget { class _TodoScreenState extends State { TodoList todoList = TodoList(); + final List _allTodos = []; + List listWig = []; + final TextEditingController titlecontroller = TextEditingController(); + final TextEditingController desccontroller = TextEditingController(); + final GlobalKey _scaffyKey = GlobalKey(); + + Widget wibody = Row( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: const [ + Center( + child: Text("No Todos Added"), + ) + ], + ); + + + @override Widget build(BuildContext context) { return Scaffold( + key: _scaffyKey, 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(), - ); + floatingActionButton: FloatingActionButton( + child: const Icon(Icons.add_outlined,size: 35,), + 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 : 330.0, + child : TextButton( + onPressed: (){ + if ( + titlecontroller.text.isNotEmpty && desccontroller.text.isNotEmpty) + { + setState(() { + Navigator.of(context).pop(); + wibody = ListView( + children: [ + GestureDetector( + child: ListTile( + title: Text(titlecontroller.text), + + subtitle:Text(desccontroller.text), + + leading: const CircleAvatar( + child: Text("1"), + + + + + ), + ), + + onDoubleTap: (){ + showDialog( + context: _scaffyKey.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(); + wibody = Row( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: const [ + Center( + child: Text("No Todos Added") + ) + ], + ); + + + + }); + }, child: const Text("Yes")), + TextButton(onPressed: (() { + Navigator.of(currentContext).pop(); + + }), child: const Text("No")) + ], + ); + + }); + }, + ) + + ] + ); + }); + } + }, child: const Text("submit", + style: TextStyle(color: Colors.blue),) + ) + + + )], + + + ) + ) + ) + ); + + + + + + + } + ); + } + ), + + + + + + + body: wibody ); //TODO: Add list view displaying all todo. + } } diff --git a/lib/widgets/add_todo_dialogue.dart b/lib/widgets/add_todo_dialogue.dart index 29ccd08..e526914 100644 --- a/lib/widgets/add_todo_dialogue.dart +++ b/lib/widgets/add_todo_dialogue.dart @@ -1,27 +1,63 @@ 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); + const AddTodoDialogue({Key key}) : super(key: key); @override _AddTodoDialogueState createState() => _AddTodoDialogueState(); + + } class _AddTodoDialogueState extends State { + final TextEditingController titlecontroller = TextEditingController(); + final TextEditingController desccontroller = TextEditingController(); + int i = 0; + TodoList listItem = TodoList(); + List listWig = []; + @override Widget build(BuildContext context) { - return Container( - width: 200, - padding: const EdgeInsets.all(16), - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - //TODO: Take input of title. and description. - TextField(), - TextField(), - TextButton(), - ], - ), - ); - } -} + return Dialog( + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(2.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"), + ), + 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")) + ] + ) + ) + ) + ); + }} \ No newline at end of file diff --git a/lib/widgets/todo_list_item.dart b/lib/widgets/todo_list_item.dart index fe8536f..10229d1 100644 --- a/lib/widgets/todo_list_item.dart +++ b/lib/widgets/todo_list_item.dart @@ -9,6 +9,9 @@ class TodoListItem extends StatelessWidget { @override Widget build(BuildContext context) { //TODO: display title and description of todo. - return Container(); + return ListTile( + title: Text(todo.title), + subtitle: Text(todo.description), + ); } } diff --git a/pubspec.lock b/pubspec.lock index 8b519cf..7250f41 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -193,6 +193,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.12.11" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.3" meta: dependency: transitive description: @@ -228,13 +235,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.8.0" - pedantic: - dependency: transitive - description: - name: pedantic - url: "https://pub.dartlang.org" - source: hosted - version: "1.11.1" pool: dependency: transitive description: @@ -337,21 +337,21 @@ packages: name: test url: "https://pub.dartlang.org" source: hosted - version: "1.17.12" + version: "1.19.5" test_api: dependency: transitive description: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.4.3" + version: "0.4.8" test_core: dependency: transitive description: name: test_core url: "https://pub.dartlang.org" source: hosted - version: "0.4.2" + version: "0.4.9" typed_data: dependency: transitive description: From 52173ec31c7c220d750800a11e452e6edfc07684 Mon Sep 17 00:00:00 2001 From: Yashsomalkar Date: Fri, 11 Feb 2022 12:54:11 +0530 Subject: [PATCH 2/5] fixing formating error :1 --- lib/main.dart | 4 +- lib/models/todo.dart | 3 +- lib/models/todo_list.dart | 3 - lib/screen/todo_screen.dart | 263 ++++++++++++++--------------- lib/widgets/add_todo_dialogue.dart | 19 +-- 5 files changed, 133 insertions(+), 159 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 8a58df8..aa857ba 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -7,14 +7,14 @@ void main() { class MyApp extends StatelessWidget { const MyApp({Key key}) : super(key: key); - + // This widget is the root of your application. @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', theme: ThemeData( - // is not restarted. + // is not restarted. primarySwatch: Colors.green, ), //GO to correct screen. diff --git a/lib/models/todo.dart b/lib/models/todo.dart index a2a8f4c..468c1ac 100644 --- a/lib/models/todo.dart +++ b/lib/models/todo.dart @@ -3,6 +3,5 @@ import 'package:flutter/material.dart'; class Todo { String title; String description; - Todo({@required this.title, - @required this.description}); + Todo({@required this.title, @required this.description}); } diff --git a/lib/models/todo_list.dart b/lib/models/todo_list.dart index a867d54..11a5652 100644 --- a/lib/models/todo_list.dart +++ b/lib/models/todo_list.dart @@ -4,17 +4,14 @@ class TodoList { final List _allTodos = []; List allTodos() { - return _allTodos; } void addTodo(Todo todo) { - _allTodos.add(todo); } void deleteTodo(Todo todo) { - _allTodos.remove(todo); } } diff --git a/lib/screen/todo_screen.dart b/lib/screen/todo_screen.dart index 25861db..24cb17c 100644 --- a/lib/screen/todo_screen.dart +++ b/lib/screen/todo_screen.dart @@ -3,7 +3,6 @@ import 'package:workshop_task/models/todo.dart'; import 'package:workshop_task/models/todo_list.dart'; import 'package:workshop_task/widgets/todo_list_item.dart'; - class TodoScreen extends StatefulWidget { const TodoScreen({Key key}) : super(key: key); @@ -18,9 +17,9 @@ class _TodoScreenState extends State { final TextEditingController titlecontroller = TextEditingController(); final TextEditingController desccontroller = TextEditingController(); final GlobalKey _scaffyKey = GlobalKey(); - - Widget wibody = Row( - mainAxisAlignment: MainAxisAlignment.center, + + Widget wibody = Row( + mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: const [ Center( @@ -29,147 +28,131 @@ class _TodoScreenState extends State { ], ); - - - @override Widget build(BuildContext context) { return Scaffold( - key: _scaffyKey, - appBar: AppBar( - title: const Text("Your Todos"), - ), - - - - - //TODO: Add todo button with this icon => "+". - floatingActionButton: FloatingActionButton( - child: const Icon(Icons.add_outlined,size: 35,), - onPressed: () { - + key: _scaffyKey, + appBar: AppBar( + title: const Text("Your Todos"), + ), + + //TODO: Add todo button with this icon => "+". + floatingActionButton: FloatingActionButton( + child: const Icon( + Icons.add_outlined, + size: 35, + ), + 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 : 330.0, - child : TextButton( - onPressed: (){ - if ( - titlecontroller.text.isNotEmpty && desccontroller.text.isNotEmpty) - { - setState(() { - Navigator.of(context).pop(); - wibody = ListView( - children: [ - GestureDetector( - child: ListTile( - title: Text(titlecontroller.text), - - subtitle:Text(desccontroller.text), - - leading: const CircleAvatar( - child: Text("1"), - - - - - ), - ), - - onDoubleTap: (){ - showDialog( - context: _scaffyKey.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(); - wibody = Row( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.center, - children: const [ - Center( - child: Text("No Todos Added") - ) - ], - ); - - - - }); - }, child: const Text("Yes")), - TextButton(onPressed: (() { - Navigator.of(currentContext).pop(); - - }), child: const Text("No")) - ], - ); - - }); - }, - ) - - ] - ); - }); - } - }, child: const Text("submit", - style: TextStyle(color: Colors.blue),) - ) - - - )], - - - ) - ) - ) - ); - - - - - - - } - ); - } - ), - - - - - - - body: wibody ); //TODO: Add list view displaying all todo. - + 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: 330.0, + child: TextButton( + onPressed: () { + if (titlecontroller + .text.isNotEmpty && + desccontroller + .text.isNotEmpty) { + setState(() { + Navigator.of(context).pop(); + wibody = ListView(children: [ + GestureDetector( + child: ListTile( + title: Text( + titlecontroller + .text), + subtitle: Text( + desccontroller + .text), + leading: + const CircleAvatar( + child: Text("1"), + ), + ), + onDoubleTap: () { + showDialog( + context: _scaffyKey + .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(); + wibody = + Row( + mainAxisAlignment: + MainAxisAlignment.center, + crossAxisAlignment: + CrossAxisAlignment.center, + children: const [ + Center(child: Text("No Todos Added")) + ], + ); + }); + }, + child: const Text( + "Yes")), + TextButton( + onPressed: + (() { + Navigator.of(currentContext) + .pop(); + }), + child: const Text( + "No")) + ], + ); + }); + }, + ) + ]); + }); + } + }, + child: const Text( + "submit", + style: + TextStyle(color: Colors.blue), + ))) + ], + )))); + }); + }), + body: wibody); //TODO: Add list view displaying all todo. } } diff --git a/lib/widgets/add_todo_dialogue.dart b/lib/widgets/add_todo_dialogue.dart index e526914..d00a408 100644 --- a/lib/widgets/add_todo_dialogue.dart +++ b/lib/widgets/add_todo_dialogue.dart @@ -3,18 +3,16 @@ 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); + const AddTodoDialogue({Key key}) : super(key: key); @override _AddTodoDialogueState createState() => _AddTodoDialogueState(); - - } class _AddTodoDialogueState extends State { - final TextEditingController titlecontroller = TextEditingController(); - final TextEditingController desccontroller = TextEditingController(); - int i = 0; + final TextEditingController titlecontroller = TextEditingController(); + final TextEditingController desccontroller = TextEditingController(); + int i = 0; TodoList listItem = TodoList(); List listWig = []; @@ -55,9 +53,6 @@ class _AddTodoDialogueState extends State { }); }, child: const Text("Submit")) - ] - ) - ) - ) - ); - }} \ No newline at end of file + ])))); + } +} From d83ff0a388fba9d0588dc00a793fe4be064eb683 Mon Sep 17 00:00:00 2001 From: Yashsomalkar Date: Fri, 11 Feb 2022 15:53:21 +0530 Subject: [PATCH 3/5] removed infos --- lib/screen/todo_screen.dart | 9 +++------ lib/widgets/todo_list_item.dart | 1 - 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/lib/screen/todo_screen.dart b/lib/screen/todo_screen.dart index 24cb17c..d0706c6 100644 --- a/lib/screen/todo_screen.dart +++ b/lib/screen/todo_screen.dart @@ -1,7 +1,6 @@ import 'package:flutter/material.dart'; -import 'package:workshop_task/models/todo.dart'; + import 'package:workshop_task/models/todo_list.dart'; -import 'package:workshop_task/widgets/todo_list_item.dart'; class TodoScreen extends StatefulWidget { const TodoScreen({Key key}) : super(key: key); @@ -12,7 +11,7 @@ class TodoScreen extends StatefulWidget { class _TodoScreenState extends State { TodoList todoList = TodoList(); - final List _allTodos = []; + List listWig = []; final TextEditingController titlecontroller = TextEditingController(); final TextEditingController desccontroller = TextEditingController(); @@ -35,8 +34,6 @@ class _TodoScreenState extends State { appBar: AppBar( title: const Text("Your Todos"), ), - - //TODO: Add todo button with this icon => "+". floatingActionButton: FloatingActionButton( child: const Icon( Icons.add_outlined, @@ -153,6 +150,6 @@ class _TodoScreenState extends State { )))); }); }), - body: wibody); //TODO: Add list view displaying all todo. + body: wibody); } } diff --git a/lib/widgets/todo_list_item.dart b/lib/widgets/todo_list_item.dart index 10229d1..b567b2c 100644 --- a/lib/widgets/todo_list_item.dart +++ b/lib/widgets/todo_list_item.dart @@ -8,7 +8,6 @@ class TodoListItem extends StatelessWidget { @override Widget build(BuildContext context) { - //TODO: display title and description of todo. return ListTile( title: Text(todo.title), subtitle: Text(todo.description), From a1d4820cc9596245e974d2faa8904830ef383429 Mon Sep 17 00:00:00 2001 From: Yashsomalkar Date: Fri, 11 Feb 2022 19:34:56 +0530 Subject: [PATCH 4/5] fixed add button --- lib/main.dart | 22 +++------------------- lib/screen/todo_screen.dart | 9 ++------- 2 files changed, 5 insertions(+), 26 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index aa857ba..fadbee0 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -2,23 +2,7 @@ import 'package:flutter/material.dart'; import 'package:workshop_task/screen/todo_screen.dart'; void main() { - runApp(const MyApp()); -} - -class MyApp extends StatelessWidget { - const MyApp({Key key}) : super(key: key); - - // This widget is the root of your application. - @override - Widget build(BuildContext context) { - return MaterialApp( - title: 'Flutter Demo', - theme: ThemeData( - // is not restarted. - primarySwatch: Colors.green, - ), - //GO to correct screen. - home: const TodoScreen(), - ); - } + runApp(const MaterialApp( + home: TodoScreen(), + )); } diff --git a/lib/screen/todo_screen.dart b/lib/screen/todo_screen.dart index d0706c6..681f269 100644 --- a/lib/screen/todo_screen.dart +++ b/lib/screen/todo_screen.dart @@ -1,7 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:workshop_task/models/todo_list.dart'; - class TodoScreen extends StatefulWidget { const TodoScreen({Key key}) : super(key: key); @@ -10,9 +8,6 @@ class TodoScreen extends StatefulWidget { } class _TodoScreenState extends State { - TodoList todoList = TodoList(); - - List listWig = []; final TextEditingController titlecontroller = TextEditingController(); final TextEditingController desccontroller = TextEditingController(); final GlobalKey _scaffyKey = GlobalKey(); @@ -36,7 +31,7 @@ class _TodoScreenState extends State { ), floatingActionButton: FloatingActionButton( child: const Icon( - Icons.add_outlined, + Icons.add, size: 35, ), onPressed: () { @@ -66,7 +61,7 @@ class _TodoScreenState extends State { labelText: "Description", hintText: 'Description')), SizedBox( - width: 330.0, + width: 320.0, child: TextButton( onPressed: () { if (titlecontroller From bc3876ba3631505ad2f28e82e3ce3d8cb127be58 Mon Sep 17 00:00:00 2001 From: Yashsomalkar Date: Sun, 13 Feb 2022 00:21:37 +0530 Subject: [PATCH 5/5] Requested Changes --- lib/screen/todo_screen.dart | 162 ++++++++++------------------- lib/widgets/add_todo_dialogue.dart | 3 +- lib/widgets/todo_list_item.dart | 3 + 3 files changed, 58 insertions(+), 110 deletions(-) diff --git a/lib/screen/todo_screen.dart b/lib/screen/todo_screen.dart index 681f269..0f11ef3 100644 --- a/lib/screen/todo_screen.dart +++ b/lib/screen/todo_screen.dart @@ -1,4 +1,8 @@ import 'package:flutter/material.dart'; +import 'package:workshop_task/models/todo.dart'; +import 'package:workshop_task/models/todo_list.dart'; +import 'package:workshop_task/widgets/add_todo_dialogue.dart'; +import 'package:workshop_task/widgets/todo_list_item.dart'; class TodoScreen extends StatefulWidget { const TodoScreen({Key key}) : super(key: key); @@ -10,8 +14,8 @@ class TodoScreen extends StatefulWidget { class _TodoScreenState extends State { final TextEditingController titlecontroller = TextEditingController(); final TextEditingController desccontroller = TextEditingController(); - final GlobalKey _scaffyKey = GlobalKey(); + TodoList listitem = TodoList(); Widget wibody = Row( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, @@ -25,7 +29,6 @@ class _TodoScreenState extends State { @override Widget build(BuildContext context) { return Scaffold( - key: _scaffyKey, appBar: AppBar( title: const Text("Your Todos"), ), @@ -38,113 +41,54 @@ class _TodoScreenState extends State { 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(); - wibody = ListView(children: [ - GestureDetector( - child: ListTile( - title: Text( - titlecontroller - .text), - subtitle: Text( - desccontroller - .text), - leading: - const CircleAvatar( - child: Text("1"), - ), - ), - onDoubleTap: () { - showDialog( - context: _scaffyKey - .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(); - wibody = - Row( - mainAxisAlignment: - MainAxisAlignment.center, - crossAxisAlignment: - CrossAxisAlignment.center, - children: const [ - Center(child: Text("No Todos Added")) - ], - ); - }); - }, - child: const Text( - "Yes")), - TextButton( - onPressed: - (() { - Navigator.of(currentContext) - .pop(); - }), - child: const Text( - "No")) - ], - ); - }); - }, - ) - ]); - }); - } - }, - child: const Text( - "submit", - style: - TextStyle(color: Colors.blue), - ))) - ], - )))); - }); + return const AddTodoDialogue(); + }).then((value) { + setState(() { + { + listitem.addTodo(value); + } + }); + }); }), - body: wibody); + body: listitem.allTodos().isEmpty + ? wibody + : ListView.builder( + itemBuilder: (context, index) { + return GestureDetector( + onDoubleTap: () { + showDialog( + context: context, + builder: (BuildContext context) { + return AlertDialog( + content: const Text( + "Are you sure you want to delete this todo?"), + actions: [ + TextButton( + onPressed: () { + Todo content = listitem.allTodos()[index]; + Navigator.pop(context, content); + }, + child: const Text("Yes")), + TextButton( + onPressed: () { + Navigator.pop(context); + }, + child: const Text("No")) + ], + ); + }).then((value) { + setState(() { + listitem.deleteTodo(value); + }); + }); + }, + child: TodoListItem( + index: index + 1, + todo: listitem.allTodos()[index], + ), + ); + }, + itemCount: listitem.allTodos().length, + )); } } diff --git a/lib/widgets/add_todo_dialogue.dart b/lib/widgets/add_todo_dialogue.dart index d00a408..7b5af92 100644 --- a/lib/widgets/add_todo_dialogue.dart +++ b/lib/widgets/add_todo_dialogue.dart @@ -12,6 +12,7 @@ class AddTodoDialogue extends StatefulWidget { class _AddTodoDialogueState extends State { final TextEditingController titlecontroller = TextEditingController(); final TextEditingController desccontroller = TextEditingController(); + int i = 0; TodoList listItem = TodoList(); List listWig = []; @@ -46,9 +47,9 @@ class _AddTodoDialogueState extends State { title: titlecontroller.text, description: desccontroller.text); - listItem.addTodo(content); titlecontroller.clear(); desccontroller.clear(); + Navigator.pop(context, content); } }); }, diff --git a/lib/widgets/todo_list_item.dart b/lib/widgets/todo_list_item.dart index b567b2c..83d4217 100644 --- a/lib/widgets/todo_list_item.dart +++ b/lib/widgets/todo_list_item.dart @@ -11,6 +11,9 @@ class TodoListItem extends StatelessWidget { return ListTile( title: Text(todo.title), subtitle: Text(todo.description), + leading: CircleAvatar( + child: Text("$index"), + ), ); } }