From f832b5e2021e06e98348a55194e7443e9fce80fa Mon Sep 17 00:00:00 2001 From: bhola-dev58 Date: Sat, 7 Mar 2026 01:20:36 +0530 Subject: [PATCH 1/9] feat: Linux supported, automate with native assets fix sqlite support --- hook/build.dart | 44 +++++ .../home/controllers/home_controller.dart | 49 +++--- .../home/controllers/widget.controller.dart | 16 +- .../splash/controllers/splash_controller.dart | 1 + lib/app/utils/app_settings/app_settings.dart | 6 +- lib/app/v3/db/task_database.dart | 2 +- lib/main.dart | 10 ++ linux/flutter/generated_plugin_registrant.cc | 4 + linux/flutter/generated_plugins.cmake | 1 + macos/Flutter/GeneratedPluginRegistrant.swift | 2 + pubspec.lock | 152 +++++++++++++----- pubspec.yaml | 5 +- .../flutter/generated_plugin_registrant.cc | 3 + windows/flutter/generated_plugins.cmake | 1 + 14 files changed, 223 insertions(+), 73 deletions(-) create mode 100644 hook/build.dart diff --git a/hook/build.dart b/hook/build.dart new file mode 100644 index 00000000..015c35cb --- /dev/null +++ b/hook/build.dart @@ -0,0 +1,44 @@ +import 'dart:io'; +import 'package:native_assets_cli/native_assets_cli.dart'; +import 'package:native_assets_cli/code_assets.dart'; + +void main(List args) async { + await build(args, (input, output) async { + // Check if code assets are supported/requested + // Note: hook/build.dart is only called if the package has native assets. + + final targetOS = input.config.code.targetOS; + if (targetOS != OS.linux) return; + + final rustDir = input.packageRoot.resolve('rust/'); + + // 1. Run cargo build --release + final result = await Process.run( + 'cargo', + ['build', '--release'], + workingDirectory: rustDir.toFilePath(), + ); + + if (result.exitCode != 0) { + stdout.write(result.stdout); + stderr.write(result.stderr); + throw Exception('Rust build failed'); + } + + // 2. Locate the library + final libName = 'libtc_helper.so'; + final libPath = rustDir.resolve('target/release/$libName'); + + if (!await File.fromUri(libPath).exists()) { + throw Exception('Built library not found at $libPath'); + } + + // 3. Add the asset to the output + output.assets.code.add(CodeAsset( + package: input.packageName, + name: 'main.dart', + linkMode: DynamicLoadingBundled(), + file: libPath, + )); + }); +} diff --git a/lib/app/modules/home/controllers/home_controller.dart b/lib/app/modules/home/controllers/home_controller.dart index 053f2bcc..b8d8731c 100644 --- a/lib/app/modules/home/controllers/home_controller.dart +++ b/lib/app/modules/home/controllers/home_controller.dart @@ -692,12 +692,13 @@ class HomeController extends GetxController { void initLanguageAndDarkMode() { isDarkModeOn.value = AppSettings.isDarkMode; selectedLanguage.value = AppSettings.selectedLanguage; - HomeWidget.saveWidgetData( - "themeMode", AppSettings.isDarkMode ? "dark" : "light"); - HomeWidget.updateWidget( - androidName: "TaskWarriorWidgetProvider", - iOSName: "TaskWarriorWidgets"); - // print("called and value is${isDarkModeOn.value}"); + if (Platform.isAndroid || Platform.isIOS) { + HomeWidget.saveWidgetData( + "themeMode", AppSettings.isDarkMode ? "dark" : "light"); + HomeWidget.updateWidget( + androidName: "TaskWarriorWidgetProvider", + iOSName: "TaskWarriorWidgets"); + } } final addKey = GlobalKey(); @@ -731,17 +732,14 @@ class HomeController extends GetxController { Future.delayed( const Duration(milliseconds: 500), () { - SaveTourStatus.getInAppTourStatus().then((value) => { - if (value == false) - { - tutorialCoachMark.show(context: context), - } - else - { - // ignore: avoid_print - debugPrint('User has seen this page'), - // User has seen this page - } + SaveTourStatus.getInAppTourStatus().then((value) { + if (value == false) { + tutorialCoachMark.show(context: context); + } else { + // ignore: avoid_print + debugPrint('User has seen this page'); + // User has seen this page + } }); }, ); @@ -776,16 +774,13 @@ class HomeController extends GetxController { Future.delayed( const Duration(milliseconds: 500), () { - SaveTourStatus.getFilterTourStatus().then((value) => { - if (value == false) - { - tutorialCoachMark.show(context: context), - } - else - { - // ignore: avoid_print - print('User has seen this page'), - } + SaveTourStatus.getFilterTourStatus().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/home/controllers/widget.controller.dart b/lib/app/modules/home/controllers/widget.controller.dart index 4137f137..6f6c33f1 100644 --- a/lib/app/modules/home/controllers/widget.controller.dart +++ b/lib/app/modules/home/controllers/widget.controller.dart @@ -176,15 +176,19 @@ class WidgetController extends GetxController { } } } - await HomeWidget.saveWidgetData("tasks", jsonEncode(l)); + if (Platform.isAndroid || Platform.isIOS) { + await HomeWidget.saveWidgetData("tasks", jsonEncode(l)); + } } Future updateWidget() async { - try { - return HomeWidget.updateWidget( - name: 'TaskWarriorWidgetProvider', iOSName: 'TaskWarriorWidgets'); - } on PlatformException catch (exception) { - debugPrint('Error Updating Widget. $exception'); + if (Platform.isAndroid || Platform.isIOS) { + try { + return HomeWidget.updateWidget( + name: 'TaskWarriorWidgetProvider', iOSName: 'TaskWarriorWidgets'); + } on PlatformException catch (exception) { + debugPrint('Error Updating Widget. $exception'); + } } } } diff --git a/lib/app/modules/splash/controllers/splash_controller.dart b/lib/app/modules/splash/controllers/splash_controller.dart index 126aaebb..cea364bb 100644 --- a/lib/app/modules/splash/controllers/splash_controller.dart +++ b/lib/app/modules/splash/controllers/splash_controller.dart @@ -139,6 +139,7 @@ class SplashController extends GetxController { } Future checkForUpdate() async { + if (Platform.isLinux || Platform.isWindows || Platform.isMacOS) return; try { AppUpdateInfo updateInfo = await InAppUpdate.checkForUpdate(); if (updateInfo.updateAvailability == UpdateAvailability.updateAvailable) { diff --git a/lib/app/utils/app_settings/app_settings.dart b/lib/app/utils/app_settings/app_settings.dart index 335132ab..f21d42aa 100644 --- a/lib/app/utils/app_settings/app_settings.dart +++ b/lib/app/utils/app_settings/app_settings.dart @@ -1,3 +1,5 @@ +import 'dart:io'; +import 'dart:io'; import 'package:get/get.dart'; import 'package:home_widget/home_widget.dart'; import 'package:shared_preferences/shared_preferences.dart'; @@ -14,7 +16,9 @@ class AppSettings { static final RxBool use24HourFormatRx = false.obs; static Future init() async { - await HomeWidget.setAppGroupId("group.taskwarrior"); + if (!Platform.isLinux) { + await HomeWidget.setAppGroupId("group.taskwarrior"); + } await SelectedTheme.init(); await SelectedLanguage.init(); await SaveTourStatus.init(); diff --git a/lib/app/v3/db/task_database.dart b/lib/app/v3/db/task_database.dart index dc1b97b2..630ae858 100644 --- a/lib/app/v3/db/task_database.dart +++ b/lib/app/v3/db/task_database.dart @@ -305,7 +305,7 @@ class TaskDatabase { final List< Map> result = await taskDatabase._database!.rawQuery( - 'SELECT DISTINCT project FROM Tasks WHERE project IS NOT NULL AND status IS NOT "deleted"'); + "SELECT DISTINCT project FROM Tasks WHERE project IS NOT NULL AND status IS NOT 'deleted'"); return result.map((row) => row['project'] as String).toList(); } diff --git a/lib/main.dart b/lib/main.dart index 09f0268c..4247f25a 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -12,6 +12,8 @@ import 'package:taskwarrior/app/utils/debug_logger/log_databse_helper.dart'; import 'package:taskwarrior/app/utils/themes/dark_theme.dart'; import 'package:taskwarrior/app/utils/themes/light_theme.dart'; import 'package:taskwarrior/rust_bridge/frb_generated.dart'; +import 'package:sqflite_common_ffi/sqflite_ffi.dart'; // Add this +import 'package:sqflite/sqflite.dart'; // Add this import 'app/routes/app_pages.dart'; LogDatabaseHelper _logDatabaseHelper = LogDatabaseHelper(); @@ -23,12 +25,20 @@ DynamicLibrary loadNativeLibrary() { return DynamicLibrary.open('libtc_helper.so'); } else if (Platform.isMacOS) { return DynamicLibrary.open('tc_helper.framework/tc_helper'); + }else if (Platform.isLinux) { // Add this block + return DynamicLibrary.open('libtc_helper.so'); } throw UnsupportedError( 'Platform ${Platform.operatingSystem} is not supported'); } void main() async { + if (Platform.isLinux) { + // Initialize sqflite for Linux + sqfliteFfiInit(); + databaseFactory = databaseFactoryFfi; + } + debugPrint = (String? message, {int? wrapWidth}) { if (message != null) { debugPrintSynchronously(message, wrapWidth: wrapWidth); 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..83552386 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,18 +5,18 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: da0d9209ca76bde579f2da330aeb9df62b6319c834fa7baae052021b0462401f + sha256: c209688d9f5a5f26b2fb47a188131a6fb9e876ae9e47af3737c0b4f58a93470d url: "https://pub.dev" source: hosted - version: "85.0.0" + version: "91.0.0" analyzer: dependency: transitive description: name: analyzer - sha256: "974859dc0ff5f37bc4313244b3218c791810d03ab3470a579580279ba971a48d" + sha256: f51c8499b35f9b26820cfe914828a6a98a94efd5cc78b37bb7d03debae3a1d08 url: "https://pub.dev" source: hosted - version: "7.7.1" + version: "8.4.1" ansicolor: dependency: transitive description: @@ -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: @@ -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: e563c2e01de8974566a1998410d3f6f03521788160a02503b0b1f1a46c7b3d95 + url: "https://pub.dev" + source: hosted + version: "2.1.1" build_config: dependency: transitive description: @@ -125,10 +165,10 @@ packages: dependency: transitive description: name: characters - sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 + sha256: faf38497bda5ead2a8c7615f4f7939df04333478bf32e4173fcb06d428b5716b url: "https://pub.dev" source: hosted - version: "1.4.0" + version: "1.4.1" checked_yaml: dependency: transitive description: @@ -161,6 +201,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.2" + code_assets: + dependency: transitive + description: + name: code_assets + sha256: "83ccdaa064c980b5596c35dd64a8d3ecc68620174ab9b90b6343b753aa721687" + url: "https://pub.dev" + source: hosted + version: "1.0.0" code_builder: dependency: transitive description: @@ -253,10 +301,10 @@ packages: dependency: transitive description: name: dart_style - sha256: "8a0e5fba27e8ee025d2ffb4ee820b4e6e2cf5e4246a6b1a477eb66866947e0bb" + sha256: a9c30492da18ff84efe2422ba2d319a89942d93e58eb0b73d32abe822ef54b7b url: "https://pub.dev" source: hosted - version: "3.1.1" + version: "3.1.3" dartx: dependency: transitive description: @@ -519,6 +567,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.32" + 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 +657,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: @@ -633,6 +697,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.7.0+1" + hooks: + dependency: transitive + description: + name: hooks + sha256: "7a08a0d684cb3b8fb604b78455d5d352f502b68079f7b80b831c62220ab0a4f6" + url: "https://pub.dev" + source: hosted + version: "1.0.1" html: dependency: transitive description: @@ -721,14 +793,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.5" - js: - dependency: transitive - description: - name: js - sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 - url: "https://pub.dev" - source: hosted - version: "0.6.7" json_annotation: dependency: transitive description: @@ -797,18 +861,18 @@ packages: dependency: transitive description: name: matcher - sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 + sha256: "12956d0ad8390bbcc63ca2e1469c0619946ccb52809807067a7020d57e647aa6" url: "https://pub.dev" source: hosted - version: "0.12.17" + version: "0.12.18" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec + sha256: "9c337007e82b1889149c82ed242ed1cb24a66044e30979c44912381e9be4c48b" url: "https://pub.dev" source: hosted - version: "0.11.1" + version: "0.13.0" meta: dependency: transitive description: @@ -829,10 +893,26 @@ packages: dependency: "direct main" description: name: mockito - sha256: "2314cbe9165bcd16106513df9cf3c3224713087f09723b128928dc11a4379f99" + sha256: a45d1aa065b796922db7b9e7e7e45f921aed17adf3a8318a1f47097e7e695566 + url: "https://pub.dev" + source: hosted + version: "5.6.3" + native_assets_cli: + dependency: "direct dev" + description: + name: native_assets_cli + sha256: "224d3d7eb3fd05ed631a2a19986a2189c009ccda7747f5192096998200d45bfe" url: "https://pub.dev" source: hosted - version: "5.5.0" + version: "0.18.0" + native_toolchain_c: + dependency: transitive + description: + name: native_toolchain_c + sha256: "89e83885ba09da5fdf2cdacc8002a712ca238c28b7f717910b34bcd27b0d03ac" + url: "https://pub.dev" + source: hosted + version: "0.17.4" nm: dependency: transitive description: @@ -1141,10 +1221,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: @@ -1215,13 +1295,13 @@ packages: source: hosted version: "2.5.6" sqflite_common_ffi: - dependency: "direct dev" + dependency: "direct main" description: name: sqflite_common_ffi - sha256: "9faa2fedc5385ef238ce772589f7718c24cdddd27419b609bb9c6f703ea27988" + sha256: c59fcdc143839a77581f7a7c4de018e53682408903a0a0800b95ef2dc4033eff url: "https://pub.dev" source: hosted - version: "2.3.6" + version: "2.4.0+2" sqflite_darwin: dependency: transitive description: @@ -1242,10 +1322,10 @@ packages: dependency: transitive description: name: sqlite3 - sha256: "3145bd74dcdb4fd6f5c6dda4d4e4490a8087d7f286a14dee5d37087290f0f8a2" + sha256: b7cf6b37667f6a921281797d2499ffc60fb878b161058d422064f0ddc78f6aa6 url: "https://pub.dev" source: hosted - version: "2.9.4" + version: "3.1.6" stack_trace: dependency: transitive description: @@ -1330,26 +1410,26 @@ packages: dependency: "direct main" description: name: test - sha256: "75906bf273541b676716d1ca7627a17e4c4070a3a16272b7a3dc7da3b9f3f6b7" + sha256: "54c516bbb7cee2754d327ad4fca637f78abfc3cbcc5ace83b3eda117e42cd71a" url: "https://pub.dev" source: hosted - version: "1.26.3" + version: "1.29.0" test_api: dependency: transitive description: name: test_api - sha256: ab2726c1a94d3176a45960b6234466ec367179b87dd74f1611adb1f3b5fb9d55 + sha256: "93167629bfc610f71560ab9312acdda4959de4df6fac7492c89ff0d3886f6636" url: "https://pub.dev" source: hosted - version: "0.7.7" + version: "0.7.9" test_core: dependency: transitive description: name: test_core - sha256: "0cc24b5ff94b38d2ae73e1eb43cc302b77964fbf67abad1e296025b78deb53d0" + sha256: "394f07d21f0f2255ec9e3989f21e54d3c7dc0e6e9dbce160e5a9c1a6be0e2943" url: "https://pub.dev" source: hosted - version: "0.6.12" + version: "0.6.15" textfield_tags: dependency: "direct main" description: @@ -1615,5 +1695,5 @@ packages: source: hosted version: "2.2.2" sdks: - dart: ">=3.9.0 <4.0.0" + dart: ">=3.10.0-0 <4.0.0" flutter: ">=3.35.0" diff --git a/pubspec.yaml b/pubspec.yaml index 12e80726..6a2e3937 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -67,16 +67,17 @@ dependencies: textfield_tags: ^3.0.1 path_provider: ^2.1.5 flutter_rust_bridge: ^2.11.1 - ffi: any # Required for FFI + ffi: any # Required for FFI app_links: ^6.4.1 + sqflite_common_ffi: ^2.3.6+1 dev_dependencies: build_runner: null flutter_gen_runner: null flutter_lints: ^5.0.0 http_mock_adapter: ^0.6.1 - sqflite_common_ffi: ^2.0.0 ffigen: ^8.0.1 + native_assets_cli: ^0.18.0 flutter_gen: output: lib/app/utils/gen/ 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 From 3f3d5264b601eb06cd7709ff8750904dc0822762 Mon Sep 17 00:00:00 2001 From: bhola-dev58 Date: Sat, 7 Mar 2026 13:01:34 +0530 Subject: [PATCH 2/9] modified: removed unused imports and polished logging --- lib/app/modules/home/controllers/home_controller.dart | 8 ++++---- lib/app/utils/app_settings/app_settings.dart | 1 - pubspec.lock | 4 ++-- pubspec.yaml | 3 ++- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/app/modules/home/controllers/home_controller.dart b/lib/app/modules/home/controllers/home_controller.dart index b8d8731c..6ee3b092 100644 --- a/lib/app/modules/home/controllers/home_controller.dart +++ b/lib/app/modules/home/controllers/home_controller.dart @@ -671,7 +671,7 @@ class HomeController extends GetxController { } void changeInDirectory() { - print("directory change to ${splashController.baseDirectory.value.path}"); + debugPrint("directory change to ${splashController.baseDirectory.value.path}"); storage = Storage( Directory( '${splashController.baseDirectory.value.path}/profiles/${splashController.currentProfile.value}', @@ -779,7 +779,7 @@ class HomeController extends GetxController { tutorialCoachMark.show(context: context); } else { // ignore: avoid_print - print('User has seen this page'); + debugPrint('User has seen this page'); } }); }, @@ -803,8 +803,8 @@ class HomeController extends GetxController { void showTaskSwipeTutorial(BuildContext context) { SaveTourStatus.getTaskSwipeTutorialStatus().then((value) { - print("value is $value"); - print("tasks is ${tasks.isNotEmpty}"); + debugPrint("value is $value"); + debugPrint("tasks is ${tasks.isNotEmpty}"); if (value == false) { initTaskSwipeTutorial(); tutorialCoachMark.show(context: context); diff --git a/lib/app/utils/app_settings/app_settings.dart b/lib/app/utils/app_settings/app_settings.dart index f21d42aa..03c4fc4e 100644 --- a/lib/app/utils/app_settings/app_settings.dart +++ b/lib/app/utils/app_settings/app_settings.dart @@ -1,5 +1,4 @@ import 'dart:io'; -import 'dart:io'; import 'package:get/get.dart'; import 'package:home_widget/home_widget.dart'; import 'package:shared_preferences/shared_preferences.dart'; diff --git a/pubspec.lock b/pubspec.lock index 83552386..09df0242 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -898,7 +898,7 @@ packages: source: hosted version: "5.6.3" native_assets_cli: - dependency: "direct dev" + dependency: "direct main" description: name: native_assets_cli sha256: "224d3d7eb3fd05ed631a2a19986a2189c009ccda7747f5192096998200d45bfe" @@ -954,7 +954,7 @@ packages: source: hosted version: "3.2.1" path: - dependency: transitive + dependency: "direct main" description: name: path sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" diff --git a/pubspec.yaml b/pubspec.yaml index 6a2e3937..6ef2d117 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -70,6 +70,8 @@ dependencies: ffi: any # Required for FFI app_links: ^6.4.1 sqflite_common_ffi: ^2.3.6+1 + path: ^1.9.1 + native_assets_cli: ^0.18.0 dev_dependencies: build_runner: null @@ -77,7 +79,6 @@ dev_dependencies: flutter_lints: ^5.0.0 http_mock_adapter: ^0.6.1 ffigen: ^8.0.1 - native_assets_cli: ^0.18.0 flutter_gen: output: lib/app/utils/gen/ From 6861c5d45ae5420c34b79cbcd5d0944642ea2e1d Mon Sep 17 00:00:00 2001 From: bhola-dev58 Date: Sat, 7 Mar 2026 15:15:25 +0530 Subject: [PATCH 3/9] refactor: improve platform guards for iOS and Web compatibility --- lib/app/modules/splash/controllers/splash_controller.dart | 3 +-- lib/app/utils/app_settings/app_settings.dart | 2 +- lib/main.dart | 7 ++----- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/lib/app/modules/splash/controllers/splash_controller.dart b/lib/app/modules/splash/controllers/splash_controller.dart index cea364bb..e3b679ad 100644 --- a/lib/app/modules/splash/controllers/splash_controller.dart +++ b/lib/app/modules/splash/controllers/splash_controller.dart @@ -10,7 +10,6 @@ import 'package:shared_preferences/shared_preferences.dart'; import 'package:taskwarrior/app/models/storage.dart'; import 'package:taskwarrior/app/modules/home/controllers/home_controller.dart'; import 'package:taskwarrior/app/routes/app_pages.dart'; -import 'package:taskwarrior/app/utils/taskchampion/credentials_storage.dart'; import 'package:taskwarrior/app/utils/taskfunctions/profiles.dart'; import 'package:taskwarrior/app/v3/models/task.dart'; @@ -139,7 +138,7 @@ class SplashController extends GetxController { } Future checkForUpdate() async { - if (Platform.isLinux || Platform.isWindows || Platform.isMacOS) return; + if (!Platform.isAndroid) return; try { AppUpdateInfo updateInfo = await InAppUpdate.checkForUpdate(); if (updateInfo.updateAvailability == UpdateAvailability.updateAvailable) { diff --git a/lib/app/utils/app_settings/app_settings.dart b/lib/app/utils/app_settings/app_settings.dart index 03c4fc4e..b918e6e6 100644 --- a/lib/app/utils/app_settings/app_settings.dart +++ b/lib/app/utils/app_settings/app_settings.dart @@ -15,7 +15,7 @@ class AppSettings { static final RxBool use24HourFormatRx = false.obs; static Future init() async { - if (!Platform.isLinux) { + if (Platform.isIOS){ await HomeWidget.setAppGroupId("group.taskwarrior"); } await SelectedTheme.init(); diff --git a/lib/main.dart b/lib/main.dart index 4247f25a..ebbed6f0 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,19 +1,16 @@ import 'dart:ffi'; import 'dart:io'; -import 'package:flutter/foundation.dart'; +import 'package:flutter/foundation.dart' show kIsWeb; import 'package:flutter/material.dart'; import 'package:get/get.dart'; -// 1. Add this import -import 'package:app_links/app_links.dart'; import 'package:taskwarrior/app/services/deep_link_service.dart'; - import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; import 'package:taskwarrior/app/utils/debug_logger/log_databse_helper.dart'; import 'package:taskwarrior/app/utils/themes/dark_theme.dart'; import 'package:taskwarrior/app/utils/themes/light_theme.dart'; import 'package:taskwarrior/rust_bridge/frb_generated.dart'; import 'package:sqflite_common_ffi/sqflite_ffi.dart'; // Add this -import 'package:sqflite/sqflite.dart'; // Add this + import 'app/routes/app_pages.dart'; LogDatabaseHelper _logDatabaseHelper = LogDatabaseHelper(); From e624db692a5d300f031d19c95a9ef7e3b4937d75 Mon Sep 17 00:00:00 2001 From: bhola-dev58 Date: Sat, 7 Mar 2026 15:33:45 +0530 Subject: [PATCH 4/9] chore: final cleanup of unused imports and comments in main.dart --- lib/main.dart | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/main.dart b/lib/main.dart index ebbed6f0..17462865 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -16,6 +16,10 @@ import 'app/routes/app_pages.dart'; LogDatabaseHelper _logDatabaseHelper = LogDatabaseHelper(); DynamicLibrary loadNativeLibrary() { + if (kIsWeb) { + throw UnsupportedError("Native libraries are not supported on Web"); + } + if (Platform.isIOS) { return DynamicLibrary.open('Frameworks/tc_helper.framework/tc_helper'); } else if (Platform.isAndroid) { @@ -30,7 +34,7 @@ DynamicLibrary loadNativeLibrary() { } void main() async { - if (Platform.isLinux) { + if (!kIsWeb && Platform.isLinux) { // Initialize sqflite for Linux sqfliteFfiInit(); databaseFactory = databaseFactoryFfi; From 0e75408e46b8ebd4916aaf7b8744e1b42967fbd3 Mon Sep 17 00:00:00 2001 From: bhola-dev58 Date: Sat, 7 Mar 2026 15:57:42 +0530 Subject: [PATCH 5/9] refactor: integrate native library with Rust bridge and fix formatting --- lib/main.dart | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 17462865..9d2949e3 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,6 +1,6 @@ import 'dart:ffi'; import 'dart:io'; -import 'package:flutter/foundation.dart' show kIsWeb; +import 'package:flutter/foundation.dart' show kIsWeb, debugPrintSynchronously; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:taskwarrior/app/services/deep_link_service.dart'; @@ -9,25 +9,26 @@ import 'package:taskwarrior/app/utils/debug_logger/log_databse_helper.dart'; import 'package:taskwarrior/app/utils/themes/dark_theme.dart'; import 'package:taskwarrior/app/utils/themes/light_theme.dart'; import 'package:taskwarrior/rust_bridge/frb_generated.dart'; -import 'package:sqflite_common_ffi/sqflite_ffi.dart'; // Add this +import 'package:sqflite_common_ffi/sqflite_ffi.dart'; +import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; import 'app/routes/app_pages.dart'; LogDatabaseHelper _logDatabaseHelper = LogDatabaseHelper(); -DynamicLibrary loadNativeLibrary() { +ExternalLibrary loadNativeLibrary() { if (kIsWeb) { throw UnsupportedError("Native libraries are not supported on Web"); } if (Platform.isIOS) { - return DynamicLibrary.open('Frameworks/tc_helper.framework/tc_helper'); + return ExternalLibrary.open('Frameworks/tc_helper.framework/tc_helper'); } else if (Platform.isAndroid) { - return DynamicLibrary.open('libtc_helper.so'); + return ExternalLibrary.open('libtc_helper.so'); } else if (Platform.isMacOS) { - return DynamicLibrary.open('tc_helper.framework/tc_helper'); - }else if (Platform.isLinux) { // Add this block - return DynamicLibrary.open('libtc_helper.so'); + return ExternalLibrary.open('tc_helper.framework/tc_helper'); + } else if (Platform.isLinux) { + return ExternalLibrary.open('libtc_helper.so'); } throw UnsupportedError( 'Platform ${Platform.operatingSystem} is not supported'); @@ -47,8 +48,8 @@ void main() async { } }; - loadNativeLibrary(); - await RustLib.init(); + final lib = loadNativeLibrary(); + await RustLib.init(externalLibrary: lib); WidgetsFlutterBinding.ensureInitialized(); await AppSettings.init(); From 2b60ac49feba8e867c7ddfa3ee1e0537f302383a Mon Sep 17 00:00:00 2001 From: bhola-dev58 Date: Sun, 8 Mar 2026 02:20:41 +0530 Subject: [PATCH 6/9] feat: expand desktop support to include Windows and macOS Improvements: - In loadNativeLibrary(): Added Platform.isWindows check for tc_helper.dll. - In main(): Updated the platform guard to include Windows and macOS for SQLite initialization. - Goal: Ensures the database and native logic work correctly across all desktop platforms. --- lib/main.dart | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/main.dart b/lib/main.dart index 9d2949e3..7fbb4e5e 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -29,13 +29,16 @@ ExternalLibrary loadNativeLibrary() { return ExternalLibrary.open('tc_helper.framework/tc_helper'); } else if (Platform.isLinux) { return ExternalLibrary.open('libtc_helper.so'); + } else if (Platform.isWindows) { // Add Windows back in! + return ExternalLibrary.open('tc_helper.dll'); } throw UnsupportedError( 'Platform ${Platform.operatingSystem} is not supported'); } void main() async { - if (!kIsWeb && Platform.isLinux) { + // Update to support all Desktops + if (!kIsWeb && (Platform.isLinux || Platform.isWindows || Platform.isMacOS)) { // Initialize sqflite for Linux sqfliteFfiInit(); databaseFactory = databaseFactoryFfi; From 083bd7761751c60cffa0a1fdd5fb14825e15fd3f Mon Sep 17 00:00:00 2001 From: bhola-dev58 Date: Sun, 8 Mar 2026 16:54:03 +0530 Subject: [PATCH 7/9] remove irrelevant generated files from PR --- linux/flutter/generated_plugin_registrant.cc | 4 - linux/flutter/generated_plugins.cmake | 1 - macos/Flutter/GeneratedPluginRegistrant.swift | 2 - pubspec.lock | 154 +++++------------- .../flutter/generated_plugin_registrant.cc | 3 - windows/flutter/generated_plugins.cmake | 1 - 6 files changed, 37 insertions(+), 128 deletions(-) diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc index e20e7221..13807bb2 100644 --- a/linux/flutter/generated_plugin_registrant.cc +++ b/linux/flutter/generated_plugin_registrant.cc @@ -8,7 +8,6 @@ #include #include -#include #include void fl_register_plugins(FlPluginRegistry* registry) { @@ -18,9 +17,6 @@ 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 fe92fa4d..b01d1fd9 100644 --- a/linux/flutter/generated_plugins.cmake +++ b/linux/flutter/generated_plugins.cmake @@ -5,7 +5,6 @@ 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 91b0fc33..cb98b370 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,7 +5,6 @@ import FlutterMacOS import Foundation -import app_links import connectivity_plus import file_picker import file_picker_writable @@ -19,7 +18,6 @@ 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 09df0242..c7182030 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,18 +5,18 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: c209688d9f5a5f26b2fb47a188131a6fb9e876ae9e47af3737c0b4f58a93470d + sha256: da0d9209ca76bde579f2da330aeb9df62b6319c834fa7baae052021b0462401f url: "https://pub.dev" source: hosted - version: "91.0.0" + version: "85.0.0" analyzer: dependency: transitive description: name: analyzer - sha256: f51c8499b35f9b26820cfe914828a6a98a94efd5cc78b37bb7d03debae3a1d08 + sha256: "974859dc0ff5f37bc4313244b3218c791810d03ab3470a579580279ba971a48d" url: "https://pub.dev" source: hosted - version: "8.4.1" + version: "7.7.1" ansicolor: dependency: transitive description: @@ -25,38 +25,6 @@ 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: @@ -97,14 +65,6 @@ packages: url: "https://pub.dev" source: hosted version: "3.1.0" - build_cli_annotations: - dependency: transitive - description: - name: build_cli_annotations - sha256: e563c2e01de8974566a1998410d3f6f03521788160a02503b0b1f1a46c7b3d95 - url: "https://pub.dev" - source: hosted - version: "2.1.1" build_config: dependency: transitive description: @@ -165,10 +125,10 @@ packages: dependency: transitive description: name: characters - sha256: faf38497bda5ead2a8c7615f4f7939df04333478bf32e4173fcb06d428b5716b + sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 url: "https://pub.dev" source: hosted - version: "1.4.1" + version: "1.4.0" checked_yaml: dependency: transitive description: @@ -201,14 +161,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.2" - code_assets: - dependency: transitive - description: - name: code_assets - sha256: "83ccdaa064c980b5596c35dd64a8d3ecc68620174ab9b90b6343b753aa721687" - url: "https://pub.dev" - source: hosted - version: "1.0.0" code_builder: dependency: transitive description: @@ -301,10 +253,10 @@ packages: dependency: transitive description: name: dart_style - sha256: a9c30492da18ff84efe2422ba2d319a89942d93e58eb0b73d32abe822ef54b7b + sha256: "8a0e5fba27e8ee025d2ffb4ee820b4e6e2cf5e4246a6b1a477eb66866947e0bb" url: "https://pub.dev" source: hosted - version: "3.1.3" + version: "3.1.1" dartx: dependency: transitive description: @@ -567,14 +519,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.32" - 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: @@ -657,14 +601,6 @@ 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: @@ -697,14 +633,6 @@ packages: url: "https://pub.dev" source: hosted version: "0.7.0+1" - hooks: - dependency: transitive - description: - name: hooks - sha256: "7a08a0d684cb3b8fb604b78455d5d352f502b68079f7b80b831c62220ab0a4f6" - url: "https://pub.dev" - source: hosted - version: "1.0.1" html: dependency: transitive description: @@ -793,6 +721,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.5" + js: + dependency: transitive + description: + name: js + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 + url: "https://pub.dev" + source: hosted + version: "0.6.7" json_annotation: dependency: transitive description: @@ -861,18 +797,18 @@ packages: dependency: transitive description: name: matcher - sha256: "12956d0ad8390bbcc63ca2e1469c0619946ccb52809807067a7020d57e647aa6" + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 url: "https://pub.dev" source: hosted - version: "0.12.18" + version: "0.12.17" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: "9c337007e82b1889149c82ed242ed1cb24a66044e30979c44912381e9be4c48b" + sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec url: "https://pub.dev" source: hosted - version: "0.13.0" + version: "0.11.1" meta: dependency: transitive description: @@ -893,26 +829,10 @@ packages: dependency: "direct main" description: name: mockito - sha256: a45d1aa065b796922db7b9e7e7e45f921aed17adf3a8318a1f47097e7e695566 + sha256: "2314cbe9165bcd16106513df9cf3c3224713087f09723b128928dc11a4379f99" url: "https://pub.dev" source: hosted - version: "5.6.3" - native_assets_cli: - dependency: "direct main" - description: - name: native_assets_cli - sha256: "224d3d7eb3fd05ed631a2a19986a2189c009ccda7747f5192096998200d45bfe" - url: "https://pub.dev" - source: hosted - version: "0.18.0" - native_toolchain_c: - dependency: transitive - description: - name: native_toolchain_c - sha256: "89e83885ba09da5fdf2cdacc8002a712ca238c28b7f717910b34bcd27b0d03ac" - url: "https://pub.dev" - source: hosted - version: "0.17.4" + version: "5.5.0" nm: dependency: transitive description: @@ -954,7 +874,7 @@ packages: source: hosted version: "3.2.1" path: - dependency: "direct main" + dependency: transitive description: name: path sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" @@ -1221,10 +1141,10 @@ packages: dependency: transitive description: name: shelf_web_socket - sha256: "3632775c8e90d6c9712f883e633716432a27758216dfb61bd86a8321c0580925" + sha256: "9ca081be41c60190ebcb4766b2486a7d50261db7bd0f5d9615f2d653637a84c1" url: "https://pub.dev" source: hosted - version: "3.0.0" + version: "1.0.4" sizer: dependency: "direct main" description: @@ -1295,13 +1215,13 @@ packages: source: hosted version: "2.5.6" sqflite_common_ffi: - dependency: "direct main" + dependency: "direct dev" description: name: sqflite_common_ffi - sha256: c59fcdc143839a77581f7a7c4de018e53682408903a0a0800b95ef2dc4033eff + sha256: "9faa2fedc5385ef238ce772589f7718c24cdddd27419b609bb9c6f703ea27988" url: "https://pub.dev" source: hosted - version: "2.4.0+2" + version: "2.3.6" sqflite_darwin: dependency: transitive description: @@ -1322,10 +1242,10 @@ packages: dependency: transitive description: name: sqlite3 - sha256: b7cf6b37667f6a921281797d2499ffc60fb878b161058d422064f0ddc78f6aa6 + sha256: "3145bd74dcdb4fd6f5c6dda4d4e4490a8087d7f286a14dee5d37087290f0f8a2" url: "https://pub.dev" source: hosted - version: "3.1.6" + version: "2.9.4" stack_trace: dependency: transitive description: @@ -1410,26 +1330,26 @@ packages: dependency: "direct main" description: name: test - sha256: "54c516bbb7cee2754d327ad4fca637f78abfc3cbcc5ace83b3eda117e42cd71a" + sha256: "75906bf273541b676716d1ca7627a17e4c4070a3a16272b7a3dc7da3b9f3f6b7" url: "https://pub.dev" source: hosted - version: "1.29.0" + version: "1.26.3" test_api: dependency: transitive description: name: test_api - sha256: "93167629bfc610f71560ab9312acdda4959de4df6fac7492c89ff0d3886f6636" + sha256: ab2726c1a94d3176a45960b6234466ec367179b87dd74f1611adb1f3b5fb9d55 url: "https://pub.dev" source: hosted - version: "0.7.9" + version: "0.7.7" test_core: dependency: transitive description: name: test_core - sha256: "394f07d21f0f2255ec9e3989f21e54d3c7dc0e6e9dbce160e5a9c1a6be0e2943" + sha256: "0cc24b5ff94b38d2ae73e1eb43cc302b77964fbf67abad1e296025b78deb53d0" url: "https://pub.dev" source: hosted - version: "0.6.15" + version: "0.6.12" textfield_tags: dependency: "direct main" description: @@ -1695,5 +1615,5 @@ packages: source: hosted version: "2.2.2" sdks: - dart: ">=3.10.0-0 <4.0.0" + dart: ">=3.9.0 <4.0.0" flutter: ">=3.35.0" diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index 7bbcffce..9d16245a 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -6,7 +6,6 @@ #include "generated_plugin_registrant.h" -#include #include #include #include @@ -14,8 +13,6 @@ #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 79ba045e..50ed42d3 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -3,7 +3,6 @@ # list(APPEND FLUTTER_PLUGIN_LIST - app_links connectivity_plus file_selector_windows flutter_timezone From 96cfa1ee5d1c58e906436242b226daf5c0966f3b Mon Sep 17 00:00:00 2001 From: bhola-dev58 Date: Sun, 8 Mar 2026 17:12:00 +0530 Subject: [PATCH 8/9] resolve merge conflicts in lib/main.dart --- lib/main.dart | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 7fbb4e5e..2ae7fdce 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -36,28 +36,31 @@ ExternalLibrary loadNativeLibrary() { 'Platform ${Platform.operatingSystem} is not supported'); } -void main() async { - // Update to support all Desktops +void main() async { if (!kIsWeb && (Platform.isLinux || Platform.isWindows || Platform.isMacOS)) { - // Initialize sqflite for Linux sqfliteFfiInit(); databaseFactory = databaseFactoryFfi; } + WidgetsFlutterBinding.ensureInitialized(); + debugPrint = (String? message, {int? wrapWidth}) { if (message != null) { debugPrintSynchronously(message, wrapWidth: wrapWidth); _logDatabaseHelper.insertLog(message); } }; + debugPrint("🚀 BOOT: main() started"); final lib = loadNativeLibrary(); await RustLib.init(externalLibrary: lib); - - WidgetsFlutterBinding.ensureInitialized(); await AppSettings.init(); - - Get.put(DeepLinkService(), permanent: true); + + await Get.putAsync(() async { + final service = DeepLinkService(); + await service.init(); + return service; + }); runApp( GetMaterialApp( darkTheme: darkTheme, From 3e25972feacaa32e3e9a3ce1dada779901cc15ab Mon Sep 17 00:00:00 2001 From: bhola-dev58 Date: Sun, 8 Mar 2026 18:07:35 +0530 Subject: [PATCH 9/9] fix: typo in main function declaration --- lib/main.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/main.dart b/lib/main.dart index 475a97cd..ea0a4c36 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -36,7 +36,7 @@ ExternalLibrary loadNativeLibrary() { 'Platform ${Platform.operatingSystem} is not supported'); } -oid main() async { +void main() async { // 1. Keep your Desktop SQLite fix if (!kIsWeb && (Platform.isLinux || Platform.isWindows || Platform.isMacOS)) { sqfliteFfiInit();