diff --git a/.fvmrc b/.fvmrc index 023e21eb..4cfa3d5f 100644 --- a/.fvmrc +++ b/.fvmrc @@ -1,3 +1,3 @@ { - "flutter": "3.29.2" -} + "flutter": "3.29.0" +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index 7348ba08..6da2cc71 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -15,5 +15,5 @@ "source.fixAll": "explicit" }, "java.configuration.updateBuildConfiguration": "interactive", - "dart.flutterSdkPath": ".fvm/versions/3.29.2" + "dart.flutterSdkPath": ".fvm/versions/3.29.0" } \ No newline at end of file diff --git a/lib/app/models/data.dart b/lib/app/models/data.dart index 3fe5c66c..4bc7c304 100644 --- a/lib/app/models/data.dart +++ b/lib/app/models/data.dart @@ -8,6 +8,7 @@ import 'package:taskwarrior/app/models/json/task.dart'; import 'package:taskwarrior/app/services/notification_services.dart'; import 'package:taskwarrior/app/utils/taskc/payload.dart'; import 'package:taskwarrior/app/utils/taskfunctions/urgency.dart'; + class Data { Data(this.home); diff --git a/lib/app/models/filters.dart b/lib/app/models/filters.dart index a2296246..d8943f1e 100644 --- a/lib/app/models/filters.dart +++ b/lib/app/models/filters.dart @@ -20,4 +20,4 @@ class Filters { final dynamic projects; final String projectFilter; final void Function(String) toggleProjectFilter; -} \ No newline at end of file +} diff --git a/lib/app/models/json/annotation.dart b/lib/app/models/json/annotation.dart index 5fe2b34a..7f3cb670 100644 --- a/lib/app/models/json/annotation.dart +++ b/lib/app/models/json/annotation.dart @@ -4,8 +4,6 @@ import 'package:built_value/built_value.dart'; import 'package:built_value/serializer.dart'; import 'package:taskwarrior/app/models/json/serializers.dart'; - - part 'annotation.g.dart'; abstract class Annotation implements Built { diff --git a/lib/app/models/json/serializers.dart b/lib/app/models/json/serializers.dart index fce4ca6b..f83fff55 100644 --- a/lib/app/models/json/serializers.dart +++ b/lib/app/models/json/serializers.dart @@ -7,8 +7,6 @@ import 'package:taskwarrior/app/models/json/annotation.dart'; import 'package:taskwarrior/app/models/json/iso_8601_basic.dart'; import 'package:taskwarrior/app/models/json/task.dart'; - - part 'serializers.g.dart'; @SerializersFor([ diff --git a/lib/app/models/json/task.dart b/lib/app/models/json/task.dart index b178ef35..f16258dc 100644 --- a/lib/app/models/json/task.dart +++ b/lib/app/models/json/task.dart @@ -9,7 +9,6 @@ import 'package:taskwarrior/app/models/json/annotation.dart'; import 'package:taskwarrior/app/models/json/serializers.dart'; import 'package:taskwarrior/app/utils/taskfunctions/validate.dart'; - part 'task.g.dart'; final coreAttributes = [ diff --git a/lib/app/models/models.dart b/lib/app/models/models.dart index 6eabc8b9..cd74c2f6 100644 --- a/lib/app/models/models.dart +++ b/lib/app/models/models.dart @@ -3,4 +3,4 @@ export './size_config_model.dart'; export './json/annotation.dart'; export './json/iso_8601_basic.dart'; export './json/serializers.dart'; -export './json/task.dart'; \ No newline at end of file +export './json/task.dart'; diff --git a/lib/app/models/onboarding_model.dart b/lib/app/models/onboarding_model.dart index ab0796a2..f36ee1ab 100644 --- a/lib/app/models/onboarding_model.dart +++ b/lib/app/models/onboarding_model.dart @@ -12,4 +12,4 @@ class OnboardingModel { required this.desc, required this.colors, }); -} \ No newline at end of file +} diff --git a/lib/app/models/size_config_model.dart b/lib/app/models/size_config_model.dart index 00271a17..8a19f9d4 100644 --- a/lib/app/models/size_config_model.dart +++ b/lib/app/models/size_config_model.dart @@ -1,11 +1,11 @@ import 'package:flutter/material.dart'; class SizeConfig { - MediaQueryData? _mediaQueryData; - double? screenW; - double? screenH; - double? blockH; - double? blockV; + MediaQueryData? _mediaQueryData; + double? screenW; + double? screenH; + double? blockH; + double? blockV; void init(BuildContext context) { _mediaQueryData = MediaQuery.of(context); diff --git a/lib/app/models/storage.dart b/lib/app/models/storage.dart index 78212b0d..cc240edc 100644 --- a/lib/app/models/storage.dart +++ b/lib/app/models/storage.dart @@ -7,7 +7,6 @@ import 'package:taskwarrior/app/utils/home_path/impl/home.dart'; import 'package:taskwarrior/app/utils/home_path/impl/taskrc.dart'; import 'package:taskwarrior/app/utils/taskfunctions/query.dart'; - class Storage { const Storage(this.profile); diff --git a/lib/app/models/storage/set_config.dart b/lib/app/models/storage/set_config.dart index 61962e9c..f34c5ebc 100644 --- a/lib/app/models/storage/set_config.dart +++ b/lib/app/models/storage/set_config.dart @@ -4,7 +4,6 @@ import 'package:file_picker_writable/file_picker_writable.dart'; import 'package:file_selector/file_selector.dart'; import 'package:taskwarrior/app/models/storage.dart'; - Future setConfig({required Storage storage, required String key}) async { String? contents; String? name; diff --git a/lib/app/modules/about/views/about_page_body.dart b/lib/app/modules/about/views/about_page_body.dart index 1483e892..3ac6e12a 100644 --- a/lib/app/modules/about/views/about_page_body.dart +++ b/lib/app/modules/about/views/about_page_body.dart @@ -18,7 +18,8 @@ class AboutPageBody extends StatelessWidget { @override Widget build(BuildContext context) { - TaskwarriorColorTheme tColors = Theme.of(context).extension()!; + TaskwarriorColorTheme tColors = + Theme.of(context).extension()!; String introduction = SentenceManager(currentLanguage: aboutController.selectedLanguage.value) .sentences @@ -218,9 +219,7 @@ class AboutPageBody extends StatelessWidget { height: 20, colorFilter: ColorFilter.mode( tColors.secondaryBackgroundColor!, - BlendMode.srcIn - ) - ), + BlendMode.srcIn)), label: Text( "CCExtractor", style: TextStyle( diff --git a/lib/app/modules/about/views/about_view.dart b/lib/app/modules/about/views/about_view.dart index d7e832f8..081442fb 100644 --- a/lib/app/modules/about/views/about_view.dart +++ b/lib/app/modules/about/views/about_view.dart @@ -12,9 +12,12 @@ class AboutView extends GetView { const AboutView({super.key}); @override Widget build(BuildContext context) { - TaskwarriorColorTheme tColors = Theme.of(context).extension()!; + TaskwarriorColorTheme tColors = + Theme.of(context).extension()!; return Scaffold( - appBar: AboutPageAppBar(aboutController: controller,), + appBar: AboutPageAppBar( + aboutController: controller, + ), backgroundColor: tColors.primaryBackgroundColor, body: AboutPageBody( aboutController: controller, diff --git a/lib/app/modules/detailRoute/views/dateTimePicker.dart b/lib/app/modules/detailRoute/views/dateTimePicker.dart index 8601e848..cabfe909 100644 --- a/lib/app/modules/detailRoute/views/dateTimePicker.dart +++ b/lib/app/modules/detailRoute/views/dateTimePicker.dart @@ -68,7 +68,8 @@ class DateTimeWidget extends StatelessWidget { text: value ?? SentenceManager( currentLanguage: AppSettings.selectedLanguage) - .sentences.notSelected, + .sentences + .notSelected, // style: GoogleFonts.poppins( // fontSize: TaskWarriorFonts.fontSizeMedium, // color: AppSettings.isDarkMode @@ -258,9 +259,11 @@ class StartWidget extends StatelessWidget { ), ), TextSpan( - text: value ?? SentenceManager( - currentLanguage: AppSettings.selectedLanguage) - .sentences.notSelected, + text: value ?? + SentenceManager( + currentLanguage: AppSettings.selectedLanguage) + .sentences + .notSelected, // style: GoogleFonts.poppins( // fontSize: TaskWarriorFonts.fontSizeMedium, // color: AppSettings.isDarkMode diff --git a/lib/app/modules/detailRoute/views/priority_widget.dart b/lib/app/modules/detailRoute/views/priority_widget.dart index 9835ff3c..6f9b4e96 100644 --- a/lib/app/modules/detailRoute/views/priority_widget.dart +++ b/lib/app/modules/detailRoute/views/priority_widget.dart @@ -21,7 +21,8 @@ class PriorityWidget extends StatelessWidget { @override Widget build(BuildContext context) { - TaskwarriorColorTheme tColors = Theme.of(context).extension()!; + TaskwarriorColorTheme tColors = + Theme.of(context).extension()!; final Color? textColor = isEditable ? tColors.primaryTextColor : tColors.primaryDisabledTextColor; diff --git a/lib/app/modules/detailRoute/views/status_widget.dart b/lib/app/modules/detailRoute/views/status_widget.dart index ac75f5b6..36e9d229 100644 --- a/lib/app/modules/detailRoute/views/status_widget.dart +++ b/lib/app/modules/detailRoute/views/status_widget.dart @@ -8,7 +8,6 @@ import 'package:taskwarrior/app/utils/constants/constants.dart'; import 'package:taskwarrior/app/utils/themes/theme_extension.dart'; import 'package:taskwarrior/app/utils/language/sentence_manager.dart'; - class StatusWidget extends StatelessWidget { const StatusWidget( {required this.name, @@ -22,7 +21,8 @@ class StatusWidget extends StatelessWidget { @override Widget build(BuildContext context) { - TaskwarriorColorTheme tColors = Theme.of(context).extension()!; + TaskwarriorColorTheme tColors = + Theme.of(context).extension()!; return Card( color: tColors.secondaryBackgroundColor, child: ListTile( @@ -43,7 +43,11 @@ class StatusWidget extends StatelessWidget { ), ), TextSpan( - text: value ?? SentenceManager(currentLanguage: AppSettings.selectedLanguage).sentences.notSelected, + text: value ?? + SentenceManager( + currentLanguage: AppSettings.selectedLanguage) + .sentences + .notSelected, style: GoogleFonts.poppins( fontSize: TaskWarriorFonts.fontSizeMedium, color: tColors.primaryTextColor, 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 435a54a6..7d1ab902 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 @@ -17,7 +17,8 @@ class NavDrawerMenuItem extends StatelessWidget { @override Widget build(BuildContext context) { - TaskwarriorColorTheme tColors = Theme.of(context).extension()!; + TaskwarriorColorTheme tColors = + Theme.of(context).extension()!; return InkWell( onTap: onTap, child: Container( diff --git a/lib/app/modules/home/views/home_view.dart b/lib/app/modules/home/views/home_view.dart index e22e889a..ba303cc2 100644 --- a/lib/app/modules/home/views/home_view.dart +++ b/lib/app/modules/home/views/home_view.dart @@ -44,10 +44,8 @@ class HomeView extends GetView { ? TaskWarriorColors.kprimaryBackgroundColor : TaskWarriorColors.kLightPrimaryBackgroundColor, drawer: NavDrawer(homeController: controller), - drawerEnableOpenDragGesture: true, drawerEdgeDragWidth: 80, - body: HomePageBody( controller: controller, ), 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 2247bb60..bf2575b3 100644 --- a/lib/app/modules/home/views/project_column_home_page.dart +++ b/lib/app/modules/home/views/project_column_home_page.dart @@ -23,7 +23,8 @@ class ProjectsColumn extends StatelessWidget { @override Widget build(BuildContext context) { - TaskwarriorColorTheme tColors = Theme.of(context).extension()!; + TaskwarriorColorTheme tColors = + Theme.of(context).extension()!; return Column( children: [ Padding( @@ -49,7 +50,13 @@ class ProjectsColumn extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.center, children: [ Text( - projectFilter == "" ? SentenceManager(currentLanguage: AppSettings.selectedLanguage).sentences.notSelected : projectFilter, + projectFilter == "" + ? SentenceManager( + currentLanguage: + AppSettings.selectedLanguage) + .sentences + .notSelected + : projectFilter, style: TextStyle( fontFamily: FontFamily.poppins, fontSize: TaskWarriorFonts.fontSizeSmall, @@ -68,8 +75,10 @@ class ProjectsColumn extends StatelessWidget { child: Row( mainAxisAlignment: MainAxisAlignment.start, children: [ - Text(SentenceManager( - currentLanguage: AppSettings.selectedLanguage).sentences.allProjects, + Text( + SentenceManager(currentLanguage: AppSettings.selectedLanguage) + .sentences + .allProjects, style: TextStyle( fontFamily: FontFamily.poppins, fontSize: TaskWarriorFonts.fontSizeSmall, @@ -91,8 +100,7 @@ class ProjectsColumn extends StatelessWidget { Column( children: [ Text( - SentenceManager( - currentLanguage: AppSettings.selectedLanguage) + SentenceManager(currentLanguage: AppSettings.selectedLanguage) .sentences .noProjectsFound, style: TextStyle( @@ -127,7 +135,8 @@ class ProjectTile extends StatelessWidget { @override Widget build(BuildContext context) { - TaskwarriorColorTheme tColors = Theme.of(context).extension()!; + TaskwarriorColorTheme tColors = + Theme.of(context).extension()!; var node = projects[project]!; @@ -135,20 +144,17 @@ class ProjectTile extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.start, children: [ Flexible( - child: Text( - project, - style: GoogleFonts.poppins( - color: tColors.primaryTextColor, - ), - ) - ), + child: Text( + project, + style: GoogleFonts.poppins( + color: tColors.primaryTextColor, + ), + )), Text( (node.children.isEmpty) ? '${node.subtasks}' : '(${node.tasks}) ${node.subtasks}', - style: GoogleFonts.poppins( - color: tColors.primaryTextColor - ), + style: GoogleFonts.poppins(color: tColors.primaryTextColor), ) ], ); diff --git a/lib/app/modules/home/views/tag_filters_wrap.dart b/lib/app/modules/home/views/tag_filters_wrap.dart index c9024406..1b030be0 100644 --- a/lib/app/modules/home/views/tag_filters_wrap.dart +++ b/lib/app/modules/home/views/tag_filters_wrap.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; - class TagFilterMetadata { const TagFilterMetadata({ required this.display, diff --git a/lib/app/modules/home/views/tas_list_item.dart b/lib/app/modules/home/views/tas_list_item.dart index 6c6041bc..352cb3b0 100644 --- a/lib/app/modules/home/views/tas_list_item.dart +++ b/lib/app/modules/home/views/tas_list_item.dart @@ -29,7 +29,8 @@ class TaskListItem extends StatelessWidget { @override Widget build(BuildContext context) { - TaskwarriorColorTheme tColors = Theme.of(context).extension()!; + TaskwarriorColorTheme tColors = + Theme.of(context).extension()!; // ignore: unused_element void saveChanges() async { var now = DateTime.now().toUtc(); @@ -62,7 +63,7 @@ class TaskListItem extends StatelessWidget { } MaterialColor colours = Colors.grey; - Color colour =tColors.primaryTextColor!; + Color colour = tColors.primaryTextColor!; Color dimColor = tColors.dimCol!; if (task.priority == 'H') { colours = Colors.red; diff --git a/lib/app/modules/home/views/tasks_builder.dart b/lib/app/modules/home/views/tasks_builder.dart index 54846126..b0a761bb 100644 --- a/lib/app/modules/home/views/tasks_builder.dart +++ b/lib/app/modules/home/views/tasks_builder.dart @@ -220,7 +220,7 @@ class TasksBuilder extends StatelessWidget { dtb!.add(const Duration(minutes: 1)); cancelNotification(task); } - if (Platform.isAndroid||Platform.isIOS) { + if (Platform.isAndroid || Platform.isIOS) { WidgetController widgetController = Get.put(WidgetController()); widgetController.fetchAllData(); 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 a346930e..1a6f7436 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 @@ -29,7 +29,8 @@ class ManageTaskServerPageAppBar extends StatelessWidget @override Widget build(BuildContext context) { - TaskwarriorColorTheme tColors = Theme.of(context).extension()!; + TaskwarriorColorTheme tColors = + Theme.of(context).extension()!; return AppBar( backgroundColor: TaskWarriorColors.kprimaryBackgroundColor, titleSpacing: 0, 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 24686c30..2e19d5e0 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 @@ -21,7 +21,8 @@ class ManageTaskServerPageBody extends StatelessWidget { Widget build(BuildContext context) { controller.initManageTaskServerPageTour(); controller.showManageTaskServerPageTour(context); - TaskwarriorColorTheme tColors = Theme.of(context).extension()!; + TaskwarriorColorTheme tColors = + Theme.of(context).extension()!; return Padding( padding: const EdgeInsets.only(left: 20, right: 20), child: ListView( @@ -107,15 +108,15 @@ class ManageTaskServerPageBody extends StatelessWidget { height: Get.height * 0.15, child: TextField( style: TextStyle( - color: tColors.primaryTextColor - ), + color: + tColors.primaryTextColor), controller: controller .taskrcContentController, maxLines: 8, decoration: InputDecoration( counterStyle: TextStyle( - color: tColors.primaryTextColor - ), + color: tColors + .primaryTextColor), suffixIconConstraints: const BoxConstraints( maxHeight: 24, @@ -131,15 +132,15 @@ class ManageTaskServerPageBody extends StatelessWidget { Icons.content_paste), ), border: - const OutlineInputBorder(), - labelStyle: GoogleFonts.poppins( - color:tColors.primaryTextColor, - ), + const OutlineInputBorder(), + labelStyle: GoogleFonts.poppins( + color: + tColors.primaryTextColor, + ), labelText: SentenceManager( currentLanguage: AppSettings - .selectedLanguage - ) + .selectedLanguage) .sentences .manageTaskServerPageConfigureTaskRCDialogueBoxInputFieldText, ), @@ -158,8 +159,9 @@ class ManageTaskServerPageBody extends StatelessWidget { ), FilledButton.tonal( style: ButtonStyle( - backgroundColor: WidgetStateProperty.all(tColors.secondaryBackgroundColor!) - ), + backgroundColor: WidgetStateProperty + .all(tColors + .secondaryBackgroundColor!)), onPressed: () async { await setConfig( storage: controller.storage, @@ -316,7 +318,8 @@ class ManageTaskServerPageBody extends StatelessWidget { ) : Icon( Icons.chevron_right_rounded, - color: tColors.secondaryBackgroundColor, + color: tColors + .secondaryBackgroundColor, ), ), ), @@ -401,7 +404,8 @@ class ManageTaskServerPageBody extends StatelessWidget { child: controller.credentials == null ? Icon( Icons.chevron_right_rounded, - color: tColors.primaryBackgroundColor, + color: + tColors.primaryBackgroundColor, ) : Icon( controller.hideKey.value 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 4e2f5703..a43586f2 100644 --- a/lib/app/modules/manageTaskServer/views/manage_task_server_view.dart +++ b/lib/app/modules/manageTaskServer/views/manage_task_server_view.dart @@ -1,6 +1,5 @@ // ignore_for_file: use_build_context_synchronously - import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -14,7 +13,8 @@ class ManageTaskServerView extends GetView { const ManageTaskServerView({super.key}); @override Widget build(BuildContext context) { - TaskwarriorColorTheme tColors = Theme.of(context).extension()!; + TaskwarriorColorTheme tColors = + Theme.of(context).extension()!; return Scaffold( appBar: ManageTaskServerPageAppBar(controller: controller), backgroundColor: tColors.primaryBackgroundColor, diff --git a/lib/app/modules/manageTaskServer/views/pem_widget.dart b/lib/app/modules/manageTaskServer/views/pem_widget.dart index 9806ffc0..16eb5e07 100644 --- a/lib/app/modules/manageTaskServer/views/pem_widget.dart +++ b/lib/app/modules/manageTaskServer/views/pem_widget.dart @@ -29,7 +29,8 @@ class PemWidget extends StatelessWidget { @override Widget build(BuildContext context) { - TaskwarriorColorTheme tColors = Theme.of(context).extension()!; + TaskwarriorColorTheme tColors = + Theme.of(context).extension()!; String fingerprint(String pemContents) { var firstCertificateBlock = decodePemBlocks( PemLabel.certificate, diff --git a/lib/app/modules/onboarding/views/onboarding_page_bottom_section.dart b/lib/app/modules/onboarding/views/onboarding_page_bottom_section.dart index 4fd50daa..a08d24d7 100644 --- a/lib/app/modules/onboarding/views/onboarding_page_bottom_section.dart +++ b/lib/app/modules/onboarding/views/onboarding_page_bottom_section.dart @@ -8,7 +8,8 @@ import 'package:taskwarrior/app/utils/constants/constants.dart'; class OnboardingPageBottomSection extends StatelessWidget { final OnboardingController controller; final PageController pageController; - const OnboardingPageBottomSection({super.key, required this.controller,required this.pageController}); + const OnboardingPageBottomSection( + {super.key, required this.controller, required this.pageController}); @override Widget build(BuildContext context) { diff --git a/lib/app/modules/onboarding/views/onboarding_view.dart b/lib/app/modules/onboarding/views/onboarding_view.dart index 99478cb1..b7d175b5 100644 --- a/lib/app/modules/onboarding/views/onboarding_view.dart +++ b/lib/app/modules/onboarding/views/onboarding_view.dart @@ -14,40 +14,42 @@ class OnboardingView extends GetView { double height = Get.height; PageController pageController = PageController(); - return Obx(() => Scaffold( - backgroundColor: contents[controller.getCurrentPage].colors, - body: SafeArea( - child: Column( - children: [ - Expanded( - flex: 5, - child: PageView.builder( - physics: const BouncingScrollPhysics(), - controller: pageController, - onPageChanged: (value) { - controller.setCurrentPage(value); - }, - itemCount: contents.length, - itemBuilder: (context, i) { - return OnboardingPage(onboardingModel: contents[i]); - }, - ), - ), - SizedBox( - height: height * 5 / 100, + return Obx( + () => Scaffold( + backgroundColor: contents[controller.getCurrentPage].colors, + body: SafeArea( + child: Column( + children: [ + Expanded( + flex: 5, + child: PageView.builder( + physics: const BouncingScrollPhysics(), + controller: pageController, + onPageChanged: (value) { + controller.setCurrentPage(value); + }, + itemCount: contents.length, + itemBuilder: (context, i) { + return OnboardingPage(onboardingModel: contents[i]); + }, ), - Expanded( - flex: 1, - child: SingleChildScrollView( - child: OnboardingPageBottomSection( - controller: controller, - pageController: pageController, - ), + ), + SizedBox( + height: height * 5 / 100, + ), + Expanded( + flex: 1, + child: SingleChildScrollView( + child: OnboardingPageBottomSection( + controller: controller, + pageController: pageController, ), ), - ], - ), + ), + ], ), - ),); + ), + ), + ); } } diff --git a/lib/app/modules/profile/controllers/profile_controller.dart b/lib/app/modules/profile/controllers/profile_controller.dart index 50e6e5cd..cde699fc 100644 --- a/lib/app/modules/profile/controllers/profile_controller.dart +++ b/lib/app/modules/profile/controllers/profile_controller.dart @@ -28,7 +28,6 @@ class ProfileController extends GetxController { tutorialCoachMark = TutorialCoachMark( targets: addProfilePage( currentProfileKey: currentProfileKey, - addNewProfileKey: addNewProfileKey, manageSelectedProfileKey: manageSelectedProfileKey, ), diff --git a/lib/app/modules/reports/views/burn_down_monthly.dart b/lib/app/modules/reports/views/burn_down_monthly.dart index db1c2b55..70729af5 100644 --- a/lib/app/modules/reports/views/burn_down_monthly.dart +++ b/lib/app/modules/reports/views/burn_down_monthly.dart @@ -17,7 +17,8 @@ class BurnDownMonthly extends StatelessWidget { @override Widget build(BuildContext context) { var height = Get.height; - TaskwarriorColorTheme tColors = Theme.of(context).extension()!; + TaskwarriorColorTheme tColors = + Theme.of(context).extension()!; return Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, @@ -36,8 +37,7 @@ class BurnDownMonthly extends StatelessWidget { fontFamily: FontFamily.poppins, fontWeight: TaskWarriorFonts.bold, fontSize: TaskWarriorFonts.fontSizeSmall, - color: - tColors.primaryTextColor, + color: tColors.primaryTextColor, )), ), primaryYAxis: NumericAxis( @@ -50,8 +50,7 @@ class BurnDownMonthly extends StatelessWidget { fontFamily: FontFamily.poppins, fontWeight: TaskWarriorFonts.bold, fontSize: TaskWarriorFonts.fontSizeSmall, - color: - tColors.primaryTextColor, + color: tColors.primaryTextColor, )), ), tooltipBehavior: diff --git a/lib/app/modules/reports/views/burn_down_weekly.dart b/lib/app/modules/reports/views/burn_down_weekly.dart index 2eee2254..c694a012 100644 --- a/lib/app/modules/reports/views/burn_down_weekly.dart +++ b/lib/app/modules/reports/views/burn_down_weekly.dart @@ -19,7 +19,8 @@ class BurnDownWeekly extends StatelessWidget { @override Widget build(BuildContext context) { - TaskwarriorColorTheme tColors = Theme.of(context).extension()!; + TaskwarriorColorTheme tColors = + Theme.of(context).extension()!; var height = Get.height; return Column( mainAxisAlignment: MainAxisAlignment.center, @@ -39,8 +40,7 @@ class BurnDownWeekly extends StatelessWidget { fontFamily: FontFamily.poppins, fontWeight: TaskWarriorFonts.bold, fontSize: TaskWarriorFonts.fontSizeSmall, - color: - tColors.primaryTextColor, + color: tColors.primaryTextColor, )), ), primaryYAxis: NumericAxis( @@ -53,8 +53,7 @@ class BurnDownWeekly extends StatelessWidget { fontFamily: FontFamily.poppins, fontWeight: TaskWarriorFonts.bold, fontSize: TaskWarriorFonts.fontSizeSmall, - color: - tColors.primaryTextColor, + color: tColors.primaryTextColor, )), ), tooltipBehavior: reportsController.weeklyBurndownTooltipBehaviour, diff --git a/lib/app/modules/reports/views/common_chart_indicator.dart b/lib/app/modules/reports/views/common_chart_indicator.dart index bd5b90f9..fac80560 100644 --- a/lib/app/modules/reports/views/common_chart_indicator.dart +++ b/lib/app/modules/reports/views/common_chart_indicator.dart @@ -12,7 +12,8 @@ class CommonChartIndicator extends StatelessWidget { @override Widget build(BuildContext context) { - TaskwarriorColorTheme tColors = Theme.of(context).extension()!; + TaskwarriorColorTheme tColors = + Theme.of(context).extension()!; return Column( children: [ Row( diff --git a/lib/app/modules/settings/views/settings_page_highlist_task_list_tile_trailing.dart b/lib/app/modules/settings/views/settings_page_highlist_task_list_tile_trailing.dart index 013e3fd6..8b1fbe58 100644 --- a/lib/app/modules/settings/views/settings_page_highlist_task_list_tile_trailing.dart +++ b/lib/app/modules/settings/views/settings_page_highlist_task_list_tile_trailing.dart @@ -6,7 +6,6 @@ import 'package:taskwarrior/app/modules/home/controllers/home_controller.dart'; import '../controllers/settings_controller.dart'; - class SettingsPageHighlistTaskListTileTrailing extends StatelessWidget { final SettingsController controller; const SettingsPageHighlistTaskListTileTrailing( 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 9b01228a..a49bd1e4 100644 --- a/lib/app/modules/settings/views/settings_page_list_tile.dart +++ b/lib/app/modules/settings/views/settings_page_list_tile.dart @@ -2,11 +2,9 @@ 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/constants/taskwarrior_colors.dart'; import 'package:taskwarrior/app/utils/themes/theme_extension.dart'; - class SettingsPageListTile extends StatelessWidget { final String title; final String subTitle; @@ -21,7 +19,8 @@ class SettingsPageListTile extends StatelessWidget { @override Widget build(BuildContext context) { - TaskwarriorColorTheme tColors = Theme.of(context).extension()!; + TaskwarriorColorTheme tColors = + Theme.of(context).extension()!; return ListTile( title: Text( title, diff --git a/lib/app/modules/settings/views/settings_page_on_task_create_list_tile_trailing.dart b/lib/app/modules/settings/views/settings_page_on_task_create_list_tile_trailing.dart index 7b166f79..25c601ab 100644 --- a/lib/app/modules/settings/views/settings_page_on_task_create_list_tile_trailing.dart +++ b/lib/app/modules/settings/views/settings_page_on_task_create_list_tile_trailing.dart @@ -5,7 +5,6 @@ import 'package:shared_preferences/shared_preferences.dart'; import '../controllers/settings_controller.dart'; - class SettingsPageOnTaskCreateListTileTrailing extends StatelessWidget { final SettingsController controller; const SettingsPageOnTaskCreateListTileTrailing( diff --git a/lib/app/modules/settings/views/settings_page_on_task_start_list_tile_trailing.dart b/lib/app/modules/settings/views/settings_page_on_task_start_list_tile_trailing.dart index 80fc423b..8625d9d1 100644 --- a/lib/app/modules/settings/views/settings_page_on_task_start_list_tile_trailing.dart +++ b/lib/app/modules/settings/views/settings_page_on_task_start_list_tile_trailing.dart @@ -1,4 +1,3 @@ - import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -6,24 +5,23 @@ import 'package:shared_preferences/shared_preferences.dart'; import '../controllers/settings_controller.dart'; - class SettingsPageOnTaskStartListTileTrailing extends StatelessWidget { final SettingsController controller; - const SettingsPageOnTaskStartListTileTrailing({required this.controller, super.key}); + const SettingsPageOnTaskStartListTileTrailing( + {required this.controller, super.key}); @override Widget build(BuildContext context) { return Obx( - () => Switch( - value: controller.isSyncOnStartActivel.value, - onChanged: (bool value) async { - controller.isSyncOnStartActivel.value = value; + () => Switch( + value: controller.isSyncOnStartActivel.value, + onChanged: (bool value) async { + controller.isSyncOnStartActivel.value = value; - final SharedPreferences prefs = - await SharedPreferences.getInstance(); - await prefs.setBool('sync-onStart', value); - }, - ), + final SharedPreferences prefs = await SharedPreferences.getInstance(); + await prefs.setBool('sync-onStart', value); + }, + ), ); } } diff --git a/lib/app/services/tag_filter.dart b/lib/app/services/tag_filter.dart index 2eaa7a56..b7948030 100644 --- a/lib/app/services/tag_filter.dart +++ b/lib/app/services/tag_filter.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; - class TagFilterMetadata { const TagFilterMetadata({ required this.display, diff --git a/lib/app/utils/constants/constants.dart b/lib/app/utils/constants/constants.dart index 3a8aed22..2570e3cb 100644 --- a/lib/app/utils/constants/constants.dart +++ b/lib/app/utils/constants/constants.dart @@ -1,4 +1,4 @@ export './onboarding_screen_content.dart'; export './taskwarrior_fonts.dart'; export './palette.dart'; -export './taskwarrior_colors.dart'; \ No newline at end of file +export './taskwarrior_colors.dart'; diff --git a/lib/app/utils/constants/onboarding_screen_content.dart b/lib/app/utils/constants/onboarding_screen_content.dart index a0d2dd3a..a0d0dc15 100644 --- a/lib/app/utils/constants/onboarding_screen_content.dart +++ b/lib/app/utils/constants/onboarding_screen_content.dart @@ -5,21 +5,21 @@ import 'package:taskwarrior/app/utils/gen/assets.gen.dart'; List contents = [ OnboardingModel( title: "Welcome to Taskwarrior", - image:Assets.svg.s1.path, + image: Assets.svg.s1.path, colors: const Color(0xffDAD3C8), desc: "Welcome to Taskwarrior, your ultimate task management solution. Manage your tasks, group them, and organize your work with ease.", ), OnboardingModel( title: "Powerful Reporting", - image:Assets.svg.s2.path, + image: Assets.svg.s2.path, colors: const Color(0xffFFE5DE), desc: "Generate insightful reports to analyze your task data. Gain valuable insights into your productivity and make data-driven decisions.", ), OnboardingModel( title: "Sync Across Devices", - image:Assets.svg.s3.path, + image: Assets.svg.s3.path, colors: const Color(0xffDCF6E6), desc: "Sync your tasks seamlessly across multiple Taskwarrior clients, ensuring you're always up to date and have access to your reports on any device.", diff --git a/lib/app/utils/constants/permissions.dart b/lib/app/utils/constants/permissions.dart index 96bc05dc..bca3e6bc 100644 --- a/lib/app/utils/constants/permissions.dart +++ b/lib/app/utils/constants/permissions.dart @@ -4,4 +4,4 @@ List permissions = [ Permission.notification, Permission.storage, Permission.manageExternalStorage, -]; \ No newline at end of file +]; diff --git a/lib/app/utils/constants/utilites.dart b/lib/app/utils/constants/utilites.dart index 85b69bcc..55ae6e8b 100644 --- a/lib/app/utils/constants/utilites.dart +++ b/lib/app/utils/constants/utilites.dart @@ -101,7 +101,9 @@ class Utils { shape: shape, alignment: alignment, scrollable: scrollable, - backgroundColor:AppSettings.isDarkMode? TaskWarriorColors.kdialogBackGroundColor : TaskWarriorColors.kLightDialogBackGroundColor, + backgroundColor: AppSettings.isDarkMode + ? TaskWarriorColors.kdialogBackGroundColor + : TaskWarriorColors.kLightDialogBackGroundColor, ); } } diff --git a/lib/app/utils/home_path/home_path.dart b/lib/app/utils/home_path/home_path.dart index 3ad5f6f0..1e518cf3 100644 --- a/lib/app/utils/home_path/home_path.dart +++ b/lib/app/utils/home_path/home_path.dart @@ -2,4 +2,4 @@ export './impl/data.dart'; export './impl/taskd_client.dart'; export './impl/home.dart'; export './impl/gui_pem_file_paths.dart'; -export './impl/taskrc.dart'; \ No newline at end of file +export './impl/taskrc.dart'; diff --git a/lib/app/utils/home_path/impl/data.dart b/lib/app/utils/home_path/impl/data.dart index d118f01b..2420acd6 100644 --- a/lib/app/utils/home_path/impl/data.dart +++ b/lib/app/utils/home_path/impl/data.dart @@ -8,7 +8,6 @@ import 'package:taskwarrior/app/models/json/task.dart'; import 'package:taskwarrior/app/utils/taskc/payload.dart'; import 'package:taskwarrior/app/utils/taskfunctions/urgency.dart'; - class Data { Data(this.home); diff --git a/lib/app/utils/home_path/impl/gui_pem_file_paths.dart b/lib/app/utils/home_path/impl/gui_pem_file_paths.dart index 9805e177..0718ad20 100644 --- a/lib/app/utils/home_path/impl/gui_pem_file_paths.dart +++ b/lib/app/utils/home_path/impl/gui_pem_file_paths.dart @@ -2,8 +2,6 @@ import 'dart:io'; import 'package:taskwarrior/app/utils/taskserver/pem_file_paths.dart'; - - class GUIPemFiles { GUIPemFiles(this.home); diff --git a/lib/app/utils/home_path/impl/taskchampion_config_file_paths.dart b/lib/app/utils/home_path/impl/taskchampion_config_file_paths.dart index e69de29b..8b137891 100644 --- a/lib/app/utils/home_path/impl/taskchampion_config_file_paths.dart +++ b/lib/app/utils/home_path/impl/taskchampion_config_file_paths.dart @@ -0,0 +1 @@ + diff --git a/lib/app/utils/home_path/impl/taskd_client.dart b/lib/app/utils/home_path/impl/taskd_client.dart index 8d6c0f40..f5107293 100644 --- a/lib/app/utils/home_path/impl/taskd_client.dart +++ b/lib/app/utils/home_path/impl/taskd_client.dart @@ -3,8 +3,6 @@ import 'dart:async'; import 'dart:io'; - - import 'package:taskwarrior/app/models/storage/exceptions/taskserver_configuration_exception.dart'; import 'package:taskwarrior/app/utils/taskc/impl/codec.dart'; import 'package:taskwarrior/app/utils/taskc/impl/message.dart'; @@ -13,7 +11,6 @@ import 'package:taskwarrior/app/utils/taskc/response.dart'; import 'package:taskwarrior/app/utils/taskserver/pem_file_paths.dart'; import 'package:taskwarrior/app/utils/taskserver/taskrc.dart'; - enum TaskserverProgress { connecting, securing, diff --git a/lib/app/utils/language/german_sentences.dart b/lib/app/utils/language/german_sentences.dart index c38ad4cb..8218c05d 100644 --- a/lib/app/utils/language/german_sentences.dart +++ b/lib/app/utils/language/german_sentences.dart @@ -24,7 +24,8 @@ class GermanSentences extends Sentences { @override String get homePageDue => 'Fällig'; @override - String get homePageTaskWarriorNotConfigured => 'TaskServer ist nicht konfiguriert'; + String get homePageTaskWarriorNotConfigured => + 'TaskServer ist nicht konfiguriert'; @override String get homePageSetup => 'Einrichtung'; @override @@ -71,7 +72,8 @@ class GermanSentences extends Sentences { String get settingsPageSyncOnStartDescription => 'Automatische Synchronisierung beim Start der App'; @override - String get settingsPageEnableSyncOnTaskCreateTitle => 'Synchronisiere bei Erstellen neuer Aufgabe'; + String get settingsPageEnableSyncOnTaskCreateTitle => + 'Synchronisiere bei Erstellen neuer Aufgabe'; @override String get settingsPageEnableSyncOnTaskCreateDescription => 'Automatische Synchronisierung beim Erstellen einer neuen Aufgabe aktivieren'; @@ -81,7 +83,8 @@ class GermanSentences extends Sentences { String get settingsPageHighlightTaskDescription => 'Hebe Aufgaben hervor, die innerhalb eines Tages fällig oder bereits überfällig sind'; @override - String get settingsPageEnable24hrFormatTitle => '24-Stunden-Format aktivieren'; + String get settingsPageEnable24hrFormatTitle => + '24-Stunden-Format aktivieren'; @override String get settingsPageEnable24hrFormatDescription => 'Nach rechts schalten, um das 24-Stunden-Format zu aktivieren'; @@ -215,7 +218,8 @@ class GermanSentences extends Sentences { @override String get reportsPageNoTasksFound => 'Keine Aufgaben gefunden'; @override - String get reportsPageAddTasksToSeeReports => 'Füge Aufgaben hinzu, um Berichte zu sehen'; + String get reportsPageAddTasksToSeeReports => + 'Füge Aufgaben hinzu, um Berichte zu sehen'; @override String get taskchampionTileDescription => @@ -263,7 +267,8 @@ class GermanSentences extends Sentences { String get profilePageSuccessfullyChangedProfileModeTo => 'Profilmodus erfolgreich geändert auf'; @override - String get profilePageCopyConfigToNewProfile => 'Kopiere Konfiguration zu neuem Profil'; + String get profilePageCopyConfigToNewProfile => + 'Kopiere Konfiguration zu neuem Profil'; @override String get profilePageDeleteProfile => 'Profil löschen'; @override @@ -281,11 +286,11 @@ class GermanSentences extends Sentences { @override String get profilePageExportTasksDialogueTitle => 'Exportformat'; @override - String get profilePageExportTasksDialogueSubtitle => - 'Wähle das Exportformat'; + String get profilePageExportTasksDialogueSubtitle => 'Wähle das Exportformat'; @override - String get manageTaskServerPageConfigureTaskserver => 'Konfiguriere Aufgaben-Server'; + String get manageTaskServerPageConfigureTaskserver => + 'Konfiguriere Aufgaben-Server'; @override String get manageTaskServerPageConfigureTASKRC => 'Konfiguriere TASKRC'; @override @@ -339,9 +344,11 @@ class GermanSentences extends Sentences { @override String get addTaskAdd => "Hinzufügen"; @override - String get addTaskTimeInPast => "Die gewählte Zeit liegt in der Vergangenheit."; + String get addTaskTimeInPast => + "Die gewählte Zeit liegt in der Vergangenheit."; @override - String get addTaskFieldCannotBeEmpty => "Du kannst dieses Feld nicht leer lassen!"; + String get addTaskFieldCannotBeEmpty => + "Du kannst dieses Feld nicht leer lassen!"; @override String get addTaskTaskAddedSuccessfully => "Aufgabe erfolgreich hinzugefügt. Antippen zum Bearbeiten"; @@ -375,7 +382,8 @@ class GermanSentences extends Sentences { String get submit => "Senden"; @override - String get saveChangesConfirmation => 'Möchtest du deine Änderungen speichern?'; + String get saveChangesConfirmation => + 'Möchtest du deine Änderungen speichern?'; @override String get yes => 'Ja'; @override @@ -508,7 +516,8 @@ class GermanSentences extends Sentences { @override String get profileConfigCopied => 'Profilkonfiguration kopiert'; @override - String get profileConfigCopyFailed => 'Profilkonfiguration kopieren fehlgeschlagen'; + String get profileConfigCopyFailed => + 'Profilkonfiguration kopieren fehlgeschlagen'; @override String get profileDeletedSuccessfully => 'Löschen erfolgreich'; @override @@ -555,11 +564,14 @@ class GermanSentences extends Sentences { // Tour strings - reports @override - String get tourReportsDaily => "Greife auf deine aktuellen täglichen Berichte hier zu"; + String get tourReportsDaily => + "Greife auf deine aktuellen täglichen Berichte hier zu"; @override - String get tourReportsWeekly => "Greife auf deine aktuellen wöchentlichen Berichte hier zu"; + String get tourReportsWeekly => + "Greife auf deine aktuellen wöchentlichen Berichte hier zu"; @override - String get tourReportsMonthly => "Greife auf deine aktuellen monatlichen Berichte hier zu"; + String get tourReportsMonthly => + "Greife auf deine aktuellen monatlichen Berichte hier zu"; // Tour strings - profile @override @@ -589,9 +601,11 @@ class GermanSentences extends Sentences { @override String get tourHomeSearch => "Suche Aufgaben"; @override - String get tourHomeRefresh => "Aktualisier oder synchronisiere deine Aufgaben"; + String get tourHomeRefresh => + "Aktualisier oder synchronisiere deine Aufgaben"; @override - String get tourHomeFilter => "Filter hinzufügen, um Aufgaben und Projekte zu sortieren"; + String get tourHomeFilter => + "Filter hinzufügen, um Aufgaben und Projekte zu sortieren"; @override String get tourHomeMenu => "Greif auf weitere Einstellung hier zu"; @@ -602,14 +616,16 @@ class GermanSentences extends Sentences { @override String get tourFilterProjects => "Filtere Aufgaben basierend auf Projekten"; @override - String get tourFilterTagUnion => "Zwischen AND und OR Tag-Vereinigungstypen umschalten"; + String get tourFilterTagUnion => + "Zwischen AND und OR Tag-Vereinigungstypen umschalten"; @override String get tourFilterSort => "Sortiere Aufgaben nach Erstellungszeitpunkt, Dringlichkeit, Fälligkeitsdatum, Startdatum usw."; // Tour strings - details page @override - String get tourDetailsDue => "Dies bezeichnet das Fälligkeitsdatum der Aufgabe"; + String get tourDetailsDue => + "Dies bezeichnet das Fälligkeitsdatum der Aufgabe"; @override String get tourDetailsWait => "Dies gibt das Wartedatum der Aufgabe an \n Die Aufgabe wird nach diesem Datum sichtbar sein"; @@ -636,7 +652,8 @@ class GermanSentences extends Sentences { @override String get tagAlreadyExists => "Tag existiert bereits"; @override - String get tagShouldNotContainSpaces => "Tag sollte keine Leerzeichen enthalten"; + String get tagShouldNotContainSpaces => + "Tag sollte keine Leerzeichen enthalten"; @override String get date => "Datum"; @override @@ -644,7 +661,8 @@ class GermanSentences extends Sentences { @override String get change => "Ändern"; @override - String get dateCanNotBeInPast => "Datum kann nicht in der Vergangenheit liegen"; + String get dateCanNotBeInPast => + "Datum kann nicht in der Vergangenheit liegen"; @override String get configureTaskchampion => 'Konfiguriere Taskchampion'; @override @@ -656,7 +674,8 @@ class GermanSentences extends Sentences { @override String get success => 'Erfolg'; @override - String get credentialsSavedSuccessfully => 'Anmeldedaten erfolgreich gespeichert'; + String get credentialsSavedSuccessfully => + 'Anmeldedaten erfolgreich gespeichert'; @override String get saveCredentials => 'Speichern'; @override diff --git a/lib/app/utils/permissions/permissions_manager.dart b/lib/app/utils/permissions/permissions_manager.dart index d137a3da..aa2c2bc6 100644 --- a/lib/app/utils/permissions/permissions_manager.dart +++ b/lib/app/utils/permissions/permissions_manager.dart @@ -8,11 +8,13 @@ class PermissionsManager { try { for (var permission in permissions) { final status = await _requestPermission(permission); - + if (status) { - print("Permission '${permission.toString().split('.').last}' granted."); + print( + "Permission '${permission.toString().split('.').last}' granted."); } else { - print("Permission '${permission.toString().split('.').last}' denied."); + print( + "Permission '${permission.toString().split('.').last}' denied."); } } } catch (e) { @@ -24,4 +26,4 @@ class PermissionsManager { final status = await permission.request(); return status.isGranted; } -} \ No newline at end of file +} diff --git a/lib/app/utils/taskfunctions/comparator.dart b/lib/app/utils/taskfunctions/comparator.dart index a20300e2..c4b76cb0 100644 --- a/lib/app/utils/taskfunctions/comparator.dart +++ b/lib/app/utils/taskfunctions/comparator.dart @@ -3,7 +3,6 @@ import 'dart:math'; import 'package:taskwarrior/app/models/json/task.dart'; import 'package:taskwarrior/app/utils/taskfunctions/urgency.dart'; - int Function(Task, Task) compareTasks(String column) { return (a, b) { int? result; diff --git a/lib/app/utils/taskfunctions/query.dart b/lib/app/utils/taskfunctions/query.dart index 3040830c..40307826 100644 --- a/lib/app/utils/taskfunctions/query.dart +++ b/lib/app/utils/taskfunctions/query.dart @@ -107,6 +107,8 @@ class Query { ..createSync(recursive: true) ..writeAsStringSync(json.encode([])); } - return (json.decode(_selectedTags.readAsStringSync()) as List).cast().toSet(); + return (json.decode(_selectedTags.readAsStringSync()) as List) + .cast() + .toSet(); } } diff --git a/lib/app/utils/taskfunctions/tags.dart b/lib/app/utils/taskfunctions/tags.dart index 338255e9..50f38781 100644 --- a/lib/app/utils/taskfunctions/tags.dart +++ b/lib/app/utils/taskfunctions/tags.dart @@ -2,8 +2,6 @@ import 'dart:math'; import 'package:taskwarrior/app/models/models.dart'; - - Set tagSet(Iterable tasks) { return tasks.where((task) => task.tags != null).fold( {}, (aggregate, task) => aggregate..addAll(task.tags!.toList())); diff --git a/lib/app/utils/taskfunctions/urgency.dart b/lib/app/utils/taskfunctions/urgency.dart index 4a03ae3d..176e5cea 100644 --- a/lib/app/utils/taskfunctions/urgency.dart +++ b/lib/app/utils/taskfunctions/urgency.dart @@ -1,5 +1,3 @@ - - import 'package:taskwarrior/app/models/models.dart'; String formatUrgency(double urgency) { diff --git a/lib/app/utils/themes/light_theme.dart b/lib/app/utils/themes/light_theme.dart index bd90fe09..68b568c0 100644 --- a/lib/app/utils/themes/light_theme.dart +++ b/lib/app/utils/themes/light_theme.dart @@ -2,9 +2,9 @@ import 'package:flutter/material.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_colors.dart'; ThemeData lightTheme = ThemeData( - brightness: Brightness.light, - dialogBackgroundColor: TaskWarriorColors.kLightDialogBackGroundColor, - colorScheme: ColorScheme( + brightness: Brightness.light, + dialogBackgroundColor: TaskWarriorColors.kLightDialogBackGroundColor, + colorScheme: ColorScheme( brightness: Brightness.light, primary: TaskWarriorColors.black, onPrimary: TaskWarriorColors.white, @@ -14,11 +14,7 @@ ThemeData lightTheme = ThemeData( onError: TaskWarriorColors.white, surface: TaskWarriorColors.white, onSurface: TaskWarriorColors.black, - ), - timePickerTheme: TimePickerThemeData( - dayPeriodColor: TaskWarriorColors.grey - ), - extensions: [ - TaskWarriorColors.lightTheme - ] -); + ), + timePickerTheme: + TimePickerThemeData(dayPeriodColor: TaskWarriorColors.grey), + extensions: [TaskWarriorColors.lightTheme]); diff --git a/lib/app/utils/themes/theme_extension.dart b/lib/app/utils/themes/theme_extension.dart index 3c9c7e79..92e8b081 100644 --- a/lib/app/utils/themes/theme_extension.dart +++ b/lib/app/utils/themes/theme_extension.dart @@ -1,85 +1,84 @@ import 'package:flutter/material.dart'; +class TaskwarriorColorTheme extends ThemeExtension { + final Color? dialogBackgroundColor; + final Color? primaryBackgroundColor; + final Color? secondaryBackgroundColor; + final Color? primaryTextColor; + final Color? secondaryTextColor; + final Color? primaryDisabledTextColor; + final Color? dividerColor; + final Color? purpleShade; + final Color? greyShade; + final Color? dimCol; + final IconData? icons; -class TaskwarriorColorTheme extends ThemeExtension{ - final Color? dialogBackgroundColor; - final Color? primaryBackgroundColor; - final Color? secondaryBackgroundColor; - final Color? primaryTextColor; - final Color? secondaryTextColor; - final Color? primaryDisabledTextColor; - final Color? dividerColor; - final Color? purpleShade; - final Color? greyShade; - final Color? dimCol; - final IconData? icons; - - const TaskwarriorColorTheme({ - required this.dialogBackgroundColor, - required this.primaryBackgroundColor, - required this.primaryDisabledTextColor, - required this.primaryTextColor, - required this.secondaryBackgroundColor, - required this.secondaryTextColor, - required this.dividerColor, - required this.purpleShade, - required this.greyShade, - required this.icons, - required this.dimCol - }); + const TaskwarriorColorTheme( + {required this.dialogBackgroundColor, + required this.primaryBackgroundColor, + required this.primaryDisabledTextColor, + required this.primaryTextColor, + required this.secondaryBackgroundColor, + required this.secondaryTextColor, + required this.dividerColor, + required this.purpleShade, + required this.greyShade, + required this.icons, + required this.dimCol}); - @override - ThemeExtension copyWith({ - Color? dialogBackgroundColor, - Color? primaryBackgroundColor, - Color? secondaryBackgroundColor, - Color? primaryTextColor, - Color? secondaryTextColor, - Color? primaryDisabledTextColor, - Color? dividerColor, - Color? greyShade, - Color? dimCol, - IconData? icons, - }) { - return TaskwarriorColorTheme( - dialogBackgroundColor: dialogBackgroundColor ?? dialogBackgroundColor, - primaryBackgroundColor: primaryBackgroundColor ?? primaryBackgroundColor, - primaryDisabledTextColor: primaryDisabledTextColor ?? primaryDisabledTextColor, - primaryTextColor: primaryTextColor ?? primaryTextColor, - secondaryBackgroundColor: secondaryBackgroundColor ?? secondaryBackgroundColor, - secondaryTextColor: secondaryTextColor ?? secondaryTextColor, - dividerColor: dividerColor ?? dividerColor, - purpleShade: purpleShade ?? purpleShade, - greyShade: greyShade ?? greyShade, - icons: icons ?? icons, - dimCol: dimCol ?? dimCol - ); - } + @override + ThemeExtension copyWith({ + Color? dialogBackgroundColor, + Color? primaryBackgroundColor, + Color? secondaryBackgroundColor, + Color? primaryTextColor, + Color? secondaryTextColor, + Color? primaryDisabledTextColor, + Color? dividerColor, + Color? greyShade, + Color? dimCol, + IconData? icons, + }) { + return TaskwarriorColorTheme( + dialogBackgroundColor: dialogBackgroundColor ?? dialogBackgroundColor, + primaryBackgroundColor: + primaryBackgroundColor ?? primaryBackgroundColor, + primaryDisabledTextColor: + primaryDisabledTextColor ?? primaryDisabledTextColor, + primaryTextColor: primaryTextColor ?? primaryTextColor, + secondaryBackgroundColor: + secondaryBackgroundColor ?? secondaryBackgroundColor, + secondaryTextColor: secondaryTextColor ?? secondaryTextColor, + dividerColor: dividerColor ?? dividerColor, + purpleShade: purpleShade ?? purpleShade, + greyShade: greyShade ?? greyShade, + icons: icons ?? icons, + dimCol: dimCol ?? dimCol); + } - @override - ThemeExtension lerp( + @override + ThemeExtension lerp( covariant ThemeExtension? other, double t) { - if (other is! TaskwarriorColorTheme) { - return this; - } - return TaskwarriorColorTheme( - dialogBackgroundColor: Color.lerp( - dialogBackgroundColor, other.dialogBackgroundColor, t), - primaryBackgroundColor: Color.lerp( - primaryBackgroundColor, other.primaryBackgroundColor, t), - primaryDisabledTextColor: Color.lerp( - primaryDisabledTextColor, other.primaryDisabledTextColor, t), - primaryTextColor: - Color.lerp(primaryTextColor, other.primaryTextColor, t), - secondaryBackgroundColor: Color.lerp( - secondaryBackgroundColor, other.secondaryBackgroundColor, t), - secondaryTextColor: - Color.lerp(secondaryTextColor, other.secondaryTextColor, t), - dividerColor: Color.lerp(dividerColor, other.dividerColor, t), - purpleShade: Color.lerp(purpleShade, other.purpleShade, t), - greyShade: Color.lerp(greyShade, other.greyShade, t), - dimCol: Color.lerp(dimCol, other.dimCol, t), - icons: icons - ); + if (other is! TaskwarriorColorTheme) { + return this; + } + return TaskwarriorColorTheme( + dialogBackgroundColor: + Color.lerp(dialogBackgroundColor, other.dialogBackgroundColor, t), + primaryBackgroundColor: + Color.lerp(primaryBackgroundColor, other.primaryBackgroundColor, t), + primaryDisabledTextColor: Color.lerp( + primaryDisabledTextColor, other.primaryDisabledTextColor, t), + primaryTextColor: + Color.lerp(primaryTextColor, other.primaryTextColor, t), + secondaryBackgroundColor: Color.lerp( + secondaryBackgroundColor, other.secondaryBackgroundColor, t), + secondaryTextColor: + Color.lerp(secondaryTextColor, other.secondaryTextColor, t), + dividerColor: Color.lerp(dividerColor, other.dividerColor, t), + purpleShade: Color.lerp(purpleShade, other.purpleShade, t), + greyShade: Color.lerp(greyShade, other.greyShade, t), + dimCol: Color.lerp(dimCol, other.dimCol, t), + icons: icons); } -} \ No newline at end of file +} diff --git a/lib/app/utils/themes/themes.dart b/lib/app/utils/themes/themes.dart index a72656ca..85417f23 100644 --- a/lib/app/utils/themes/themes.dart +++ b/lib/app/utils/themes/themes.dart @@ -1,2 +1,2 @@ export 'dark_theme.dart'; -export 'light_theme.dart'; \ No newline at end of file +export 'light_theme.dart'; diff --git a/lib/app/v3/db/task_database.dart b/lib/app/v3/db/task_database.dart index dc1b97b2..e706cdcc 100644 --- a/lib/app/v3/db/task_database.dart +++ b/lib/app/v3/db/task_database.dart @@ -250,24 +250,70 @@ class TaskDatabase { ) async { await ensureDatabaseIsOpen(); - debugPrint('task in saveEditedTaskInDB: $uuid with due $newDue'); - await _database!.update( - 'Tasks', - { - 'description': newDescription, - 'project': newProject, - 'status': newStatus, - 'priority': newPriority, - 'due': newDue, - 'modified': DateTime.now().toIso8601String(), - }, - where: 'uuid = ?', - whereArgs: [uuid], - ); - debugPrint('task${uuid}edited'); - if (newTags.isNotEmpty) { - TaskForC? task = await getTaskByUuid(uuid); - await setTagsForTask(uuid, task?.id ?? 0, newTags.toList()); + try { + await _database!.transaction((txn) async { + // 1. Update task + final updatedCount = await txn.update( + 'Tasks', + { + 'description': newDescription, + 'project': newProject, + 'status': newStatus, + 'priority': newPriority, + 'due': newDue, + 'modified': DateTime.now().toIso8601String(), + }, + where: 'uuid = ?', + whereArgs: [uuid], + ); + + if (updatedCount == 0) { + throw Exception("Task not found for uuid: $uuid"); + } + + // 2. Get task ID safely + final taskMaps = await txn.query( + 'Tasks', + columns: ['id'], + where: 'uuid = ?', + whereArgs: [uuid], + ); + + if (taskMaps.isEmpty) { + throw Exception("No task found after update for uuid: $uuid"); + } + + final int? taskId = taskMaps.first['id'] as int?; + + if (taskId == null) { + throw StateError("Missing task id for task: ${taskMaps.first}"); + } + + // ✅ 3. ALWAYS delete old tags (fix critical bug) + await txn.delete( + 'Tags', + where: 'task_uuid = ? AND task_id = ?', + whereArgs: [uuid, taskId], + ); + + // ✅ 4. Insert new tags (if any) + for (final tag in newTags) { + final trimmedTag = tag.trim(); + if (trimmedTag.isNotEmpty) { + await txn.insert( + 'Tags', + { + 'name': trimmedTag, + 'task_uuid': uuid, + 'task_id': taskId, + }, + ); + } + } + }); + } catch (e) { + // optional logging + rethrow; } } diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc index 13807bb2..e20e7221 100644 --- a/linux/flutter/generated_plugin_registrant.cc +++ b/linux/flutter/generated_plugin_registrant.cc @@ -8,6 +8,7 @@ #include #include +#include #include void fl_register_plugins(FlPluginRegistry* registry) { @@ -17,6 +18,9 @@ void fl_register_plugins(FlPluginRegistry* registry) { g_autoptr(FlPluginRegistrar) flutter_timezone_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "FlutterTimezonePlugin"); flutter_timezone_plugin_register_with_registrar(flutter_timezone_registrar); + g_autoptr(FlPluginRegistrar) gtk_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "GtkPlugin"); + gtk_plugin_register_with_registrar(gtk_registrar); g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin"); url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar); diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake index b01d1fd9..fe92fa4d 100644 --- a/linux/flutter/generated_plugins.cmake +++ b/linux/flutter/generated_plugins.cmake @@ -5,6 +5,7 @@ list(APPEND FLUTTER_PLUGIN_LIST file_selector_linux flutter_timezone + gtk url_launcher_linux ) diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index cb98b370..91b0fc33 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,6 +5,7 @@ import FlutterMacOS import Foundation +import app_links import connectivity_plus import file_picker import file_picker_writable @@ -18,6 +19,7 @@ import sqflite_darwin import url_launcher_macos func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + AppLinksMacosPlugin.register(with: registry.registrar(forPlugin: "AppLinksMacosPlugin")) ConnectivityPlusPlugin.register(with: registry.registrar(forPlugin: "ConnectivityPlusPlugin")) FilePickerPlugin.register(with: registry.registrar(forPlugin: "FilePickerPlugin")) FilePickerWritablePlugin.register(with: registry.registrar(forPlugin: "FilePickerWritablePlugin")) diff --git a/pubspec.lock b/pubspec.lock index c7182030..b3886502 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -25,6 +25,38 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.3" + app_links: + dependency: "direct main" + description: + name: app_links + sha256: "5f88447519add627fe1cbcab4fd1da3d4fed15b9baf29f28b22535c95ecee3e8" + url: "https://pub.dev" + source: hosted + version: "6.4.1" + app_links_linux: + dependency: transitive + description: + name: app_links_linux + sha256: f5f7173a78609f3dfd4c2ff2c95bd559ab43c80a87dc6a095921d96c05688c81 + url: "https://pub.dev" + source: hosted + version: "1.0.3" + app_links_platform_interface: + dependency: transitive + description: + name: app_links_platform_interface + sha256: "05f5379577c513b534a29ddea68176a4d4802c46180ee8e2e966257158772a3f" + url: "https://pub.dev" + source: hosted + version: "2.0.2" + app_links_web: + dependency: transitive + description: + name: app_links_web + sha256: af060ed76183f9e2b87510a9480e56a5352b6c249778d07bd2c95fc35632a555 + url: "https://pub.dev" + source: hosted + version: "1.0.4" archive: dependency: transitive description: @@ -45,10 +77,10 @@ packages: dependency: transitive description: name: async - sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" + sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63 url: "https://pub.dev" source: hosted - version: "2.13.0" + version: "2.12.0" boolean_selector: dependency: transitive description: @@ -65,6 +97,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.1.0" + build_cli_annotations: + dependency: transitive + description: + name: build_cli_annotations + sha256: b59d2769769efd6c9ff6d4c4cede0be115a566afc591705c2040b707534b1172 + url: "https://pub.dev" + source: hosted + version: "2.1.0" build_config: dependency: transitive description: @@ -133,10 +173,10 @@ packages: dependency: transitive description: name: checked_yaml - sha256: "959525d3162f249993882720d52b7e0c833978df229be20702b33d48d91de70f" + sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff url: "https://pub.dev" source: hosted - version: "2.0.4" + version: "2.0.3" cli_config: dependency: transitive description: @@ -309,10 +349,10 @@ packages: dependency: transitive description: name: fake_async - sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" + sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc" url: "https://pub.dev" source: hosted - version: "1.3.3" + version: "1.3.2" ffi: dependency: "direct main" description: @@ -366,34 +406,34 @@ packages: dependency: transitive description: name: file_selector_android - sha256: "8800ee5292f9702b39bb6af1229c6e1573aa8688a5891a702366bb95a303cfcc" + sha256: "1ce58b609289551f8ec07265476720e77d19764339cc1d8e4df3c4d34dac6499" url: "https://pub.dev" source: hosted - version: "0.5.2+3" + version: "0.5.1+17" file_selector_ios: dependency: transitive description: name: file_selector_ios - sha256: "628ec99afd8bb40620b4c8707d5fd5fc9e89d83e9b0b327d471fe5f7bc5fc33f" + sha256: fe9f52123af16bba4ad65bd7e03defbbb4b172a38a8e6aaa2a869a0c56a5f5fb url: "https://pub.dev" source: hosted - version: "0.5.3+4" + version: "0.5.3+2" file_selector_linux: dependency: transitive description: name: file_selector_linux - sha256: "80a877f5ec570c4fb3b40720a70b6f31e8bb1315a464b4d3e92fe82754d4b21a" + sha256: "54cbbd957e1156d29548c7d9b9ec0c0ebb6de0a90452198683a7d23aed617a33" url: "https://pub.dev" source: hosted - version: "0.9.3+3" + version: "0.9.3+2" file_selector_macos: dependency: transitive description: name: file_selector_macos - sha256: "44f24d102e368370951b98ffe86c7325b38349e634578312976607d28cc6d747" + sha256: "19124ff4a3d8864fdc62072b6a2ef6c222d55a3404fe14893a3c02744907b60c" url: "https://pub.dev" source: hosted - version: "0.9.4+6" + version: "0.9.4+4" file_selector_platform_interface: dependency: transitive description: @@ -414,10 +454,10 @@ packages: dependency: transitive description: name: file_selector_windows - sha256: "62197474ae75893a62df75939c777763d39c2bc5f73ce5b88497208bc269abfd" + sha256: "320fcfb6f33caa90f0b58380489fc5ac05d99ee94b61aa96ec2bff0ba81d3c2b" url: "https://pub.dev" source: hosted - version: "0.9.3+5" + version: "0.9.3+4" fixnum: dependency: transitive description: @@ -499,10 +539,10 @@ packages: dependency: "direct main" description: name: flutter_native_splash - sha256: "4fb9f4113350d3a80841ce05ebf1976a36de622af7d19aca0ca9a9911c7ff002" + sha256: "8321a6d11a8d13977fa780c89de8d257cce3d841eecfb7a4cadffcc4f12d82dc" url: "https://pub.dev" source: hosted - version: "2.4.7" + version: "2.4.6" flutter_platform_widgets: dependency: "direct main" description: @@ -515,10 +555,18 @@ packages: dependency: transitive description: name: flutter_plugin_android_lifecycle - sha256: "306f0596590e077338312f38837f595c04f28d6cdeeac392d3d74df2f0003687" + sha256: c2fe1001710127dfa7da89977a08d591398370d099aacdaa6d44da7eb14b8476 url: "https://pub.dev" source: hosted - version: "2.0.32" + version: "2.0.31" + flutter_rust_bridge: + dependency: "direct main" + description: + name: flutter_rust_bridge + sha256: "37ef40bc6f863652e865f0b2563ea07f0d3c58d8efad803cc01933a4b2ee067e" + url: "https://pub.dev" + source: hosted + version: "2.11.1" flutter_slidable: dependency: "direct main" description: @@ -601,6 +649,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.3.2" + gtk: + dependency: transitive + description: + name: gtk + sha256: e8ce9ca4b1df106e4d72dad201d345ea1a036cc12c360f1a7d5a758f78ffa42c + url: "https://pub.dev" + source: hosted + version: "2.1.0" hashcodes: dependency: transitive description: @@ -725,10 +781,10 @@ packages: dependency: transitive description: name: js - sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 + sha256: "53385261521cc4a0c4658fd0ad07a7d14591cf8fc33abbceae306ddb974888dc" url: "https://pub.dev" source: hosted - version: "0.6.7" + version: "0.7.2" json_annotation: dependency: transitive description: @@ -741,26 +797,26 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de" + sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec url: "https://pub.dev" source: hosted - version: "11.0.2" + version: "10.0.8" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1" + sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 url: "https://pub.dev" source: hosted - version: "3.0.10" + version: "3.0.9" leak_tracker_testing: dependency: transitive description: name: leak_tracker_testing - sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1" + sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" url: "https://pub.dev" source: hosted - version: "3.0.2" + version: "3.0.1" lints: dependency: transitive description: @@ -813,10 +869,10 @@ packages: dependency: transitive description: name: meta - sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394" + sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c url: "https://pub.dev" source: hosted - version: "1.17.0" + version: "1.16.0" mime: dependency: transitive description: @@ -901,18 +957,18 @@ packages: dependency: transitive description: name: path_provider_android - sha256: "95c68a74d3cab950fd0ed8073d9fab15c1c06eb1f3eec68676e87aabc9ecee5a" + sha256: "3b4c1fc3aa55ddc9cd4aa6759984330d5c8e66aa7702a6223c61540dc6380c37" url: "https://pub.dev" source: hosted - version: "2.2.21" + version: "2.2.19" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - sha256: "97390a0719146c7c3e71b6866c34f1cde92685933165c1c671984390d2aca776" + sha256: "16eef174aacb07e09c351502740fa6254c165757638eba1e9116b0a781201bbd" url: "https://pub.dev" source: hosted - version: "2.4.4" + version: "2.4.2" path_provider_linux: dependency: transitive description: @@ -997,10 +1053,10 @@ packages: dependency: transitive description: name: petitparser - sha256: "1a97266a94f7350d30ae522c0af07890c70b8e62c71e8e3920d1db4d23c057d1" + sha256: "07c8f0b1913bcde1ff0d26e57ace2f3012ccbf2b204e070290dad3bb22797646" url: "https://pub.dev" source: hosted - version: "7.0.1" + version: "6.1.0" platform: dependency: transitive description: @@ -1069,18 +1125,18 @@ packages: dependency: transitive description: name: shared_preferences_android - sha256: "07d552dbe8e71ed720e5205e760438ff4ecfb76ec3b32ea664350e2ca4b0c43b" + sha256: bd14436108211b0d4ee5038689a56d4ae3620fd72fd6036e113bf1345bc74d9e url: "https://pub.dev" source: hosted - version: "2.4.16" + version: "2.4.13" shared_preferences_foundation: dependency: transitive description: name: shared_preferences_foundation - sha256: "4e7eaffc2b17ba398759f1151415869a34771ba11ebbccd1b0145472a619a64f" + sha256: "6a52cfcdaeac77cad8c97b539ff688ccfc458c007b4db12be584fbe5c0e49e03" url: "https://pub.dev" source: hosted - version: "2.5.6" + version: "2.5.4" shared_preferences_linux: dependency: transitive description: @@ -1141,10 +1197,10 @@ packages: dependency: transitive description: name: shelf_web_socket - sha256: "9ca081be41c60190ebcb4766b2486a7d50261db7bd0f5d9615f2d653637a84c1" + sha256: "3632775c8e90d6c9712f883e633716432a27758216dfb61bd86a8321c0580925" url: "https://pub.dev" source: hosted - version: "1.0.4" + version: "3.0.0" sizer: dependency: "direct main" description: @@ -1202,18 +1258,18 @@ packages: dependency: transitive description: name: sqflite_android - sha256: ecd684501ebc2ae9a83536e8b15731642b9570dc8623e0073d227d0ee2bfea88 + sha256: "2b3070c5fa881839f8b402ee4a39c1b4d561704d4ebbbcfb808a119bc2a1701b" url: "https://pub.dev" source: hosted - version: "2.4.2+2" + version: "2.4.1" sqflite_common: dependency: transitive description: name: sqflite_common - sha256: "6ef422a4525ecc601db6c0a2233ff448c731307906e92cabc9ba292afaae16a6" + sha256: "84731e8bfd8303a3389903e01fb2141b6e59b5973cacbb0929021df08dddbe8b" url: "https://pub.dev" source: hosted - version: "2.5.6" + version: "2.5.5" sqflite_common_ffi: dependency: "direct dev" description: @@ -1314,10 +1370,10 @@ packages: dependency: transitive description: name: synchronized - sha256: c254ade258ec8282947a0acbbc90b9575b4f19673533ee46f2f6e9b3aeefd7c0 + sha256: "0669c70faae6270521ee4f05bffd2919892d42d1276e6c495be80174b6bc0ef6" url: "https://pub.dev" source: hosted - version: "3.4.0" + version: "3.3.1" term_glyph: dependency: transitive description: @@ -1330,26 +1386,26 @@ packages: dependency: "direct main" description: name: test - sha256: "75906bf273541b676716d1ca7627a17e4c4070a3a16272b7a3dc7da3b9f3f6b7" + sha256: "301b213cd241ca982e9ba50266bd3f5bd1ea33f1455554c5abb85d1be0e2d87e" url: "https://pub.dev" source: hosted - version: "1.26.3" + version: "1.25.15" test_api: dependency: transitive description: name: test_api - sha256: ab2726c1a94d3176a45960b6234466ec367179b87dd74f1611adb1f3b5fb9d55 + sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd url: "https://pub.dev" source: hosted - version: "0.7.7" + version: "0.7.4" test_core: dependency: transitive description: name: test_core - sha256: "0cc24b5ff94b38d2ae73e1eb43cc302b77964fbf67abad1e296025b78deb53d0" + sha256: "84d17c3486c8dfdbe5e12a50c8ae176d15e2a771b96909a9442b40173649ccaa" url: "https://pub.dev" source: hosted - version: "0.6.12" + version: "0.6.8" textfield_tags: dependency: "direct main" description: @@ -1434,34 +1490,34 @@ packages: dependency: transitive description: name: url_launcher_android - sha256: dff5e50339bf30b06d7950b50fda58164d3d8c40042b104ed041ddc520fbff28 + sha256: "81777b08c498a292d93ff2feead633174c386291e35612f8da438d6e92c4447e" url: "https://pub.dev" source: hosted - version: "6.3.25" + version: "6.3.20" url_launcher_ios: dependency: transitive description: name: url_launcher_ios - sha256: cfde38aa257dae62ffe79c87fab20165dfdf6988c1d31b58ebf59b9106062aad + sha256: d80b3f567a617cb923546034cc94bfe44eb15f989fe670b37f26abdb9d939cb7 url: "https://pub.dev" source: hosted - version: "6.3.6" + version: "6.3.4" url_launcher_linux: dependency: transitive description: name: url_launcher_linux - sha256: d5e14138b3bc193a0f63c10a53c94b91d399df0512b1f29b94a043db7482384a + sha256: "4e9ba368772369e3e08f231d2301b4ef72b9ff87c31192ef471b380ef29a4935" url: "https://pub.dev" source: hosted - version: "3.2.2" + version: "3.2.1" url_launcher_macos: dependency: transitive description: name: url_launcher_macos - sha256: "368adf46f71ad3c21b8f06614adb38346f193f3a59ba8fe9a2fd74133070ba18" + sha256: c043a77d6600ac9c38300567f33ef12b0ef4f4783a2c1f00231d2b1941fea13f url: "https://pub.dev" source: hosted - version: "3.2.5" + version: "3.2.3" url_launcher_platform_interface: dependency: transitive description: @@ -1482,10 +1538,10 @@ packages: dependency: transitive description: name: url_launcher_windows - sha256: "712c70ab1b99744ff066053cbe3e80c73332b38d46e5e945c98689b2e66fc15f" + sha256: "3284b6d2ac454cf34f114e1d3319866fdd1e19cdc329999057e44ffe936cfa77" url: "https://pub.dev" source: hosted - version: "3.1.5" + version: "3.1.4" uuid: dependency: "direct main" description: @@ -1522,18 +1578,18 @@ packages: dependency: transitive description: name: vector_math - sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.1.4" vm_service: dependency: transitive description: name: vm_service - sha256: "45caa6c5917fa127b5dbcfbd1fa60b14e583afdc08bfc96dda38886ca252eb60" + sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14" url: "https://pub.dev" source: hosted - version: "15.0.2" + version: "14.3.1" watcher: dependency: transitive description: @@ -1578,10 +1634,10 @@ packages: dependency: transitive description: name: win32 - sha256: d7cb55e04cd34096cd3a79b3330245f54cb96a370a1c27adb3c84b917de8b08e + sha256: "329edf97fdd893e0f1e3b9e88d6a0e627128cc17cc316a8d67fda8f1451178ba" url: "https://pub.dev" source: hosted - version: "5.15.0" + version: "5.13.0" xdg_directories: dependency: transitive description: @@ -1594,10 +1650,10 @@ packages: dependency: transitive description: name: xml - sha256: "971043b3a0d3da28727e40ed3e0b5d18b742fa5a68665cca88e74b7876d5e025" + sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226 url: "https://pub.dev" source: hosted - version: "6.6.1" + version: "6.5.0" yaml: dependency: transitive description: @@ -1615,5 +1671,5 @@ packages: source: hosted version: "2.2.2" sdks: - dart: ">=3.9.0 <4.0.0" - flutter: ">=3.35.0" + dart: ">=3.7.0 <4.0.0" + flutter: ">=3.29.0" diff --git a/test/api_service_test.dart b/test/api_service_test.dart index 85d84391..54a3cbaa 100644 --- a/test/api_service_test.dart +++ b/test/api_service_test.dart @@ -27,7 +27,7 @@ void main() { setUpAll(() { sqfliteFfiInit(); - + // Mock SharedPreferences plugin const MethodChannel('plugins.flutter.io/shared_preferences') .setMockMethodCallHandler((MethodCall methodCall) async { diff --git a/test/models/chart_test.dart b/test/models/chart_test.dart index b6cda046..3a23162b 100644 --- a/test/models/chart_test.dart +++ b/test/models/chart_test.dart @@ -1,4 +1,4 @@ - import 'package:flutter_test/flutter_test.dart'; +import 'package:flutter_test/flutter_test.dart'; import 'package:taskwarrior/app/models/chart.dart'; void main() { diff --git a/test/sentence_manager/sentence_manager_test.dart b/test/sentence_manager/sentence_manager_test.dart index dec8c2ad..6c0cb8e5 100644 --- a/test/sentence_manager/sentence_manager_test.dart +++ b/test/sentence_manager/sentence_manager_test.dart @@ -5,31 +5,37 @@ import 'package:taskwarrior/app/utils/language/supported_language.dart'; void main() { group('SentenceManager Tests', () { test('Should return "Hello, World!" for English', () { - final sentenceManager = SentenceManager(currentLanguage: SupportedLanguage.english); + final sentenceManager = + SentenceManager(currentLanguage: SupportedLanguage.english); expect(sentenceManager.sentences.helloWorld, 'Hello, World!'); }); test('Should return "হ্যালো বিশ্ব!" for Bengali', () { - final sentenceManager = SentenceManager(currentLanguage: SupportedLanguage.bengali); + final sentenceManager = + SentenceManager(currentLanguage: SupportedLanguage.bengali); expect(sentenceManager.sentences.helloWorld, 'হ্যালো বিশ্ব!'); }); test('Should return "नमस्ते दुनिया!" for Hindi', () { - final sentenceManager = SentenceManager(currentLanguage: SupportedLanguage.hindi); + final sentenceManager = + SentenceManager(currentLanguage: SupportedLanguage.hindi); expect(sentenceManager.sentences.helloWorld, 'नमस्ते दुनिया!'); }); test('Should return "Bonjour, le monde!" for French', () { - final sentenceManager = SentenceManager(currentLanguage: SupportedLanguage.french); + final sentenceManager = + SentenceManager(currentLanguage: SupportedLanguage.french); expect(sentenceManager.sentences.helloWorld, 'Bonjour, le monde!'); }); test('Should return "¡Hola, Mundo!" for Spanish', () { - final sentenceManager = SentenceManager(currentLanguage: SupportedLanguage.spanish); + final sentenceManager = + SentenceManager(currentLanguage: SupportedLanguage.spanish); expect(sentenceManager.sentences.helloWorld, '¡Hola, mundo!'); }); test('Should return "नमस्ते दुनिया!" for Marathi', () { - final sentenceManager = SentenceManager(currentLanguage: SupportedLanguage.marathi); + final sentenceManager = + SentenceManager(currentLanguage: SupportedLanguage.marathi); expect(sentenceManager.sentences.helloWorld, 'नमस्कार, जग!'); }); }); diff --git a/test/taskfunctions/comparator_test.dart b/test/taskfunctions/comparator_test.dart index 38e87122..43ae12ac 100644 --- a/test/taskfunctions/comparator_test.dart +++ b/test/taskfunctions/comparator_test.dart @@ -13,8 +13,7 @@ void main() { ..tags.replace(['tag1', 'tag2']) ..status = 'pending' ..uuid = 'uuid1' - ..description = 'Task 1 Description' - ); + ..description = 'Task 1 Description'); final task2 = Task((builder) => builder ..entry = DateTime(2024, 7, 19) @@ -26,8 +25,7 @@ void main() { ..tags.replace(['tag1']) ..status = 'pending' ..uuid = 'uuid2' - ..description = 'Task 2 Description' - ); + ..description = 'Task 2 Description'); test('Test compareTasks for Created column', () { final compare = compareTasks('Created'); diff --git a/test/taskfunctions/draft_test.dart b/test/taskfunctions/draft_test.dart index debe15ab..b0a0c83a 100644 --- a/test/taskfunctions/draft_test.dart +++ b/test/taskfunctions/draft_test.dart @@ -85,7 +85,7 @@ void main() { expect(draft.draft.id, original.id); expect(draft.draft.description, original.description); - + expect(draft.draft.status, original.status); }); }); diff --git a/test/taskfunctions/projects_test.dart b/test/taskfunctions/projects_test.dart index b25288e2..23e3114a 100644 --- a/test/taskfunctions/projects_test.dart +++ b/test/taskfunctions/projects_test.dart @@ -41,8 +41,10 @@ void main() { 'projectX.subprojectZ.subsubprojectB', 'projectX.subprojectZ.subsubprojectC', }); - expect(result2['projectX.subprojectZ.subsubprojectA']!.parent, 'projectX.subprojectZ'); - expect(result2['projectX.subprojectZ.subsubprojectC']!.parent, 'projectX.subprojectZ'); + expect(result2['projectX.subprojectZ.subsubprojectA']!.parent, + 'projectX.subprojectZ'); + expect(result2['projectX.subprojectZ.subsubprojectC']!.parent, + 'projectX.subprojectZ'); var projects3 = { 'rootProject': 0, @@ -63,8 +65,7 @@ void main() { 'projectP.subprojectQ', 'projectP.subprojectQ.subsubprojectR', }); - expect(result4['projectP.subprojectQ.subsubprojectR']!.parent, 'projectP.subprojectQ'); - - + expect(result4['projectP.subprojectQ.subsubprojectR']!.parent, + 'projectP.subprojectQ'); }); } diff --git a/test/taskfunctions/validate_test.dart b/test/taskfunctions/validate_test.dart index 03c2c5aa..55088830 100644 --- a/test/taskfunctions/validate_test.dart +++ b/test/taskfunctions/validate_test.dart @@ -7,7 +7,8 @@ void main() { expect(() => validateTaskDescription(''), throwsFormatException); - expect(() => validateTaskDescription('Do something\\'), throwsFormatException); + expect( + () => validateTaskDescription('Do something\\'), throwsFormatException); }); test('validateTaskProject', () { diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index 9d16245a..7bbcffce 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -6,6 +6,7 @@ #include "generated_plugin_registrant.h" +#include #include #include #include @@ -13,6 +14,8 @@ #include void RegisterPlugins(flutter::PluginRegistry* registry) { + AppLinksPluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("AppLinksPluginCApi")); ConnectivityPlusWindowsPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("ConnectivityPlusWindowsPlugin")); FileSelectorWindowsRegisterWithRegistrar( diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index 50ed42d3..79ba045e 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -3,6 +3,7 @@ # list(APPEND FLUTTER_PLUGIN_LIST + app_links connectivity_plus file_selector_windows flutter_timezone