diff --git a/lib/app/modules/about/views/about_page_body.dart b/lib/app/modules/about/views/about_page_body.dart index e6e42368..9cd2063e 100644 --- a/lib/app/modules/about/views/about_page_body.dart +++ b/lib/app/modules/about/views/about_page_body.dart @@ -9,7 +9,7 @@ import 'package:url_launcher/url_launcher.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_colors.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_fonts.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; class AboutPageBody extends StatelessWidget { const AboutPageBody({super.key}); diff --git a/lib/app/modules/about/views/about_view.dart b/lib/app/modules/about/views/about_view.dart index b1203a44..c052005c 100644 --- a/lib/app/modules/about/views/about_view.dart +++ b/lib/app/modules/about/views/about_view.dart @@ -7,7 +7,7 @@ import 'package:taskwarrior/app/modules/about/views/about_page_body.dart'; import '../controllers/about_controller.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_colors.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; class AboutView extends GetView { const AboutView({super.key}); diff --git a/lib/app/modules/detailRoute/controllers/detail_route_controller.dart b/lib/app/modules/detailRoute/controllers/detail_route_controller.dart index 2a536712..e40c047d 100644 --- a/lib/app/modules/detailRoute/controllers/detail_route_controller.dart +++ b/lib/app/modules/detailRoute/controllers/detail_route_controller.dart @@ -1,10 +1,15 @@ // ignore_for_file: depend_on_referenced_packages import 'package:built_collection/built_collection.dart'; +import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:taskwarrior/app/modules/home/controllers/home_controller.dart'; +import 'package:taskwarrior/app/tour/details_page_tour.dart'; +import 'package:taskwarrior/app/utils/constants/taskwarrior_colors.dart'; import 'package:taskwarrior/app/utils/taskfunctions/modify.dart'; import 'package:taskwarrior/app/utils/taskfunctions/urgency.dart'; +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; +import 'package:tutorial_coach_mark/tutorial_coach_mark.dart'; class DetailRouteController extends GetxController { late String uuid; @@ -87,4 +92,49 @@ class DetailRouteController extends GetxController { tagsValue?.value = modify.draft.tags; urgencyValue.value = urgency(modify.draft); } + + late TutorialCoachMark tutorialCoachMark; + + final GlobalKey dueKey = GlobalKey(); + final GlobalKey untilKey = GlobalKey(); + + final GlobalKey waitKey = GlobalKey(); + final GlobalKey priorityKey = GlobalKey(); + + void initDetailsPageTour() { + tutorialCoachMark = TutorialCoachMark( + targets: addDetailsPage( + dueKey: dueKey, + waitKey: waitKey, + untilKey: untilKey, + priorityKey: priorityKey, + ), + colorShadow: TaskWarriorColors.black, + paddingFocus: 10, + opacityShadow: 1.00, + hideSkip: true, + onFinish: () { + SaveTourStatus.saveDetailsTourStatus(true); + }, + ); + } + + void showDetailsPageTour(BuildContext context) { + Future.delayed( + const Duration(milliseconds: 500), + () { + SaveTourStatus.getDetailsTourStatus().then((value) => { + if (value == false) + { + tutorialCoachMark.show(context: context), + } + else + { + // ignore: avoid_print + print('User has seen this page'), + } + }); + }, + ); + } } diff --git a/lib/app/modules/detailRoute/views/dateTimePicker.dart b/lib/app/modules/detailRoute/views/dateTimePicker.dart index b2c40f66..944c5c7a 100644 --- a/lib/app/modules/detailRoute/views/dateTimePicker.dart +++ b/lib/app/modules/detailRoute/views/dateTimePicker.dart @@ -6,7 +6,7 @@ import 'package:intl/intl.dart'; import 'package:taskwarrior/app/utils/constants/constants.dart'; import 'package:taskwarrior/app/utils/gen/fonts.gen.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; class DateTimeWidget extends StatelessWidget { const DateTimeWidget({ @@ -14,16 +14,19 @@ class DateTimeWidget extends StatelessWidget { required this.name, required this.value, required this.callback, + required this.globalKey, }); final String name; final dynamic value; final void Function(dynamic) callback; + final GlobalKey globalKey; @override Widget build(BuildContext context) { return Card( + key: globalKey, color: AppSettings.isDarkMode ? const Color.fromARGB(255, 57, 57, 57) : Colors.white, diff --git a/lib/app/modules/detailRoute/views/description_widget.dart b/lib/app/modules/detailRoute/views/description_widget.dart index e4f85047..e4018a75 100644 --- a/lib/app/modules/detailRoute/views/description_widget.dart +++ b/lib/app/modules/detailRoute/views/description_widget.dart @@ -5,7 +5,7 @@ import 'package:loggy/loggy.dart'; import 'package:taskwarrior/app/utils/constants/constants.dart'; import 'package:taskwarrior/app/utils/constants/utilites.dart'; import 'package:taskwarrior/app/utils/gen/fonts.gen.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; class DescriptionWidget extends StatelessWidget { const DescriptionWidget( diff --git a/lib/app/modules/detailRoute/views/detail_route_view.dart b/lib/app/modules/detailRoute/views/detail_route_view.dart index 5568d7c6..478da44f 100644 --- a/lib/app/modules/detailRoute/views/detail_route_view.dart +++ b/lib/app/modules/detailRoute/views/detail_route_view.dart @@ -13,13 +13,15 @@ import 'package:taskwarrior/app/modules/detailRoute/views/tags_widget.dart'; import 'package:taskwarrior/app/utils/constants/constants.dart'; import 'package:taskwarrior/app/utils/gen/fonts.gen.dart'; import 'package:taskwarrior/app/utils/language/sentence_manager.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; class DetailRouteView extends GetView { const DetailRouteView({super.key}); @override Widget build(BuildContext context) { + controller.initDetailsPageTour(); + controller.showDetailsPageTour(context); return WillPopScope( onWillPop: () async { if (!controller.onEdit.value) { @@ -135,6 +137,10 @@ class DetailRouteView extends GetView { value: entry.value, callback: (newValue) => controller.setAttribute(entry.key, newValue), + waitKey: controller.waitKey, + dueKey: controller.dueKey, + untilKey: controller.untilKey, + priorityKey: controller.priorityKey, ), ], ), @@ -225,12 +231,20 @@ class AttributeWidget extends StatelessWidget { required this.name, required this.value, required this.callback, + required this.waitKey, + required this.dueKey, + required this.priorityKey, + required this.untilKey, super.key, }); final String name; final dynamic value; final void Function(dynamic) callback; + final GlobalKey waitKey; + final GlobalKey dueKey; + final GlobalKey untilKey; + final GlobalKey priorityKey; @override Widget build(BuildContext context) { @@ -262,24 +276,28 @@ class AttributeWidget extends StatelessWidget { name: name, value: localValue, callback: callback, + globalKey: dueKey, ); case 'wait': return DateTimeWidget( name: name, value: localValue, callback: callback, + globalKey: waitKey, ); case 'until': return DateTimeWidget( name: name, value: localValue, callback: callback, + globalKey: untilKey, ); case 'priority': return PriorityWidget( name: name, value: localValue, callback: callback, + globalKey: priorityKey, ); case 'project': return ProjectWidget( diff --git a/lib/app/modules/detailRoute/views/priority_widget.dart b/lib/app/modules/detailRoute/views/priority_widget.dart index b3a7dc17..945afec1 100644 --- a/lib/app/modules/detailRoute/views/priority_widget.dart +++ b/lib/app/modules/detailRoute/views/priority_widget.dart @@ -1,22 +1,25 @@ import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:taskwarrior/app/utils/constants/constants.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; class PriorityWidget extends StatelessWidget { const PriorityWidget( {required this.name, required this.value, required this.callback, + required this.globalKey, super.key}); final String name; final dynamic value; final void Function(dynamic) callback; + final GlobalKey globalKey; @override Widget build(BuildContext context) { return Card( + key: globalKey, color: AppSettings.isDarkMode ? const Color.fromARGB(255, 57, 57, 57) : Colors.white, diff --git a/lib/app/modules/detailRoute/views/status_widget.dart b/lib/app/modules/detailRoute/views/status_widget.dart index a2c2debb..87bc6d8f 100644 --- a/lib/app/modules/detailRoute/views/status_widget.dart +++ b/lib/app/modules/detailRoute/views/status_widget.dart @@ -4,7 +4,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:taskwarrior/app/utils/constants/constants.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; class StatusWidget extends StatelessWidget { diff --git a/lib/app/modules/detailRoute/views/tags_widget.dart b/lib/app/modules/detailRoute/views/tags_widget.dart index 4f16241a..c4906d59 100644 --- a/lib/app/modules/detailRoute/views/tags_widget.dart +++ b/lib/app/modules/detailRoute/views/tags_widget.dart @@ -11,7 +11,7 @@ import 'package:taskwarrior/app/modules/home/controllers/home_controller.dart'; import 'package:taskwarrior/app/utils/constants/constants.dart'; import 'package:taskwarrior/app/utils/constants/utilites.dart'; import 'package:taskwarrior/app/utils/taskfunctions/validate.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; class TagsWidget extends StatelessWidget { const TagsWidget({ diff --git a/lib/app/modules/home/controllers/home_controller.dart b/lib/app/modules/home/controllers/home_controller.dart index 78502dd0..163720dc 100644 --- a/lib/app/modules/home/controllers/home_controller.dart +++ b/lib/app/modules/home/controllers/home_controller.dart @@ -28,7 +28,7 @@ import 'package:taskwarrior/app/utils/taskfunctions/comparator.dart'; import 'package:taskwarrior/app/utils/taskfunctions/projects.dart'; import 'package:taskwarrior/app/utils/taskfunctions/query.dart'; import 'package:taskwarrior/app/utils/taskfunctions/tags.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; import 'package:tutorial_coach_mark/tutorial_coach_mark.dart'; class HomeController extends GetxController { diff --git a/lib/app/modules/home/views/add_task_bottom_sheet.dart b/lib/app/modules/home/views/add_task_bottom_sheet.dart index 13b598b1..48fb08e1 100644 --- a/lib/app/modules/home/views/add_task_bottom_sheet.dart +++ b/lib/app/modules/home/views/add_task_bottom_sheet.dart @@ -12,7 +12,7 @@ import 'package:taskwarrior/app/modules/home/controllers/widget.controller.dart' import 'package:taskwarrior/app/utils/constants/taskwarrior_colors.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_fonts.dart'; import 'package:taskwarrior/app/utils/taskfunctions/taskparser.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; class AddTaskBottomSheet extends StatelessWidget { final HomeController homeController; diff --git a/lib/app/modules/home/views/add_task_to_taskc_bottom_sheet.dart b/lib/app/modules/home/views/add_task_to_taskc_bottom_sheet.dart index 00e6587a..ae29a077 100644 --- a/lib/app/modules/home/views/add_task_to_taskc_bottom_sheet.dart +++ b/lib/app/modules/home/views/add_task_to_taskc_bottom_sheet.dart @@ -6,7 +6,8 @@ import 'package:taskwarrior/api_service.dart'; import 'package:taskwarrior/app/modules/home/controllers/home_controller.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_colors.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_fonts.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; + +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; class AddTaskToTaskcBottomSheet extends StatelessWidget { final HomeController homeController; diff --git a/lib/app/modules/home/views/filter_drawer_home_page.dart b/lib/app/modules/home/views/filter_drawer_home_page.dart index 548f8c9c..bcf0a06c 100644 --- a/lib/app/modules/home/views/filter_drawer_home_page.dart +++ b/lib/app/modules/home/views/filter_drawer_home_page.dart @@ -11,7 +11,7 @@ import 'package:taskwarrior/app/utils/constants/taskwarrior_colors.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_fonts.dart'; import 'package:taskwarrior/app/utils/gen/fonts.gen.dart'; import 'package:taskwarrior/app/utils/language/sentence_manager.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; class FilterDrawer extends StatelessWidget { final Filters filters; diff --git a/lib/app/modules/home/views/home_page_app_bar.dart b/lib/app/modules/home/views/home_page_app_bar.dart index 1b766270..f5aac06d 100644 --- a/lib/app/modules/home/views/home_page_app_bar.dart +++ b/lib/app/modules/home/views/home_page_app_bar.dart @@ -10,7 +10,7 @@ import 'package:taskwarrior/app/utils/language/sentence_manager.dart'; import 'package:taskwarrior/app/utils/taskchampion/credentials_storage.dart'; import 'package:taskwarrior/app/utils/taskchampion/taskchampion.dart'; import 'package:taskwarrior/app/utils/taskserver/taskserver.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; import '../controllers/home_controller.dart'; diff --git a/lib/app/modules/home/views/home_page_body.dart b/lib/app/modules/home/views/home_page_body.dart index 4304fe85..5f1a3700 100644 --- a/lib/app/modules/home/views/home_page_body.dart +++ b/lib/app/modules/home/views/home_page_body.dart @@ -7,7 +7,7 @@ import 'package:taskwarrior/app/modules/home/views/show_tasks.dart'; import 'package:taskwarrior/app/modules/home/views/tasks_builder.dart'; import 'package:taskwarrior/app/utils/constants/palette.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_colors.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; import '../controllers/home_controller.dart'; diff --git a/lib/app/modules/home/views/home_page_floating_action_button.dart b/lib/app/modules/home/views/home_page_floating_action_button.dart index 9770b3f9..8a0c32aa 100644 --- a/lib/app/modules/home/views/home_page_floating_action_button.dart +++ b/lib/app/modules/home/views/home_page_floating_action_button.dart @@ -4,7 +4,7 @@ import 'package:taskwarrior/app/modules/home/views/add_task_bottom_sheet.dart'; import 'package:taskwarrior/app/modules/home/views/add_task_to_taskc_bottom_sheet.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_colors.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; import '../controllers/home_controller.dart'; diff --git a/lib/app/modules/home/views/home_page_nav_drawer_menu_item.dart b/lib/app/modules/home/views/home_page_nav_drawer_menu_item.dart index 7425864f..22d0f0a9 100644 --- a/lib/app/modules/home/views/home_page_nav_drawer_menu_item.dart +++ b/lib/app/modules/home/views/home_page_nav_drawer_menu_item.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_colors.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_fonts.dart'; diff --git a/lib/app/modules/home/views/nav_drawer.dart b/lib/app/modules/home/views/nav_drawer.dart index bed358f0..67946e2e 100644 --- a/lib/app/modules/home/views/nav_drawer.dart +++ b/lib/app/modules/home/views/nav_drawer.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:get/get.dart'; import 'package:shared_preferences/shared_preferences.dart'; +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; import 'package:taskwarrior/app/modules/home/controllers/home_controller.dart'; import 'package:taskwarrior/app/modules/home/views/home_page_nav_drawer_menu_item.dart'; import 'package:taskwarrior/app/modules/home/views/theme_clipper.dart'; @@ -12,7 +13,6 @@ import 'package:taskwarrior/app/utils/constants/taskwarrior_fonts.dart'; import 'package:taskwarrior/app/utils/constants/utilites.dart'; import 'package:taskwarrior/app/utils/language/sentence_manager.dart'; import 'package:taskwarrior/app/utils/taskchampion/taskchampion.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; class NavDrawer extends StatelessWidget { final HomeController homeController; diff --git a/lib/app/modules/home/views/project_column_home_page.dart b/lib/app/modules/home/views/project_column_home_page.dart index a01b2e93..bfc1c665 100644 --- a/lib/app/modules/home/views/project_column_home_page.dart +++ b/lib/app/modules/home/views/project_column_home_page.dart @@ -6,7 +6,7 @@ import 'package:taskwarrior/app/utils/constants/taskwarrior_colors.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_fonts.dart'; import 'package:taskwarrior/app/utils/gen/fonts.gen.dart'; import 'package:taskwarrior/app/utils/taskfunctions/projects.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; class ProjectsColumn extends StatelessWidget { const ProjectsColumn({ diff --git a/lib/app/modules/home/views/project_column_taskc.dart b/lib/app/modules/home/views/project_column_taskc.dart index 134a260e..0e357aa9 100644 --- a/lib/app/modules/home/views/project_column_taskc.dart +++ b/lib/app/modules/home/views/project_column_taskc.dart @@ -2,7 +2,8 @@ import 'package:flutter/material.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_colors.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_fonts.dart'; import 'package:taskwarrior/app/utils/gen/fonts.gen.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; // Import your necessary dependencies + +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; class ProjectColumnTaskc extends StatelessWidget { const ProjectColumnTaskc({ diff --git a/lib/app/modules/home/views/show_details.dart b/lib/app/modules/home/views/show_details.dart index 038daab1..b85daeb2 100644 --- a/lib/app/modules/home/views/show_details.dart +++ b/lib/app/modules/home/views/show_details.dart @@ -6,7 +6,7 @@ import 'package:intl/intl.dart'; import 'package:taskwarrior/api_service.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_colors.dart'; import 'package:taskwarrior/app/utils/constants/utilites.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; class TaskDetails extends StatefulWidget { final Tasks task; diff --git a/lib/app/modules/home/views/show_tasks.dart b/lib/app/modules/home/views/show_tasks.dart index 2b45bdc5..de45cebe 100644 --- a/lib/app/modules/home/views/show_tasks.dart +++ b/lib/app/modules/home/views/show_tasks.dart @@ -8,7 +8,8 @@ import 'package:taskwarrior/app/modules/home/views/show_details.dart'; import 'package:taskwarrior/app/utils/constants/palette.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_colors.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_fonts.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; + +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; class TaskViewBuilder extends StatelessWidget { const TaskViewBuilder({ diff --git a/lib/app/modules/home/views/tas_list_item.dart b/lib/app/modules/home/views/tas_list_item.dart index 5ad6e023..38911a47 100644 --- a/lib/app/modules/home/views/tas_list_item.dart +++ b/lib/app/modules/home/views/tas_list_item.dart @@ -8,7 +8,7 @@ import 'package:taskwarrior/app/utils/language/supported_language.dart'; import 'package:taskwarrior/app/utils/taskfunctions/datetime_differences.dart'; import 'package:taskwarrior/app/utils/taskfunctions/modify.dart'; import 'package:taskwarrior/app/utils/taskfunctions/urgency.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; class TaskListItem extends StatelessWidget { const TaskListItem( diff --git a/lib/app/modules/home/views/tasks_builder.dart b/lib/app/modules/home/views/tasks_builder.dart index 7e0117c7..e0254e67 100644 --- a/lib/app/modules/home/views/tasks_builder.dart +++ b/lib/app/modules/home/views/tasks_builder.dart @@ -18,7 +18,7 @@ import 'package:taskwarrior/app/utils/gen/fonts.gen.dart'; import 'package:taskwarrior/app/utils/language/sentence_manager.dart'; import 'package:taskwarrior/app/utils/language/supported_language.dart'; import 'package:taskwarrior/app/utils/taskfunctions/modify.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; class TasksBuilder extends StatelessWidget { const TasksBuilder({ diff --git a/lib/app/modules/manageTaskServer/controllers/manage_task_server_controller.dart b/lib/app/modules/manageTaskServer/controllers/manage_task_server_controller.dart index bbdde4ae..5ed55441 100644 --- a/lib/app/modules/manageTaskServer/controllers/manage_task_server_controller.dart +++ b/lib/app/modules/manageTaskServer/controllers/manage_task_server_controller.dart @@ -8,10 +8,12 @@ import 'package:taskwarrior/app/models/storage.dart'; import 'package:taskwarrior/app/models/storage/set_config.dart'; import 'package:taskwarrior/app/modules/home/controllers/home_controller.dart'; import 'package:taskwarrior/app/modules/splash/controllers/splash_controller.dart'; +import 'package:taskwarrior/app/tour/manage_task_server_page_tour.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_colors.dart'; import 'package:taskwarrior/app/utils/home_path/home_path.dart' as rc; import 'package:taskwarrior/app/utils/taskserver/taskserver.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; +import 'package:tutorial_coach_mark/tutorial_coach_mark.dart'; class ManageTaskServerController extends GetxController { final HomeController homeController = Get.find(); @@ -196,4 +198,62 @@ class ManageTaskServerController extends GetxController { null; } } + + late TutorialCoachMark tutorialCoachMark; + + final GlobalKey configureTaskRC = GlobalKey(); + final GlobalKey configureServerCertificate = GlobalKey(); + + final GlobalKey configureTaskServerKey = GlobalKey(); + final GlobalKey configureYourCertificate = GlobalKey(); + + void initManageTaskServerPageTour() { + tutorialCoachMark = TutorialCoachMark( + targets: addManageTaskServerPage( + configureTaskRC: configureTaskRC, + configureYourCertificate: configureYourCertificate, + configureTaskServerKey: configureTaskServerKey, + configureServerCertificate: configureServerCertificate, + ), + colorShadow: TaskWarriorColors.black, + paddingFocus: 10, + opacityShadow: 1.00, + hideSkip: true, + onFinish: () { + SaveTourStatus.saveManageTaskServerTourStatus(true); + }, + ); + } + + void showManageTaskServerPageTour(BuildContext context) { + Future.delayed( + const Duration(milliseconds: 500), + () { + SaveTourStatus.getManageTaskServerTourStatus().then((value) => { + if (value == false) + { + tutorialCoachMark.show(context: context), + } + else + { + // ignore: avoid_print + print('User has seen this page'), + } + }); + }, + ); + } + + GlobalKey getGlobalKey(String pem) { + switch (pem) { + case 'taskd.ca': + return configureServerCertificate; + case 'taskd.certificate': + return configureYourCertificate; + case 'taskd.key': + return configureTaskServerKey; + default: + return configureServerCertificate; + } + } } diff --git a/lib/app/modules/manageTaskServer/views/manage_task_server_page_app_bar.dart b/lib/app/modules/manageTaskServer/views/manage_task_server_page_app_bar.dart index 21e0ebe5..a7ab40c1 100644 --- a/lib/app/modules/manageTaskServer/views/manage_task_server_page_app_bar.dart +++ b/lib/app/modules/manageTaskServer/views/manage_task_server_page_app_bar.dart @@ -13,8 +13,10 @@ import 'package:taskwarrior/app/utils/constants/taskwarrior_fonts.dart'; import 'package:taskwarrior/app/utils/constants/utilites.dart'; import 'package:taskwarrior/app/utils/gen/fonts.gen.dart'; + +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; import 'package:taskwarrior/app/utils/language/sentence_manager.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; + import 'package:url_launcher/url_launcher.dart'; import '../controllers/manage_task_server_controller.dart'; diff --git a/lib/app/modules/manageTaskServer/views/manage_task_server_page_body.dart b/lib/app/modules/manageTaskServer/views/manage_task_server_page_body.dart index daaa2150..25e2a76d 100644 --- a/lib/app/modules/manageTaskServer/views/manage_task_server_page_body.dart +++ b/lib/app/modules/manageTaskServer/views/manage_task_server_page_body.dart @@ -10,7 +10,7 @@ import 'package:taskwarrior/app/utils/constants/taskwarrior_colors.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_fonts.dart'; import 'package:taskwarrior/app/utils/language/sentence_manager.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; class ManageTaskServerPageBody extends StatelessWidget { final ManageTaskServerController controller; @@ -18,6 +18,8 @@ class ManageTaskServerPageBody extends StatelessWidget { @override Widget build(BuildContext context) { + controller.initManageTaskServerPageTour(); + controller.showManageTaskServerPageTour(context); return Padding( padding: const EdgeInsets.only(left: 20, right: 20), child: ListView( @@ -25,6 +27,7 @@ class ManageTaskServerPageBody extends StatelessWidget { // crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( + key: controller.configureTaskRC, padding: const EdgeInsets.only( top: 10, bottom: 10, @@ -521,6 +524,7 @@ class ManageTaskServerPageBody extends StatelessWidget { .manageTaskServerPageSelectCertificate, onTapCallBack: controller.onTapPEMWidget, onLongPressCallBack: controller.onLongPressPEMWidget, + globalKey: controller.getGlobalKey(pem), ), ); } diff --git a/lib/app/modules/manageTaskServer/views/manage_task_server_view.dart b/lib/app/modules/manageTaskServer/views/manage_task_server_view.dart index 2aa071e5..ea49a3d1 100644 --- a/lib/app/modules/manageTaskServer/views/manage_task_server_view.dart +++ b/lib/app/modules/manageTaskServer/views/manage_task_server_view.dart @@ -8,7 +8,7 @@ import 'package:taskwarrior/app/modules/manageTaskServer/views/manage_task_serve import 'package:taskwarrior/app/modules/manageTaskServer/views/manage_task_server_page_body.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_colors.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; import '../controllers/manage_task_server_controller.dart'; diff --git a/lib/app/modules/manageTaskServer/views/pem_widget.dart b/lib/app/modules/manageTaskServer/views/pem_widget.dart index a101b9e5..e84f7a31 100644 --- a/lib/app/modules/manageTaskServer/views/pem_widget.dart +++ b/lib/app/modules/manageTaskServer/views/pem_widget.dart @@ -3,7 +3,7 @@ import 'package:flutter/material.dart'; import 'package:pem/pem.dart'; import 'package:taskwarrior/app/models/storage.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_colors.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; class PemWidget extends StatelessWidget { const PemWidget({ @@ -14,6 +14,7 @@ class PemWidget extends StatelessWidget { required this.listTileTitle, required this.onTapCallBack, required this.onLongPressCallBack, + required this.globalKey, // required this.manageTaskServerController, }); @@ -23,6 +24,7 @@ class PemWidget extends StatelessWidget { final String listTileTitle; final Function(String pem, Storage storagePem) onTapCallBack; final Function(String pem, String? name) onLongPressCallBack; + final GlobalKey globalKey; // final ManageTaskServerController manageTaskServerController; @override @@ -51,6 +53,7 @@ class PemWidget extends StatelessWidget { ? TaskWarriorColors.ksecondaryBackgroundColor : TaskWarriorColors.kLightSecondaryBackgroundColor; return Padding( + key: globalKey, padding: const EdgeInsets.only( top: 10, bottom: 10, diff --git a/lib/app/modules/profile/controllers/profile_controller.dart b/lib/app/modules/profile/controllers/profile_controller.dart index 7280eea3..50e6e5cd 100644 --- a/lib/app/modules/profile/controllers/profile_controller.dart +++ b/lib/app/modules/profile/controllers/profile_controller.dart @@ -3,7 +3,7 @@ import 'package:get/get.dart'; import 'package:taskwarrior/app/modules/splash/controllers/splash_controller.dart'; import 'package:taskwarrior/app/tour/profile_page_tour.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_colors.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; import 'package:tutorial_coach_mark/tutorial_coach_mark.dart'; class ProfileController extends GetxController { @@ -22,6 +22,7 @@ class ProfileController extends GetxController { final GlobalKey currentProfileKey = GlobalKey(); final GlobalKey addNewProfileKey = GlobalKey(); + final GlobalKey manageSelectedProfileKey = GlobalKey(); void initProfilePageTour() { tutorialCoachMark = TutorialCoachMark( @@ -29,6 +30,7 @@ class ProfileController extends GetxController { currentProfileKey: currentProfileKey, addNewProfileKey: addNewProfileKey, + manageSelectedProfileKey: manageSelectedProfileKey, ), colorShadow: TaskWarriorColors.black, paddingFocus: 10, diff --git a/lib/app/modules/profile/views/deleteprofiledialog.dart b/lib/app/modules/profile/views/deleteprofiledialog.dart index 2f98ad78..9a762eea 100644 --- a/lib/app/modules/profile/views/deleteprofiledialog.dart +++ b/lib/app/modules/profile/views/deleteprofiledialog.dart @@ -3,8 +3,8 @@ import 'package:get/get.dart'; import 'package:taskwarrior/app/modules/splash/controllers/splash_controller.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_colors.dart'; import 'package:taskwarrior/app/utils/constants/utilites.dart'; +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; import 'package:taskwarrior/app/utils/language/sentence_manager.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; class DeleteProfileDialog extends StatelessWidget { const DeleteProfileDialog({ diff --git a/lib/app/modules/profile/views/manageprofile.dart b/lib/app/modules/profile/views/manageprofile.dart index d49c9f98..b5b40a3a 100644 --- a/lib/app/modules/profile/views/manageprofile.dart +++ b/lib/app/modules/profile/views/manageprofile.dart @@ -2,8 +2,9 @@ import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_colors.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_fonts.dart'; + +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; import 'package:taskwarrior/app/utils/language/sentence_manager.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; import 'package:tuple/tuple.dart'; @@ -14,6 +15,7 @@ class ManageProfile extends StatelessWidget { this.export, this.copy, this.delete, { + required this.manageSelectedProfileKey, super.key, }); @@ -22,6 +24,7 @@ class ManageProfile extends StatelessWidget { final void Function() export; final void Function() copy; final void Function() delete; + final GlobalKey manageSelectedProfileKey; @override Widget build(BuildContext context) { @@ -64,6 +67,7 @@ class ManageProfile extends StatelessWidget { ]; return ExpansionTile( + key: manageSelectedProfileKey, backgroundColor: AppSettings.isDarkMode ? TaskWarriorColors.ksecondaryBackgroundColor : TaskWarriorColors.kLightSecondaryBackgroundColor, diff --git a/lib/app/modules/profile/views/profile_view.dart b/lib/app/modules/profile/views/profile_view.dart index 34252ac3..8a224b6d 100644 --- a/lib/app/modules/profile/views/profile_view.dart +++ b/lib/app/modules/profile/views/profile_view.dart @@ -11,8 +11,9 @@ import 'package:taskwarrior/app/routes/app_pages.dart'; import 'package:taskwarrior/app/utils/constants/palette.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_colors.dart'; import 'package:taskwarrior/app/utils/constants/utilites.dart'; + +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; import 'package:taskwarrior/app/utils/language/sentence_manager.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; import '../controllers/profile_controller.dart'; @@ -63,6 +64,7 @@ class ProfileView extends GetView { () => ProfilesColumn( currentProfileKey: controller.currentProfileKey, addNewProfileKey: controller.addNewProfileKey, + manageSelectedProfileKey: controller.manageSelectedProfileKey, controller.profilesMap, controller.currentProfile.value, controller.profilesWidget.addProfile, @@ -227,6 +229,7 @@ class ProfilesColumn extends StatelessWidget { this.delete, { required this.currentProfileKey, required this.addNewProfileKey, + required this.manageSelectedProfileKey, super.key, }); @@ -241,6 +244,7 @@ class ProfilesColumn extends StatelessWidget { final void Function() delete; final GlobalKey currentProfileKey; final GlobalKey addNewProfileKey; + final GlobalKey manageSelectedProfileKey; @override Widget build(BuildContext context) { @@ -264,11 +268,13 @@ class ProfilesColumn extends StatelessWidget { export, copy, delete, + manageSelectedProfileKey: manageSelectedProfileKey, ), const SizedBox( height: 6, ), ElevatedButton.icon( + key: addNewProfileKey, onPressed: () { try { addProfile(); @@ -323,7 +329,7 @@ class ProfilesColumn extends StatelessWidget { currentLanguage: AppSettings.selectedLanguage) .sentences .profilePageAddNewProfile, - key: addNewProfileKey, + style: TextStyle( color: AppSettings.isDarkMode ? TaskWarriorColors.white diff --git a/lib/app/modules/profile/views/renameprofiledialog.dart b/lib/app/modules/profile/views/renameprofiledialog.dart index 38cfe4a0..b74a3350 100644 --- a/lib/app/modules/profile/views/renameprofiledialog.dart +++ b/lib/app/modules/profile/views/renameprofiledialog.dart @@ -3,8 +3,9 @@ import 'package:get/get.dart'; import 'package:taskwarrior/app/modules/splash/controllers/splash_controller.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_colors.dart'; import 'package:taskwarrior/app/utils/constants/utilites.dart'; + +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; import 'package:taskwarrior/app/utils/language/sentence_manager.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; class RenameProfileDialog extends StatelessWidget { const RenameProfileDialog({ diff --git a/lib/app/modules/profile/views/selectprofile.dart b/lib/app/modules/profile/views/selectprofile.dart index ad947b30..37f1abb2 100644 --- a/lib/app/modules/profile/views/selectprofile.dart +++ b/lib/app/modules/profile/views/selectprofile.dart @@ -5,15 +5,16 @@ import 'package:google_fonts/google_fonts.dart'; import 'package:taskwarrior/app/modules/home/controllers/home_controller.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_colors.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_fonts.dart'; + +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; import 'package:taskwarrior/app/utils/language/sentence_manager.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; class SelectProfile extends StatelessWidget { const SelectProfile( this.currentProfile, this.profilesMap, this.selectProfile, { - required this.currentProfileKey, + required this.currentProfileKey, super.key, }); @@ -25,7 +26,7 @@ class SelectProfile extends StatelessWidget { @override Widget build(BuildContext context) { return Obx(() => ExpansionTile( - key: const PageStorageKey('task-list'), + // key: currentProfileKey, backgroundColor: AppSettings.isDarkMode ? TaskWarriorColors.ksecondaryBackgroundColor : TaskWarriorColors.kLightSecondaryBackgroundColor, diff --git a/lib/app/modules/reports/controllers/reports_controller.dart b/lib/app/modules/reports/controllers/reports_controller.dart index 739f4b963..e33e2d66 100644 --- a/lib/app/modules/reports/controllers/reports_controller.dart +++ b/lib/app/modules/reports/controllers/reports_controller.dart @@ -15,7 +15,7 @@ import 'package:taskwarrior/app/utils/constants/taskwarrior_colors.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_fonts.dart'; import 'package:taskwarrior/app/utils/constants/utilites.dart'; import 'package:taskwarrior/app/utils/gen/fonts.gen.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; import 'package:tutorial_coach_mark/tutorial_coach_mark.dart'; diff --git a/lib/app/modules/reports/views/burn_down_daily.dart b/lib/app/modules/reports/views/burn_down_daily.dart index f54fdbaa..e57096a8 100644 --- a/lib/app/modules/reports/views/burn_down_daily.dart +++ b/lib/app/modules/reports/views/burn_down_daily.dart @@ -8,7 +8,7 @@ import 'package:taskwarrior/app/utils/constants/taskwarrior_colors.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_fonts.dart'; import 'package:taskwarrior/app/utils/gen/fonts.gen.dart'; import 'package:taskwarrior/app/utils/language/sentence_manager.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; class BurnDownDaily extends StatelessWidget { final ReportsController reportsController; diff --git a/lib/app/modules/reports/views/burn_down_daily_taskc.dart b/lib/app/modules/reports/views/burn_down_daily_taskc.dart index ed9e946c..afdb5395 100644 --- a/lib/app/modules/reports/views/burn_down_daily_taskc.dart +++ b/lib/app/modules/reports/views/burn_down_daily_taskc.dart @@ -7,7 +7,8 @@ import 'package:taskwarrior/app/modules/reports/views/common_chart_indicator.dar import 'package:taskwarrior/app/utils/constants/taskwarrior_colors.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_fonts.dart'; import 'package:taskwarrior/app/utils/constants/utilites.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; + +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; class BurnDownDailyTaskc extends StatelessWidget { BurnDownDailyTaskc({super.key}); diff --git a/lib/app/modules/reports/views/burn_down_monthly.dart b/lib/app/modules/reports/views/burn_down_monthly.dart index 09ea1684..86a055ca 100644 --- a/lib/app/modules/reports/views/burn_down_monthly.dart +++ b/lib/app/modules/reports/views/burn_down_monthly.dart @@ -7,7 +7,7 @@ import 'package:taskwarrior/app/modules/reports/views/common_chart_indicator.dar import 'package:taskwarrior/app/utils/constants/taskwarrior_fonts.dart'; import 'package:taskwarrior/app/utils/gen/fonts.gen.dart'; import 'package:taskwarrior/app/utils/language/sentence_manager.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; class BurnDownMonthly extends StatelessWidget { final ReportsController reportsController; diff --git a/lib/app/modules/reports/views/burn_down_monthly_taskc.dart b/lib/app/modules/reports/views/burn_down_monthly_taskc.dart index 2d1477f9..852dd9ea 100644 --- a/lib/app/modules/reports/views/burn_down_monthly_taskc.dart +++ b/lib/app/modules/reports/views/burn_down_monthly_taskc.dart @@ -7,7 +7,8 @@ import 'package:taskwarrior/app/modules/reports/views/common_chart_indicator.dar import 'package:taskwarrior/app/utils/constants/taskwarrior_colors.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_fonts.dart'; import 'package:taskwarrior/app/utils/constants/utilites.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; + +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; class BurnDownMonthlyTaskc extends StatelessWidget { BurnDownMonthlyTaskc({super.key}); diff --git a/lib/app/modules/reports/views/burn_down_weekly.dart b/lib/app/modules/reports/views/burn_down_weekly.dart index aca89732..9b4b2d55 100644 --- a/lib/app/modules/reports/views/burn_down_weekly.dart +++ b/lib/app/modules/reports/views/burn_down_weekly.dart @@ -10,7 +10,7 @@ import 'package:taskwarrior/app/utils/constants/taskwarrior_fonts.dart'; import 'package:taskwarrior/app/utils/constants/utilites.dart'; import 'package:taskwarrior/app/utils/gen/fonts.gen.dart'; import 'package:taskwarrior/app/utils/language/sentence_manager.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; class BurnDownWeekly extends StatelessWidget { final ReportsController reportsController; diff --git a/lib/app/modules/reports/views/burn_down_weekly_taskc.dart b/lib/app/modules/reports/views/burn_down_weekly_taskc.dart index 6d9f5821..eec58af8 100644 --- a/lib/app/modules/reports/views/burn_down_weekly_taskc.dart +++ b/lib/app/modules/reports/views/burn_down_weekly_taskc.dart @@ -7,7 +7,8 @@ import 'package:taskwarrior/app/modules/reports/views/common_chart_indicator.dar import 'package:taskwarrior/app/utils/constants/taskwarrior_colors.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_fonts.dart'; import 'package:taskwarrior/app/utils/constants/utilites.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; + +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; class BurnDownWeeklyTask extends StatelessWidget { BurnDownWeeklyTask({super.key}); diff --git a/lib/app/modules/reports/views/common_chart_indicator.dart b/lib/app/modules/reports/views/common_chart_indicator.dart index 86b90d39..d7202e0f 100644 --- a/lib/app/modules/reports/views/common_chart_indicator.dart +++ b/lib/app/modules/reports/views/common_chart_indicator.dart @@ -3,7 +3,7 @@ import 'package:taskwarrior/app/utils/constants/taskwarrior_colors.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_fonts.dart'; import 'package:taskwarrior/app/utils/gen/fonts.gen.dart'; import 'package:taskwarrior/app/utils/language/sentence_manager.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; class CommonChartIndicator extends StatelessWidget { final String title; diff --git a/lib/app/modules/reports/views/reports_view.dart b/lib/app/modules/reports/views/reports_view.dart index a2ceb546..2d240d68 100644 --- a/lib/app/modules/reports/views/reports_view.dart +++ b/lib/app/modules/reports/views/reports_view.dart @@ -8,7 +8,7 @@ import 'package:taskwarrior/app/modules/reports/views/burn_down_weekly.dart'; import 'package:taskwarrior/app/utils/constants/constants.dart'; import 'package:taskwarrior/app/utils/gen/fonts.gen.dart'; import 'package:taskwarrior/app/utils/language/sentence_manager.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; import '../controllers/reports_controller.dart'; diff --git a/lib/app/modules/reports/views/reports_view_taskc.dart b/lib/app/modules/reports/views/reports_view_taskc.dart index 202f9eb5..5056e4e1 100644 --- a/lib/app/modules/reports/views/reports_view_taskc.dart +++ b/lib/app/modules/reports/views/reports_view_taskc.dart @@ -7,7 +7,8 @@ import 'package:taskwarrior/app/modules/reports/views/burn_down_monthly_taskc.da import 'package:taskwarrior/app/modules/reports/views/burn_down_weekly_taskc.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_colors.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_fonts.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; + +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; import 'package:taskwarrior/api_service.dart'; class ReportsHomeTaskc extends StatelessWidget { diff --git a/lib/app/modules/settings/controllers/settings_controller.dart b/lib/app/modules/settings/controllers/settings_controller.dart index 049b37f2..ed6e8c96 100644 --- a/lib/app/modules/settings/controllers/settings_controller.dart +++ b/lib/app/modules/settings/controllers/settings_controller.dart @@ -15,7 +15,7 @@ import 'package:taskwarrior/app/utils/constants/taskwarrior_fonts.dart'; import 'package:taskwarrior/app/utils/constants/utilites.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_colors.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; import 'package:path/path.dart' as path; import 'package:taskwarrior/app/modules/splash/controllers/splash_controller.dart'; diff --git a/lib/app/modules/settings/views/settings_page_body.dart b/lib/app/modules/settings/views/settings_page_body.dart index 4e1a2043..4e956ebd 100644 --- a/lib/app/modules/settings/views/settings_page_body.dart +++ b/lib/app/modules/settings/views/settings_page_body.dart @@ -20,7 +20,7 @@ import 'package:taskwarrior/app/modules/settings/views/settings_page_on_task_sta import 'package:taskwarrior/app/modules/settings/views/settings_page_select_directory_list_tile.dart'; import 'package:taskwarrior/app/modules/settings/views/settings_page_select_the_language_trailing.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; class SettingsPageBody extends StatelessWidget { final SettingsController controller; diff --git a/lib/app/modules/settings/views/settings_page_list_tile.dart b/lib/app/modules/settings/views/settings_page_list_tile.dart index a8f11f37..ac65c626 100644 --- a/lib/app/modules/settings/views/settings_page_list_tile.dart +++ b/lib/app/modules/settings/views/settings_page_list_tile.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_fonts.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_colors.dart'; diff --git a/lib/app/modules/settings/views/settings_page_select_directory_list_tile.dart b/lib/app/modules/settings/views/settings_page_select_directory_list_tile.dart index 70334a60..b5afb17c 100644 --- a/lib/app/modules/settings/views/settings_page_select_directory_list_tile.dart +++ b/lib/app/modules/settings/views/settings_page_select_directory_list_tile.dart @@ -11,7 +11,7 @@ import 'package:taskwarrior/app/modules/splash/controllers/splash_controller.dar import 'package:taskwarrior/app/utils/constants/taskwarrior_fonts.dart'; import 'package:taskwarrior/app/utils/constants/utilites.dart'; import 'package:taskwarrior/app/utils/language/sentence_manager.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; import '../controllers/settings_controller.dart'; diff --git a/lib/app/modules/settings/views/settings_page_select_the_language_trailing.dart b/lib/app/modules/settings/views/settings_page_select_the_language_trailing.dart index 29f59527..b0bdbc05 100644 --- a/lib/app/modules/settings/views/settings_page_select_the_language_trailing.dart +++ b/lib/app/modules/settings/views/settings_page_select_the_language_trailing.dart @@ -4,7 +4,7 @@ import 'package:taskwarrior/app/modules/settings/controllers/settings_controller import 'package:taskwarrior/app/utils/constants/taskwarrior_colors.dart'; import 'package:taskwarrior/app/utils/gen/fonts.gen.dart'; import 'package:taskwarrior/app/utils/language/supported_language.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; class SettingsPageSelectTheLanguageTrailing extends StatelessWidget { final SettingsController controller; diff --git a/lib/app/modules/settings/views/settings_view.dart b/lib/app/modules/settings/views/settings_view.dart index 68922554..0d2af9f5 100644 --- a/lib/app/modules/settings/views/settings_view.dart +++ b/lib/app/modules/settings/views/settings_view.dart @@ -6,7 +6,7 @@ import 'package:get/get.dart'; import 'package:taskwarrior/app/modules/settings/views/settings_page_app_bar.dart'; import 'package:taskwarrior/app/modules/settings/views/settings_page_body.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_colors.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; import '../controllers/settings_controller.dart'; diff --git a/lib/app/tour/details_page_tour.dart b/lib/app/tour/details_page_tour.dart new file mode 100644 index 00000000..19ed2c48 --- /dev/null +++ b/lib/app/tour/details_page_tour.dart @@ -0,0 +1,138 @@ +import 'package:flutter/material.dart'; +import 'package:google_fonts/google_fonts.dart'; +import 'package:tutorial_coach_mark/tutorial_coach_mark.dart'; + +List addDetailsPage({ + required GlobalKey dueKey, + required GlobalKey waitKey, + required GlobalKey untilKey, + required GlobalKey priorityKey, +}) { + List targets = []; + + targets.add( + TargetFocus( + keyTarget: dueKey, + alignSkip: Alignment.topRight, + shape: ShapeLightFocus.RRect, + contents: [ + TargetContent( + align: ContentAlign.top, + builder: (context, controller) { + return Container( + alignment: Alignment.center, + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + "This signifies the due date of the task", + textAlign: TextAlign.center, + style: GoogleFonts.poppins( + color: Colors.white, + ), + ), + ], + ), + ); + }, + ), + ], + ), + ); + + targets.add( + TargetFocus( + keyTarget: waitKey, + alignSkip: Alignment.topRight, + shape: ShapeLightFocus.RRect, + contents: [ + TargetContent( + align: ContentAlign.bottom, + builder: (context, controller) { + return Container( + alignment: Alignment.center, + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + "This signifies the waiting date of the task \n Task will be visible after this date", + textAlign: TextAlign.center, + style: GoogleFonts.poppins( + color: Colors.white, + ), + ), + ], + ), + ); + }, + ), + ], + ), + ); + + targets.add( + TargetFocus( + keyTarget: untilKey, + alignSkip: Alignment.topRight, + shape: ShapeLightFocus.RRect, + contents: [ + TargetContent( + align: ContentAlign.bottom, + builder: (context, controller) { + return Container( + alignment: Alignment.center, + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + "This shows the last date of the task", + textAlign: TextAlign.center, + style: GoogleFonts.poppins( + color: Colors.white, + ), + ), + ], + ), + ); + }, + ), + ], + ), + ); + + targets.add( + TargetFocus( + keyTarget: priorityKey, + alignSkip: Alignment.topRight, + shape: ShapeLightFocus.RRect, + contents: [ + TargetContent( + align: ContentAlign.bottom, + builder: (context, controller) { + return Container( + alignment: Alignment.center, + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + "This is the priority of the Tasks \n L -> Low \n M -> Medium \n H -> Hard", + textAlign: TextAlign.center, + style: GoogleFonts.poppins( + color: Colors.white, + ), + ), + ], + ), + ); + }, + ), + ], + ), + ); + + return targets; +} diff --git a/lib/app/tour/manage_task_server_page_tour.dart b/lib/app/tour/manage_task_server_page_tour.dart new file mode 100644 index 00000000..e73904dd --- /dev/null +++ b/lib/app/tour/manage_task_server_page_tour.dart @@ -0,0 +1,143 @@ +import 'package:flutter/material.dart'; +import 'package:google_fonts/google_fonts.dart'; +import 'package:tutorial_coach_mark/tutorial_coach_mark.dart'; + +List addManageTaskServerPage({ + required GlobalKey configureTaskRC, + required GlobalKey configureYourCertificate, + required GlobalKey configureTaskServerKey, + required GlobalKey configureServerCertificate, +}) { + List targets = []; + + targets.add( + TargetFocus( + keyTarget: configureTaskRC, + alignSkip: Alignment.topRight, + radius: 10, + shape: ShapeLightFocus.RRect, + contents: [ + TargetContent( + align: ContentAlign.bottom, + builder: (context, controller) { + return Container( + alignment: Alignment.center, + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + "Select the file named taskrc here or paste it's content", + textAlign: TextAlign.center, + style: GoogleFonts.poppins( + color: Colors.white, + ), + ), + ], + ), + ); + }, + ), + ], + ), + ); + + + targets.add( + TargetFocus( + keyTarget: configureYourCertificate, + alignSkip: Alignment.topRight, + radius: 10, + shape: ShapeLightFocus.RRect, + contents: [ + TargetContent( + align: ContentAlign.bottom, + builder: (context, controller) { + return Container( + alignment: Alignment.center, + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + "Select file similarly named like .com.cert.pem here", + textAlign: TextAlign.center, + style: GoogleFonts.poppins( + color: Colors.white, + ), + ), + ], + ), + ); + }, + ), + ], + ), + ); + + targets.add( + TargetFocus( + keyTarget: configureTaskServerKey, + alignSkip: Alignment.bottomCenter, + radius: 10, + shape: ShapeLightFocus.RRect, + contents: [ + TargetContent( + align: ContentAlign.bottom, + builder: (context, controller) { + return Container( + alignment: Alignment.center, + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + "Select file similarly named like .key.pem here", + textAlign: TextAlign.center, + style: GoogleFonts.poppins( + color: Colors.white, + ), + ), + ], + ), + ); + }, + ), + ], + ), + ); + + targets.add( + TargetFocus( + keyTarget: configureServerCertificate, + alignSkip: Alignment.bottomCenter, + radius: 10, + shape: ShapeLightFocus.RRect, + contents: [ + TargetContent( + align: ContentAlign.bottom, + builder: (context, controller) { + return Container( + alignment: Alignment.center, + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + "Select file similarly named like letsencrypt_root_cert.pem here", + textAlign: TextAlign.center, + style: GoogleFonts.poppins( + color: Colors.white, + ), + ), + ], + ), + ); + }, + ), + ], + ), + ); + + return targets; +} diff --git a/lib/app/tour/profile_page_tour.dart b/lib/app/tour/profile_page_tour.dart index 8ea6a9b2..b0632801 100644 --- a/lib/app/tour/profile_page_tour.dart +++ b/lib/app/tour/profile_page_tour.dart @@ -6,6 +6,7 @@ List addProfilePage({ required GlobalKey currentProfileKey, required GlobalKey addNewProfileKey, + required GlobalKey manageSelectedProfileKey, }) { List targets = []; @@ -14,8 +15,7 @@ List addProfilePage({ TargetFocus( keyTarget: currentProfileKey, alignSkip: Alignment.topRight, - radius: 10, - shape: ShapeLightFocus.Circle, + shape: ShapeLightFocus.RRect, contents: [ TargetContent( align: ContentAlign.top, @@ -43,13 +43,43 @@ List addProfilePage({ ); + //manage current profile + targets.add( + TargetFocus( + keyTarget: manageSelectedProfileKey, + alignSkip: Alignment.topRight, + shape: ShapeLightFocus.RRect, + contents: [ + TargetContent( + align: ContentAlign.bottom, + builder: (context, controller) { + return Container( + alignment: Alignment.center, + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + "Manage your current profile here", + textAlign: TextAlign.center, + style: GoogleFonts.poppins( + color: Colors.white, + ), + ), + ], + ), + ); + }, + ), + ], + ), + ); //addNewProfile targets.add( TargetFocus( keyTarget: addNewProfileKey, alignSkip: Alignment.topRight, - radius: 10, - shape: ShapeLightFocus.Circle, + shape: ShapeLightFocus.RRect, contents: [ TargetContent( align: ContentAlign.bottom, diff --git a/lib/app/utils/app_settings/app_settings.dart b/lib/app/utils/app_settings/app_settings.dart new file mode 100644 index 00000000..ce37244f --- /dev/null +++ b/lib/app/utils/app_settings/app_settings.dart @@ -0,0 +1,27 @@ +import 'package:shared_preferences/shared_preferences.dart'; +import 'package:taskwarrior/app/utils/language/supported_language.dart'; + +part 'save_tour_status.dart'; +part 'selected_theme.dart'; +part 'selected_language.dart'; + +class AppSettings { + static bool isDarkMode = true; + static SupportedLanguage selectedLanguage = SupportedLanguage.english; + + static Future init() async { + await SelectedTheme.init(); + await SelectedLanguage.init(); + await SaveTourStatus.init(); + + isDarkMode = SelectedTheme.getMode() ?? true; + selectedLanguage = + SelectedLanguage.getSelectedLanguage() ?? SupportedLanguage.english; + } + + static Future saveSettings( + bool isDarkMode, SupportedLanguage language) async { + await SelectedTheme.saveMode(isDarkMode); + await SelectedLanguage.saveSelectedLanguage(language); + } +} diff --git a/lib/app/utils/app_settings/save_tour_status.dart b/lib/app/utils/app_settings/save_tour_status.dart new file mode 100644 index 00000000..59306bc6 --- /dev/null +++ b/lib/app/utils/app_settings/save_tour_status.dart @@ -0,0 +1,57 @@ +part of 'app_settings.dart'; + +class SaveTourStatus { + static SharedPreferences? _preferences; + + static Future init() async { + _preferences = await SharedPreferences.getInstance(); + } + + static Future saveReportsTourStatus(bool status) async { + await _preferences?.setBool('reports_tour', status); + } + + static Future getReportsTourStatus() async { + return _preferences?.getBool('reports_tour') ?? false; + } + + static Future saveInAppTourStatus(bool status) async { + await _preferences?.setBool('tour', status); + } + + static Future getInAppTourStatus() async { + return _preferences?.getBool('tour') ?? false; + } + + static Future saveFilterTourStatus(bool status) async { + await _preferences?.setBool('filter_tour', status); + } + + static Future getFilterTourStatus() async { + return _preferences?.getBool('filter_tour') ?? false; + } + + static Future saveProfileTourStatus(bool status) async { + await _preferences?.setBool('profile_tour', status); + } + + static Future getProfileTourStatus() async { + return _preferences?.getBool('profile_tour') ?? false; + } + + static Future saveDetailsTourStatus(bool status) async { + await _preferences?.setBool('details_tour', status); + } + + static Future getDetailsTourStatus() async { + return _preferences?.getBool('details_tour') ?? false; + } + + static Future saveManageTaskServerTourStatus(bool status) async { + await _preferences?.setBool('manage_task_server_tour', status); + } + + static Future getManageTaskServerTourStatus() async { + return _preferences?.getBool('manage_task_server_tour') ?? false; + } +} diff --git a/lib/app/utils/app_settings/selected_language.dart b/lib/app/utils/app_settings/selected_language.dart new file mode 100644 index 00000000..aea3259a --- /dev/null +++ b/lib/app/utils/app_settings/selected_language.dart @@ -0,0 +1,18 @@ +part of 'app_settings.dart'; + +class SelectedLanguage { + static SharedPreferences? _preferences; + + static Future init() async { + _preferences = await SharedPreferences.getInstance(); + } + + static Future saveSelectedLanguage(SupportedLanguage language) async { + await _preferences?.setString('_selectedLanguage', language.languageCode); + } + + static SupportedLanguage? getSelectedLanguage() { + String? languageCode = _preferences?.getString('_selectedLanguage'); + return SupportedLanguageExtension.fromCode(languageCode); + } +} diff --git a/lib/app/utils/app_settings/selected_theme.dart b/lib/app/utils/app_settings/selected_theme.dart new file mode 100644 index 00000000..908a835a --- /dev/null +++ b/lib/app/utils/app_settings/selected_theme.dart @@ -0,0 +1,17 @@ +part of 'app_settings.dart'; + +class SelectedTheme { + static SharedPreferences? _preferences; + + static Future init() async { + _preferences = await SharedPreferences.getInstance(); + } + + static Future saveMode(bool mode) async { + await _preferences?.setBool('_isDark', mode); + } + + static bool? getMode() { + return _preferences?.getBool('_isDark'); + } +} diff --git a/lib/app/utils/constants/utilites.dart b/lib/app/utils/constants/utilites.dart index 764f4304..85b69bcc 100644 --- a/lib/app/utils/constants/utilites.dart +++ b/lib/app/utils/constants/utilites.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_colors.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; class Utils { static String getWeekNumber(DateTime? date) { diff --git a/lib/app/utils/taskchampion/taskchampion.dart b/lib/app/utils/taskchampion/taskchampion.dart index 79da30c3..f9e0488e 100644 --- a/lib/app/utils/taskchampion/taskchampion.dart +++ b/lib/app/utils/taskchampion/taskchampion.dart @@ -3,9 +3,10 @@ import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:shared_preferences/shared_preferences.dart'; +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_colors.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_fonts.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; + import 'package:url_launcher/url_launcher.dart'; class ManageTaskChampionCreds extends StatelessWidget { diff --git a/lib/app/utils/theme/app_settings.dart b/lib/app/utils/theme/app_settings.dart deleted file mode 100644 index d4f6e1d2..00000000 --- a/lib/app/utils/theme/app_settings.dart +++ /dev/null @@ -1,96 +0,0 @@ -import 'package:shared_preferences/shared_preferences.dart'; -import 'package:taskwarrior/app/utils/language/supported_language.dart'; - -class SelectedTheme { - static SharedPreferences? _preferences; - - static Future init() async { - _preferences = await SharedPreferences.getInstance(); - } - - static Future saveMode(bool mode) async { - await _preferences?.setBool('_isDark', mode); - } - - static bool? getMode() { - return _preferences?.getBool('_isDark'); - } -} - -class SelectedLanguage { - static SharedPreferences? _preferences; - - static Future init() async { - _preferences = await SharedPreferences.getInstance(); - } - - static Future saveSelectedLanguage(SupportedLanguage language) async { - await _preferences?.setString('_selectedLanguage', language.languageCode); - } - - static SupportedLanguage? getSelectedLanguage() { - String? languageCode = _preferences?.getString('_selectedLanguage'); - return SupportedLanguageExtension.fromCode(languageCode); - } -} - -class SaveTourStatus { - static SharedPreferences? _preferences; - - static Future init() async { - _preferences = await SharedPreferences.getInstance(); - } - - static Future saveReportsTourStatus(bool status) async { - await _preferences?.setBool('reports_tour', status); - } - - static Future getReportsTourStatus() async { - return _preferences?.getBool('reports_tour') ?? false; - } - - static Future saveInAppTourStatus(bool status) async { - await _preferences?.setBool('tour', status); - } - - static Future getInAppTourStatus() async { - return _preferences?.getBool('tour') ?? false; - } - - static Future saveFilterTourStatus(bool status) async { - await _preferences?.setBool('filter_tour', status); - } - - static Future getFilterTourStatus() async { - return _preferences?.getBool('filter_tour') ?? false; - } - - static Future saveProfileTourStatus(bool status) async { - await _preferences?.setBool('profile_tour', status); - } - - static Future getProfileTourStatus() async { - return _preferences?.getBool('profile_tour') ?? false; - } -} - -class AppSettings { - static bool isDarkMode = true; - static SupportedLanguage selectedLanguage = SupportedLanguage.english; - - static Future init() async { - await SelectedTheme.init(); - await SelectedLanguage.init(); - await SaveTourStatus.init(); - - isDarkMode = SelectedTheme.getMode() ?? true; - selectedLanguage = - SelectedLanguage.getSelectedLanguage() ?? SupportedLanguage.english; - } - - static Future saveSettings( - bool isDarkMode, SupportedLanguage language) async { - await SelectedTheme.saveMode(isDarkMode); - await SelectedLanguage.saveSelectedLanguage(language); - } -} diff --git a/lib/app/themes/dark_theme.dart b/lib/app/utils/themes/dark_theme.dart similarity index 100% rename from lib/app/themes/dark_theme.dart rename to lib/app/utils/themes/dark_theme.dart diff --git a/lib/app/themes/light_theme.dart b/lib/app/utils/themes/light_theme.dart similarity index 100% rename from lib/app/themes/light_theme.dart rename to lib/app/utils/themes/light_theme.dart diff --git a/lib/app/themes/themes.dart b/lib/app/utils/themes/themes.dart similarity index 100% rename from lib/app/themes/themes.dart rename to lib/app/utils/themes/themes.dart diff --git a/lib/main.dart b/lib/main.dart index eff687ba..a0a423c4 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -2,13 +2,14 @@ import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:permission_handler/permission_handler.dart'; -import 'package:taskwarrior/app/utils/theme/app_settings.dart'; +import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; import 'app/routes/app_pages.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); await AppSettings.init(); + await Permission.notification.isDenied.then((value) { if (value) { Permission.notification.request(); diff --git a/macos/Podfile.lock b/macos/Podfile.lock index 1d0b75df..5d1b75ba 100644 --- a/macos/Podfile.lock +++ b/macos/Podfile.lock @@ -22,6 +22,9 @@ PODS: - shared_preferences_foundation (0.0.1): - Flutter - FlutterMacOS + - sqflite (0.0.3): + - Flutter + - FlutterMacOS - url_launcher_macos (0.0.1): - FlutterMacOS @@ -36,6 +39,7 @@ DEPENDENCIES: - path_provider_foundation (from `Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin`) - permission_handler_apple (from `Flutter/ephemeral/.symlinks/plugins/permission_handler_apple/macos`) - shared_preferences_foundation (from `Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin`) + - sqflite (from `Flutter/ephemeral/.symlinks/plugins/sqflite/darwin`) - url_launcher_macos (from `Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos`) SPEC REPOS: @@ -63,6 +67,8 @@ EXTERNAL SOURCES: :path: Flutter/ephemeral/.symlinks/plugins/permission_handler_apple/macos shared_preferences_foundation: :path: Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin + sqflite: + :path: Flutter/ephemeral/.symlinks/plugins/sqflite/darwin url_launcher_macos: :path: Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos @@ -78,6 +84,7 @@ SPEC CHECKSUMS: permission_handler_apple: fa7012038b5aa4ed34436aa5aa4e943f94b32417 ReachabilitySwift: 7f151ff156cea1481a8411701195ac6a984f4979 shared_preferences_foundation: 5b919d13b803cadd15ed2dc053125c68730e5126 + sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec url_launcher_macos: d2691c7dd33ed713bf3544850a623080ec693d95 PODFILE CHECKSUM: 236401fc2c932af29a9fcf0e97baeeb2d750d367