From 782bce65373723a6a9d6477c721df027ddb46332 Mon Sep 17 00:00:00 2001 From: franzap <_@franzap.com> Date: Thu, 22 Feb 2024 14:21:21 -0300 Subject: [PATCH] Make Android work --- .fvm/flutter_sdk | 1 - .fvm/fvm_config.json | 4 - .gitignore | 2 + .metadata | 30 ++-- README.md | 8 +- analysis_options.yaml | 38 ++-- android/app/build.gradle | 6 +- android/app/src/main/AndroidManifest.xml | 52 +++++- .../com/example/zapstore/MainActivity.kt | 5 +- .../main/res/mipmap-hdpi/launcher_icon.png | Bin 0 -> 4633 bytes .../main/res/mipmap-mdpi/launcher_icon.png | Bin 0 -> 2674 bytes .../main/res/mipmap-xhdpi/launcher_icon.png | Bin 0 -> 7193 bytes .../main/res/mipmap-xxhdpi/launcher_icon.png | Bin 0 -> 14501 bytes .../main/res/mipmap-xxxhdpi/launcher_icon.png | Bin 0 -> 18611 bytes android/app/src/main/res/xml/file_paths.xml | 4 + android/build.gradle | 12 -- android/gradle.properties | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- android/settings.gradle | 5 +- lib/main.dart | 10 -- lib/screens/search_screen.dart | 27 +++ linux/CMakeLists.txt | 2 +- linux/flutter/generated_plugin_registrant.cc | 8 - linux/flutter/generated_plugins.cmake | 2 - linux/my_application.cc | 25 ++- macos/._Runner.xcodeproj | Bin 4096 -> 0 bytes macos/Flutter/GeneratedPluginRegistrant.swift | 4 - macos/Podfile.lock | 12 -- macos/Runner.xcodeproj/._project.xcworkspace | Bin 4096 -> 0 bytes macos/Runner.xcodeproj/project.pbxproj | 131 +++++++------- .../xcshareddata/xcschemes/Runner.xcscheme | 10 +- macos/Runner/._Info.plist | Bin 4096 -> 0 bytes macos/Runner/Configs/AppInfo.xcconfig | 4 +- pubspec.lock | 170 +++++++++--------- pubspec.yaml | 58 ++++-- 35 files changed, 357 insertions(+), 277 deletions(-) delete mode 120000 .fvm/flutter_sdk delete mode 100644 .fvm/fvm_config.json create mode 100644 android/app/src/main/res/mipmap-hdpi/launcher_icon.png create mode 100644 android/app/src/main/res/mipmap-mdpi/launcher_icon.png create mode 100644 android/app/src/main/res/mipmap-xhdpi/launcher_icon.png create mode 100644 android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png create mode 100644 android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png create mode 100644 android/app/src/main/res/xml/file_paths.xml delete mode 100644 macos/._Runner.xcodeproj delete mode 100644 macos/Runner.xcodeproj/._project.xcworkspace delete mode 100644 macos/Runner/._Info.plist diff --git a/.fvm/flutter_sdk b/.fvm/flutter_sdk deleted file mode 120000 index d0e2938..0000000 --- a/.fvm/flutter_sdk +++ /dev/null @@ -1 +0,0 @@ -/home/admin/fvm/versions/3.16.9 \ No newline at end of file diff --git a/.fvm/fvm_config.json b/.fvm/fvm_config.json deleted file mode 100644 index 3e71957..0000000 --- a/.fvm/fvm_config.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "flutterSdkVersion": "3.16.9", - "flavors": {} -} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 3819c4b..3cf932a 100644 --- a/.gitignore +++ b/.gitignore @@ -42,4 +42,6 @@ app.*.map.json /android/app/profile /android/app/release +/tmp /flutter_data +.fvm/ \ No newline at end of file diff --git a/.metadata b/.metadata index b5c370f..24a13c1 100644 --- a/.metadata +++ b/.metadata @@ -4,7 +4,7 @@ # This file should be version controlled and should not be manually edited. version: - revision: "41456452f29d64e8deb623a3c927524bcf9f111b" + revision: "bae5e49bc2a867403c43b2aae2de8f8c33b037e4" channel: "stable" project_type: app @@ -13,26 +13,26 @@ project_type: app migration: platforms: - platform: root - create_revision: 41456452f29d64e8deb623a3c927524bcf9f111b - base_revision: 41456452f29d64e8deb623a3c927524bcf9f111b + create_revision: bae5e49bc2a867403c43b2aae2de8f8c33b037e4 + base_revision: bae5e49bc2a867403c43b2aae2de8f8c33b037e4 - platform: android - create_revision: 41456452f29d64e8deb623a3c927524bcf9f111b - base_revision: 41456452f29d64e8deb623a3c927524bcf9f111b + create_revision: bae5e49bc2a867403c43b2aae2de8f8c33b037e4 + base_revision: bae5e49bc2a867403c43b2aae2de8f8c33b037e4 - platform: ios - create_revision: 41456452f29d64e8deb623a3c927524bcf9f111b - base_revision: 41456452f29d64e8deb623a3c927524bcf9f111b + create_revision: bae5e49bc2a867403c43b2aae2de8f8c33b037e4 + base_revision: bae5e49bc2a867403c43b2aae2de8f8c33b037e4 - platform: linux - create_revision: 41456452f29d64e8deb623a3c927524bcf9f111b - base_revision: 41456452f29d64e8deb623a3c927524bcf9f111b + create_revision: bae5e49bc2a867403c43b2aae2de8f8c33b037e4 + base_revision: bae5e49bc2a867403c43b2aae2de8f8c33b037e4 - platform: macos - create_revision: 41456452f29d64e8deb623a3c927524bcf9f111b - base_revision: 41456452f29d64e8deb623a3c927524bcf9f111b + create_revision: bae5e49bc2a867403c43b2aae2de8f8c33b037e4 + base_revision: bae5e49bc2a867403c43b2aae2de8f8c33b037e4 - platform: web - create_revision: 41456452f29d64e8deb623a3c927524bcf9f111b - base_revision: 41456452f29d64e8deb623a3c927524bcf9f111b + create_revision: bae5e49bc2a867403c43b2aae2de8f8c33b037e4 + base_revision: bae5e49bc2a867403c43b2aae2de8f8c33b037e4 - platform: windows - create_revision: 41456452f29d64e8deb623a3c927524bcf9f111b - base_revision: 41456452f29d64e8deb623a3c927524bcf9f111b + create_revision: bae5e49bc2a867403c43b2aae2de8f8c33b037e4 + base_revision: bae5e49bc2a867403c43b2aae2de8f8c33b037e4 # User provided section diff --git a/README.md b/README.md index 981e296..259d166 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,3 @@ # zapstore - - test on macos - - drop file - - compute sha256 and query nostr by `x` - - install button - - downloads file (to whwatever the downloads provider is) - - checks sha256 with crypto and updates statenotifier bool state - - display if matches (green) or not (red) \ No newline at end of file + diff --git a/analysis_options.yaml b/analysis_options.yaml index 97caa06..0d29021 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -1,12 +1,28 @@ -# include: package:pedantic/analysis_options.yaml +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. -analyzer: - errors: - # allow for asset_does_not_exist - unrecognized_error_code: ignore - # ignore this in pubspec.yaml - asset_does_not_exist: ignore - always_declare_return_types: ignore - not_a_type: ignore - duplicate_ignore: ignore - invalid_annotation_target: ignore +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +include: package:flutter_lints/flutter.yaml + +linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at https://dart.dev/lints. + # + # Instead of disabling a lint rule for the entire project in the + # section below, it can also be suppressed for a single line of code + # or a specific dart file by using the `// ignore: name_of_lint` and + # `// ignore_for_file: name_of_lint` syntax on the line or in the file + # producing the lint. + rules: + # avoid_print: false # Uncomment to disable the `avoid_print` rule + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/android/app/build.gradle b/android/app/build.gradle index 1f7da28..ba6ef21 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -23,8 +23,8 @@ if (flutterVersionName == null) { } android { - namespace "com.example.zapstore" - compileSdkVersion flutter.compileSdkVersion + namespace "store.zap.app" + compileSdk flutter.compileSdkVersion ndkVersion flutter.ndkVersion compileOptions { @@ -42,7 +42,7 @@ android { defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). - applicationId "com.example.zapstore" + applicationId "store.zap.app" // You can update the following values to match your application needs. // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. minSdkVersion 21 diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 14a878f..c2fe2f6 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,8 +1,11 @@ - + + android:icon="@mipmap/launcher_icon" + android:requestLegacyExternalStorage="true"> + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android/app/src/main/kotlin/com/example/zapstore/MainActivity.kt b/android/app/src/main/kotlin/com/example/zapstore/MainActivity.kt index 5d11c80..ad00ff8 100644 --- a/android/app/src/main/kotlin/com/example/zapstore/MainActivity.kt +++ b/android/app/src/main/kotlin/com/example/zapstore/MainActivity.kt @@ -1,6 +1,5 @@ -package com.example.zapstore +package store.zap.app import io.flutter.embedding.android.FlutterActivity -class MainActivity: FlutterActivity() { -} +class MainActivity: FlutterActivity() diff --git a/android/app/src/main/res/mipmap-hdpi/launcher_icon.png b/android/app/src/main/res/mipmap-hdpi/launcher_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2a826a4c98a433c432288c74361f6de4c41978e2 GIT binary patch literal 4633 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 P00000NkvXXu0mjfVByR7 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-mdpi/launcher_icon.png b/android/app/src/main/res/mipmap-mdpi/launcher_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..0b18a3d7041d0517a9b45721929b922bf9ca551c GIT binary patch literal 2674 zcmV-&3XS!NP)EX>4Tx0C=2zkv&MmP!xqvQ>7vmK|6>zWT;MdQBlWQg(6f4wL+^7CNKSiCJjl7 zi=*ILaPVib>fqw6tAnc`2>yULJ2)x2NQw6)g%&Yhc)XAE?m4`7A0RX;OtZS;fTr7K zI++l&xm7Xr3IPFxF@PDFS;m|srQlm%_tZ;u7vov}eScP;nztAb5Q*c=Fm2)u;^|G> z;Ji;9VI^55J|`YG>4L3T(9-fQ z1q`}m1q#`!0YxYfH!HY6H%7LB{A-@aRVmn1E0%^#waAXtZ_rp z2rIVG#RWwI)Y{P&`m&E{r!)8W+?jjM`Oo7{i<;e-Jq>fu-1GXr|Ns8~oI95&e9uet ze+}T`v(GH|_u8DN{XqwrKHEEr@8Zhfv6ByfZ3j4}_}djWa}Erbk(sVUi}s!Vv7R8GBQ^1_=E@rF07 z1jf!OPrhbJD1nm7n&sS> zNOeoV3lC6GgdmTP)@}!`nt^b~;xs&Y(6wYtjgYAylBwkAXvMtww3|Y}Ev(2xO*XvB zQ>k=6-F$#}C)?rUwk&~Fa}ip)Jb1H-XEY)alHp{UPz|H&Ew5x!H~~LUBmrp(Zgo(= z>kCs4WC`%{>qQ73#Q{#YbIYPMu%;?;uLlc#wbvI%_wJx2Hx;Q(1Netn>WhuyuDC>$PrF7ofydux;OkWFCKQ_hm#TJO*ILe??w2m z(|m}hb6eZ!y#UjQJ2C2(5aiT5^mOW%G_&Z_?*TmV%dEa>nNfgPG-ys$-Haxpa`PucvS&v0Q|Nbig!~ zQi9?$u-J}zgoV@DvqemjxO@VMOLE#2^5GzbS8d+HKteeP2ofBb_K=Ol0yJC5OobV} zKf|Q7VYytYyu@Lf9YXg2K-GA*iFG3k4AHe@+OSDSNL%rSg@E7Yr#y#))%K?_&_L>b z^PVPzm2(j0OqL`z*F`c%jw>cQu9UMk+vu_fD=XBqjsPPc$UhXeuRZWX9gT%!MVh9Vjc- zXU>*n%756ACenW_K#QShe2glHEm=*FP=Yq7Q(0D5IvLG}72h+7q@L+e@d!{1L_U^% z%sfhXdKw#%fF$pi^?yyl`lT-X_)3=@EleVf&7SB__Y#`E72OBx80pnUfbH+JCy|Mx zfE0A4!9?%g1i;pPDL8V@h5J`Vm2~QtrWVfxk73}+ciz`a4~7!J!3#b9L%sPErS5Wa zS1c}QWg7nR9}iB%lW=!!6c$~U^@e}`Io6WS30{$m4xW7^yIT&25=gY4JQ|w~t8Lo0 zf|lIWJt6?p(t+^XSBGKERS{UXG@8l(oqZ}G9lY4F$>c&t{+GUUr$Pw~wI15fCfh8) z8U$$iq}f6xp*%YuS_$8Gb60cvS#2;1QfU^ssG{ZIk}Z6^*7w>6%NR8&{# z(Dj^ef|jgBZXxnI@Nr7Z^}6*{%PYV7@k#nyyOZ%l;&)MlfL}V_+q$9rrd@BKlj&hqkSaT{@-Asj6G0AMQPh+E`d6rks<) zJfuiRlU6X!IkWpfZ{v<%*szAa&Ad}Rxc~qF07*qoM6N<$f|-s7I{*Lx literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png b/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4bd1c35b4417aef90687d1c6d590d74827e11ce3 GIT binary patch literal 7193 zcmV+!9OmPRP)EX>4Tx0C=2zkv&MmP!xqvQ>7vmK|6>zWT;MdQBlWQg(6f4wL+^7CNKSiCJjl7 zi=*ILaPVib>fqw6tAnc`2>yULJ2)x2NQw6)g%&Yhc)XAE?m4`7A0RX;OtZS;fTr7K zI++l&xm7Xr3IPFxF@PDFS;m|srQlm%_tZ;u7vov}eScP;nztAb5Q*c=Fm2)u;^|G> z;Ji;9VI^55J|`YG>4Lgs@b?3gP9ow?JNV1KW zu-F)k0b|U7<61Hp!b}Scq)k{lBm`(DVQCA2OfnSFkY*sINl7RnZD=}epi>AT%>ppRt+Gd|Kpb!q!}SeySbKL+LLgJ5uSM9d zn4p)C$v**TzIZ$^W>I{F$bqbx3{~ge)znx&=l7kjKRmIcearq5$>qSX8BjB}aq;x# zJ6pz_b$v{HZa%DNgy8X`Ie;Y~_VB^>6nPy&NAOiE`i zg#o!AzfM^SV-`=?cVyXJO}z(q4$CABivgp?PhWh-bw6pXY@8Q<$~nkdbOpP^uDH`R zvdm3}YS*{5CP?Y%6n4It_>yT@@=?;kdM&azS~Q*$t((h(oOmwOU-@KfSKB?;9o+ir zlYF*fFk}Wyn)|2sed;scY$>lhg_>>_S#ThdLoO`Q?I)k90!&>{aZ^H4zkyHY6I`m% zno={C5#3`lk!Vo#BdD1KW0pSl)2fx<{M??^&s>p;j0c9qfSH$kb$R2WyPFbwPlEllR{`Qw2ybVf(k{NLF!W)(~e)_8+@vH3Gj<91!Nahf2PrV5$``o5;PM}L^7fu*r zC78thY%W8*#6b{@kQ;ZxU%f;ikr9)8Sooo=1`4xoy0yMPn6vkl?=(XRP!a=97&mos zW7F4{LU}bImcax|H6{#GeLj|4`J_GuEpawvBvOdhF>Qjc?PsK8R+vIz0do8e`oQ;9 zarzBSwY%T^dgtcWe}p1X5(8#m_3-lisL2l3k${j5U}PollXtn2x!lG-ci$`{({^8W$$Z` z+>td$Q3gzFx~m2970Aq(-B>hI%m*<;lJ=EsoSOiFEnV2*OxmLcq2`j>wBreYxMiW^ ze&Dk>SJw6m2m*>2=a0+!q@{fJ^|!;(Fks@0v#+f@@j|s1YiDsG!E3u2p$Vt3^mP~GQK69BH6AHa(D z1+>1ObM2Lbll2z_KW#!?E;y5LC+(yOhC?zbRUqq7d+NnE51Rpvr(bd{4<6Jc-God<;UC7RV<=g_CKO=xsCjz|NE?{>j(>6A*6Tg%67!j9X!NO;P5*tB^ zfzh~t@HD8MJ;m81f@}?#blyz8d0ZwV$a?EMtX|I~3#+rYmapeP!mnqotxi6SI|1Nt zmlUAo*Eu-cFVLLS%y5i=2m;Ct9NhFc*W_s2v49|QkiJ39iBMTPWpQ8UE^n
    rl` zo_>3-rrx#R%1-NRK<&N_VC1E9-+mx=mMH=5zHyI$bEYPZXH1sxz~u$_*7JGTcL;UM zve$95ROZkhXAyHnhO_$;92_-6jc*dMAU6$}0cEu_>a6Xx1Q!fJEC8IiIR3`vId3Y@ zObwQL^B&@{sXZ$G*{onz1Hj*06hO zzD|Qw2E@`&kS2IAzvb3k%uQ)4HrOoKYix#a-9_7<=oKG0Y1!;5k2I$-Y?Xzl3V^gT0UPqkD08xH|{gBYnZY3jA zp^_tXqea*>)8k2J9srW#YN_k)1NiVDz|=b0|MT-Dtl1@D?Jhk6X#ti1l$7DZ9Zu+c zrZuSr>1%Cf^iq_e)K^HTtee`DMz0JfEHiAOp^D?|c*sZWB}n2_NiHn$hTM7&zTOo2 zfvI(raTVcC?z}jFJN{Qd=MhE&gPSmB!br9-Xel4%j&$jeE`VfXQhmtip1}ZAeb6ts zih$H26(^4!HL^m?GBW&{FvPY}#=o~$z|z_7f|F_iZflnC?H2?L7WmSV%;Sr`DC)>m zB7*wN6=xhh`@rVPg;WM4Pch(y5GNI9DKb<_IYT_kM6MkZ?5p1>>0SF#`i>Tz0o#Znx0D@HF?8o4`dhP zkTiN~jX;Rc2?(57%(*cpnT52ea70MkY!N%dZ3h5mHu%x5DhIgkdxgkcujffyu~pDD6Z{CXu&QVp1u?D1s%lpZ#W=O6*CzZ!8^Slxucj z>j4omAbor1P6IeE{P+4+jhRI2X=jWz)MdIRs@71U_GTg{t_e<^Ocv$95KNGkb{wnY z&e9oU&Umr(OJEx}RQDyWsW^SG58%=a+#~aJ+Y*2+PYY=8(v#Xe)tMKs8xb- zMMYr-6q=%eK_#_lYu*hrdryc?(_Z4c2!+@pK89;ZXMo<^jqA-Sf-N-EUKB?G(j3^c1k9I z#&Xk%?xaC_7>XT_FL{!zH~XwNhgX;M#Wd1WDr%RVYxQ0p627Z9sfreZ8!r@LRFp(U zc0TT_kS3xBVTr&xEwq{g%hV5>8lpwYzG}n{_h+p>@^H~<0t#U~{ezc-*nDAualVV7 zK2XaljlkIosV5>dVCv$jkl_O?GKoM4dsgc?$0bGr8BM+cb4w&ewYK*~NSF)^M;IS zd*-l*Rt87%piytZ7%Oq#0tps?*{k#flh)nay~84O}J{B;Rir{gC+cL z*Fk{)c}u`e3qLt6h~P_~&cW)PL1>DwrqVu+tYJR}o>1IqlCr@f+qMp&7DOW%<8btH zHf=Nko-JK?>PLo$$;B_%&TaxvFcXepoGU(DqZjLQj9P*kH^ItGz)eNQe7n z*q=PZ!SG~tFm*Ha7}L2U@@;�Rj2RjkWHGSXQ|4}OT3P9cF0 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 b#~A(}JEH5G0-+zH00000NkvXXu0mjfzqXHd literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png b/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..80562f2dc2d17e3f15a5aa9814466106c0a26436 GIT binary patch literal 14501 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 D7sm%1 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png b/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..666b56b4d8503d1ae962356a21e133654d4cb733 GIT binary patch literal 18611 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 Hu0mjf7G^u% literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/xml/file_paths.xml b/android/app/src/main/res/xml/file_paths.xml new file mode 100644 index 0000000..ffa74ab --- /dev/null +++ b/android/app/src/main/res/xml/file_paths.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/android/build.gradle b/android/build.gradle index 802640d..bc157bd 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,15 +1,3 @@ -buildscript { - ext.kotlin_version = '1.9.22' - repositories { - google() - mavenCentral() - } - - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - allprojects { repositories { google() diff --git a/android/gradle.properties b/android/gradle.properties index 8a922dd..598d13f 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -1,3 +1,3 @@ org.gradle.jvmargs=-Xmx4G android.useAndroidX=true -android.enableJetifier=true \ No newline at end of file +android.enableJetifier=true diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 3c472b9..e1ca574 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.3-all.zip diff --git a/android/settings.gradle b/android/settings.gradle index 7cd7128..1d6d19b 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -15,15 +15,12 @@ pluginManagement { mavenCentral() gradlePluginPortal() } - - plugins { - id "dev.flutter.flutter-gradle-plugin" version "1.0.0" apply false - } } plugins { id "dev.flutter.flutter-plugin-loader" version "1.0.0" id "com.android.application" version "7.3.0" apply false + id "org.jetbrains.kotlin.android" version "1.7.10" apply false } include ":app" diff --git a/lib/main.dart b/lib/main.dart index 8dba38c..482aeb5 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:bitsdojo_window/bitsdojo_window.dart'; import 'package:flutter_data/flutter_data.dart'; import 'package:go_router/go_router.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; @@ -20,15 +19,6 @@ void main() { child: const ZapstoreApp(), ), ); - appWindow.show(); - doWhenWindowReady(() { - final win = appWindow; - const initialSize = Size(200, 350); - win.minSize = initialSize; - win.size = initialSize; - win.alignment = Alignment.center; - win.show(); - }); } class ZapstoreApp extends StatelessWidget { diff --git a/lib/screens/search_screen.dart b/lib/screens/search_screen.dart index 910dfaf..5e36fc6 100644 --- a/lib/screens/search_screen.dart +++ b/lib/screens/search_screen.dart @@ -1,18 +1,22 @@ import 'dart:io'; import 'dart:math'; +import 'package:android_package_installer/android_package_installer.dart'; import 'package:crypto/crypto.dart'; import 'package:expansion_tile_card/expansion_tile_card.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_data/flutter_data.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:go_router/go_router.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; +import 'package:path_provider/path_provider.dart'; import 'package:zapstore/models/file_metadata.dart'; import 'package:zapstore/models/user.dart'; import 'package:zapstore/screens/profile_screen.dart'; import 'package:http/http.dart' as http; import 'package:path/path.dart' as path; +import 'package:permission_handler/permission_handler.dart'; import '../main.data.dart'; @@ -31,6 +35,29 @@ class SearchScreen extends HookConsumerWidget { padding: const EdgeInsets.all(12.0), child: Column( children: [ + TextButton( + onPressed: () async { + var status = await Permission.storage.status; + if (!status.isGranted) { + // If not we will ask for permission first + await Permission.storage.request(); + } + final apk = await rootBundle.load('tmp/gg.apk'); + final dir = await getApplicationDocumentsDirectory(); + await dir.create(recursive: true); + final buffer = apk.buffer; + await File('${dir.path}/gg.apk').writeAsBytes( + buffer.asUint8List(apk.offsetInBytes, apk.lengthInBytes)); + + int? code = await AndroidPackageInstaller.installApk( + apkFilePath: '${dir.path}/gg.apk'); + if (code != null) { + PackageInstallerStatus installationStatus = + PackageInstallerStatus.byCode(code); + print(installationStatus.name); + } + }, + child: Text('install')), SearchBar( elevation: MaterialStatePropertyAll(2.2), onSubmitted: (query) async { diff --git a/linux/CMakeLists.txt b/linux/CMakeLists.txt index 7331aa0..1c502cf 100644 --- a/linux/CMakeLists.txt +++ b/linux/CMakeLists.txt @@ -9,7 +9,7 @@ project(runner LANGUAGES CXX) set(BINARY_NAME "zapstore") # The unique GTK application identifier for this application. See: # https://wiki.gnome.org/HowDoI/ChooseApplicationID -set(APPLICATION_ID "com.example.zapstore") +set(APPLICATION_ID "store.zap.app") # Explicitly opt in to modern CMake behaviors to avoid warnings with recent # versions of CMake. diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc index 66ce9d5..e7a91ff 100644 --- a/linux/flutter/generated_plugin_registrant.cc +++ b/linux/flutter/generated_plugin_registrant.cc @@ -6,19 +6,11 @@ #include "generated_plugin_registrant.h" -#include -#include #include #include #include void fl_register_plugins(FlPluginRegistry* registry) { - g_autoptr(FlPluginRegistrar) bitsdojo_window_linux_registrar = - fl_plugin_registry_get_registrar_for_plugin(registry, "BitsdojoWindowPlugin"); - bitsdojo_window_plugin_register_with_registrar(bitsdojo_window_linux_registrar); - g_autoptr(FlPluginRegistrar) desktop_drop_registrar = - fl_plugin_registry_get_registrar_for_plugin(registry, "DesktopDropPlugin"); - desktop_drop_plugin_register_with_registrar(desktop_drop_registrar); g_autoptr(FlPluginRegistrar) handy_window_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "HandyWindowPlugin"); handy_window_plugin_register_with_registrar(handy_window_registrar); diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake index 5b15847..dd5b86a 100644 --- a/linux/flutter/generated_plugins.cmake +++ b/linux/flutter/generated_plugins.cmake @@ -3,8 +3,6 @@ # list(APPEND FLUTTER_PLUGIN_LIST - bitsdojo_window_linux - desktop_drop handy_window screen_retriever window_manager diff --git a/linux/my_application.cc b/linux/my_application.cc index 2cd9bf2..516d3ca 100644 --- a/linux/my_application.cc +++ b/linux/my_application.cc @@ -1,5 +1,4 @@ #include "my_application.h" -#include #include #ifdef GDK_WINDOWING_X11 @@ -48,9 +47,7 @@ static void my_application_activate(GApplication* application) { gtk_window_set_title(window, "zapstore"); } - auto bdw = bitsdojo_window_from(window); - bdw->setCustomFrame(true); - // gtk_window_set_default_size(window, 300, 520); + gtk_window_set_default_size(window, 1280, 720); gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); @@ -84,6 +81,24 @@ static gboolean my_application_local_command_line(GApplication* application, gch return TRUE; } +// Implements GApplication::startup. +static void my_application_startup(GApplication* application) { + //MyApplication* self = MY_APPLICATION(object); + + // Perform any actions required at application startup. + + G_APPLICATION_CLASS(my_application_parent_class)->startup(application); +} + +// Implements GApplication::shutdown. +static void my_application_shutdown(GApplication* application) { + //MyApplication* self = MY_APPLICATION(object); + + // Perform any actions required at application shutdown. + + G_APPLICATION_CLASS(my_application_parent_class)->shutdown(application); +} + // Implements GObject::dispose. static void my_application_dispose(GObject* object) { MyApplication* self = MY_APPLICATION(object); @@ -94,6 +109,8 @@ static void my_application_dispose(GObject* object) { static void my_application_class_init(MyApplicationClass* klass) { G_APPLICATION_CLASS(klass)->activate = my_application_activate; G_APPLICATION_CLASS(klass)->local_command_line = my_application_local_command_line; + G_APPLICATION_CLASS(klass)->startup = my_application_startup; + G_APPLICATION_CLASS(klass)->shutdown = my_application_shutdown; G_OBJECT_CLASS(klass)->dispose = my_application_dispose; } diff --git a/macos/._Runner.xcodeproj b/macos/._Runner.xcodeproj deleted file mode 100644 index 413a6a91d24207188573b0552b76bfcc0df8540e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103v`v3pm z5r__k1wiEjXj&M7e5kloa(=E}VnIPps$NcFaY<=$YD!9CNvd){Fi6jmpGQ(b^t+>C zRv>y5jE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mk0Im=Kbv8j54CF#GGK&?8 zQj7CTi;`0n((;S46*BWmQu9hO^YapOaw-*aQqxKll5!IBvVnbJsIDPRq52>06&VJ( G|Nj9k$S#Ng diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index e9efaa4..3e13b0f 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,15 +5,11 @@ import FlutterMacOS import Foundation -import bitsdojo_window_macos -import desktop_drop import path_provider_foundation import screen_retriever import window_manager func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { - BitsdojoWindowPlugin.register(with: registry.registrar(forPlugin: "BitsdojoWindowPlugin")) - DesktopDropPlugin.register(with: registry.registrar(forPlugin: "DesktopDropPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) ScreenRetrieverPlugin.register(with: registry.registrar(forPlugin: "ScreenRetrieverPlugin")) WindowManagerPlugin.register(with: registry.registrar(forPlugin: "WindowManagerPlugin")) diff --git a/macos/Podfile.lock b/macos/Podfile.lock index 47608a9..3a96bf1 100644 --- a/macos/Podfile.lock +++ b/macos/Podfile.lock @@ -1,8 +1,4 @@ PODS: - - bitsdojo_window_macos (0.0.1): - - FlutterMacOS - - desktop_drop (0.0.1): - - FlutterMacOS - FlutterMacOS (1.0.0) - path_provider_foundation (0.0.1): - Flutter @@ -13,18 +9,12 @@ PODS: - FlutterMacOS DEPENDENCIES: - - bitsdojo_window_macos (from `Flutter/ephemeral/.symlinks/plugins/bitsdojo_window_macos/macos`) - - desktop_drop (from `Flutter/ephemeral/.symlinks/plugins/desktop_drop/macos`) - FlutterMacOS (from `Flutter/ephemeral`) - path_provider_foundation (from `Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin`) - screen_retriever (from `Flutter/ephemeral/.symlinks/plugins/screen_retriever/macos`) - window_manager (from `Flutter/ephemeral/.symlinks/plugins/window_manager/macos`) EXTERNAL SOURCES: - bitsdojo_window_macos: - :path: Flutter/ephemeral/.symlinks/plugins/bitsdojo_window_macos/macos - desktop_drop: - :path: Flutter/ephemeral/.symlinks/plugins/desktop_drop/macos FlutterMacOS: :path: Flutter/ephemeral path_provider_foundation: @@ -35,8 +25,6 @@ EXTERNAL SOURCES: :path: Flutter/ephemeral/.symlinks/plugins/window_manager/macos SPEC CHECKSUMS: - bitsdojo_window_macos: 44e3b8fe3dd463820e0321f6256c5b1c16bb6a00 - desktop_drop: 69eeff437544aa619c8db7f4481b3a65f7696898 FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24 path_provider_foundation: 3784922295ac71e43754bd15e0653ccfd36a147c screen_retriever: 59634572a57080243dd1bf715e55b6c54f241a38 diff --git a/macos/Runner.xcodeproj/._project.xcworkspace b/macos/Runner.xcodeproj/._project.xcworkspace deleted file mode 100644 index 8ee0efff416aca8e7eebb8a5b7c8a9ec703040af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103v`v3pm zF^CR^1wiEjXj&M7e5kloa(=E}VnIPps$NcFaY<=$YD!9CNvd){Fi4O0_amtw`t*d! z`XG7~jE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mk0Im=Kbv8j54CF#GGK&?8 zQj7CTi;`0n((;S46*BWmQu9hO^YapOaw-*aQqxKll5!IBvVnbJsIDPRq52>06&VJ( G|NjAG1TIMc diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj index 1ba06d8..23d166f 100644 --- a/macos/Runner.xcodeproj/project.pbxproj +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -27,8 +27,8 @@ 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; - 7905B207FA14F8336C44FCFC /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E609CE85D30784348A07606D /* Pods_Runner.framework */; }; - CD6901979657B8DA42270DDA /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D304ADF7F21235809DB8EE25 /* Pods_RunnerTests.framework */; }; + E47EF6F5916311F4DF1FE604 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 35CF597B589791056A2F564B /* Pods_RunnerTests.framework */; }; + F7E68736127D0A67D2DD88D5 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 384CB716B84222C0E8B1B985 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,12 +62,11 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 2824592934FBDBF99F6022AE /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; 331C80D5294CF71000263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; - 33CC10ED2044A3C60003C045 /* zap.store.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = zap.store.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 33CC10ED2044A3C60003C045 /* zapstore.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = zapstore.app; sourceTree = BUILT_PRODUCTS_DIR; }; 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = ""; }; 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; @@ -79,15 +78,16 @@ 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; - 56DC73F8255610773AF42D1C /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + 35CF597B589791056A2F564B /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 384CB716B84222C0E8B1B985 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 41A708303D4B7B5905D46A1F /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + 687E6D5F4AE68B1F6CB94612 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; + 6E9200766B12905B9ABE8A04 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 7FCA0751E4EC8E96DD9A7544 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; - 84D09CD47A9EC98D3F9992A8 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - AA17E2A04B7FFCC2983D74C4 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; - D304ADF7F21235809DB8EE25 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - DBC250B0284B7D94A664AEB7 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; - E609CE85D30784348A07606D /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A3DCEB97D9AF2744A0780D7F /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; + D7EDE1F5D6A2259DFE6F304E /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; + EBA13E7288B3B1EA6CA502DC /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - CD6901979657B8DA42270DDA /* Pods_RunnerTests.framework in Frameworks */, + E47EF6F5916311F4DF1FE604 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 7905B207FA14F8336C44FCFC /* Pods_Runner.framework in Frameworks */, + F7E68736127D0A67D2DD88D5 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,14 +137,14 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - C6031C857058FD0E9F282DDF /* Pods */, + 5DB4FEC2CA85622D45FFDD28 /* Pods */, ); sourceTree = ""; }; 33CC10EE2044A3C60003C045 /* Products */ = { isa = PBXGroup; children = ( - 33CC10ED2044A3C60003C045 /* zap.store.app */, + 33CC10ED2044A3C60003C045 /* zapstore.app */, 331C80D5294CF71000263BE5 /* RunnerTests.xctest */, ); name = Products; @@ -185,24 +185,25 @@ path = Runner; sourceTree = ""; }; - C6031C857058FD0E9F282DDF /* Pods */ = { + 5DB4FEC2CA85622D45FFDD28 /* Pods */ = { isa = PBXGroup; children = ( - 56DC73F8255610773AF42D1C /* Pods-Runner.debug.xcconfig */, - DBC250B0284B7D94A664AEB7 /* Pods-Runner.release.xcconfig */, - 84D09CD47A9EC98D3F9992A8 /* Pods-Runner.profile.xcconfig */, - AA17E2A04B7FFCC2983D74C4 /* Pods-RunnerTests.debug.xcconfig */, - 2824592934FBDBF99F6022AE /* Pods-RunnerTests.release.xcconfig */, - 7FCA0751E4EC8E96DD9A7544 /* Pods-RunnerTests.profile.xcconfig */, + 41A708303D4B7B5905D46A1F /* Pods-Runner.debug.xcconfig */, + 6E9200766B12905B9ABE8A04 /* Pods-Runner.release.xcconfig */, + EBA13E7288B3B1EA6CA502DC /* Pods-Runner.profile.xcconfig */, + A3DCEB97D9AF2744A0780D7F /* Pods-RunnerTests.debug.xcconfig */, + 687E6D5F4AE68B1F6CB94612 /* Pods-RunnerTests.release.xcconfig */, + D7EDE1F5D6A2259DFE6F304E /* Pods-RunnerTests.profile.xcconfig */, ); + name = Pods; path = Pods; sourceTree = ""; }; D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - E609CE85D30784348A07606D /* Pods_Runner.framework */, - D304ADF7F21235809DB8EE25 /* Pods_RunnerTests.framework */, + 384CB716B84222C0E8B1B985 /* Pods_Runner.framework */, + 35CF597B589791056A2F564B /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -214,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 0B0B31EB5D9F13CA776A99A8 /* [CP] Check Pods Manifest.lock */, + 8C46C9E8E6C78AFBB27868A5 /* [CP] Check Pods Manifest.lock */, 331C80D1294CF70F00263BE5 /* Sources */, 331C80D2294CF70F00263BE5 /* Frameworks */, 331C80D3294CF70F00263BE5 /* Resources */, @@ -233,13 +234,13 @@ isa = PBXNativeTarget; buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - A8D5F1C0F34CC054BF374B77 /* [CP] Check Pods Manifest.lock */, + 1BC84A1D4A94073C3805D2E5 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - B5EED0E6D41308377D988EE8 /* [CP] Embed Pods Frameworks */, + 4F902C33FAACFD67F0F7EA5C /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -248,7 +249,7 @@ ); name = Runner; productName = Runner; - productReference = 33CC10ED2044A3C60003C045 /* zap.store.app */; + productReference = 33CC10ED2044A3C60003C045 /* zapstore.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ @@ -257,8 +258,9 @@ 33CC10E52044A3C60003C045 /* Project object */ = { isa = PBXProject; attributes = { + BuildIndependentTargetsInParallel = YES; LastSwiftUpdateCheck = 0920; - LastUpgradeCheck = 1430; + LastUpgradeCheck = 1510; ORGANIZATIONNAME = ""; TargetAttributes = { 331C80D4294CF70F00263BE5 = { @@ -321,7 +323,7 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 0B0B31EB5D9F13CA776A99A8 /* [CP] Check Pods Manifest.lock */ = { + 1BC84A1D4A94073C3805D2E5 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -336,7 +338,7 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -381,29 +383,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - A8D5F1C0F34CC054BF374B77 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - B5EED0E6D41308377D988EE8 /* [CP] Embed Pods Frameworks */ = { + 4F902C33FAACFD67F0F7EA5C /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -420,6 +400,28 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; + 8C46C9E8E6C78AFBB27868A5 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -471,13 +473,13 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AA17E2A04B7FFCC2983D74C4 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = A3DCEB97D9AF2744A0780D7F /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.example.zapstore.RunnerTests; + PRODUCT_BUNDLE_IDENTIFIER = store.zap.app.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/zapstore.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/zapstore"; @@ -486,13 +488,13 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2824592934FBDBF99F6022AE /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 687E6D5F4AE68B1F6CB94612 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.example.zapstore.RunnerTests; + PRODUCT_BUNDLE_IDENTIFIER = store.zap.app.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/zapstore.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/zapstore"; @@ -501,13 +503,13 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7FCA0751E4EC8E96DD9A7544 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = D7EDE1F5D6A2259DFE6F304E /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.example.zapstore.RunnerTests; + PRODUCT_BUNDLE_IDENTIFIER = store.zap.app.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/zapstore.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/zapstore"; @@ -519,6 +521,7 @@ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; @@ -542,9 +545,11 @@ CLANG_WARN_SUSPICIOUS_MOVE = YES; CODE_SIGN_IDENTITY = "-"; COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -592,6 +597,7 @@ baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; @@ -615,9 +621,11 @@ CLANG_WARN_SUSPICIOUS_MOVE = YES; CODE_SIGN_IDENTITY = "-"; COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; @@ -645,6 +653,7 @@ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; @@ -668,9 +677,11 @@ CLANG_WARN_SUSPICIOUS_MOVE = YES; CODE_SIGN_IDENTITY = "-"; COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; diff --git a/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index 38b0ccf..d68b669 100644 --- a/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ @@ -31,7 +31,7 @@ @@ -65,7 +65,7 @@ @@ -82,7 +82,7 @@ diff --git a/macos/Runner/._Info.plist b/macos/Runner/._Info.plist deleted file mode 100644 index d98d4d412e6585a0cba4fd0f67c0c4f364e6f570..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103v`v3pm z8Hf&s1wiEjXj&M7e5kloa(=E}VnIPps$NcFaY<=$YD!9CNvd){Fi20xk0Yrdx;-|~ z5JZoH(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@Rz!d_Z&L#+hfm}#NX0bw1 zYH@yPQF5w6T7FTsLS|k`YF=3.2.0 <4.0.0" - flutter: ">=3.13.0" + dart: ">=3.3.0 <4.0.0" + flutter: ">=3.16.0" diff --git a/pubspec.yaml b/pubspec.yaml index b9784a6..04dc60e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -19,14 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: '>=3.2.0 <4.0.0' - -# Dependencies specify other packages that your package needs in order to work. -# To automatically upgrade your package dependencies to the latest versions -# consider running `flutter pub upgrade --major-versions`. Alternatively, -# dependencies can be manually updated by changing the version numbers below to -# the latest version available on pub.dev. To see which dependencies have newer -# versions available, run `flutter pub outdated`. + sdk: '>=3.3.0 <4.0.0' dependencies: flutter: sdk: flutter @@ -36,22 +29,27 @@ dependencies: hooks_riverpod: ^2.4.9 json_annotation: ^4.8.1 flutter_hooks: ^0.20.4 - bitsdojo_window: ^0.1.6 build_runner: ^2.4.8 collection: ^1.18.0 path_provider: ^2.1.2 ndk: ^0.0.1 expansion_tile_card: ^3.0.0 - desktop_drop: ^0.4.4 crypto: ^3.0.3 android_package_installer: ^0.0.2 go_router: ^13.2.0 + permission_handler: ^11.3.0 + path: ^1.9.0 + http: ^1.2.1 dependency_overrides: + android_package_installer: + git: + url: https://github.com/ImranR98/android_package_installer + ref: main ndk: path: ../ndk - flutter_data: - path: ../flutter_data + # flutter_data: + # path: ../flutter_data dev_dependencies: flutter_test: @@ -65,9 +63,6 @@ dev_dependencies: flutter_lints: ^2.0.0 flutter_launcher_icons: "^0.13.1" -# For information on the generic Dart part of this file, see the -# following page: https://dart.dev/tools/pub/pubspec - # The following section is specific to Flutter packages. flutter: @@ -76,9 +71,40 @@ flutter: # the material Icons class. uses-material-design: true - # To add assets to your application, add an assets section, like this: assets: - assets/images/logo.png + - tmp/gg.apk + + # To add assets to your application, add an assets section, like this: + # assets: + # - images/a_dot_burr.jpeg + # - images/a_dot_ham.jpeg + + # An image asset can refer to one or more resolution-specific "variants", see + # https://flutter.dev/assets-and-images/#resolution-aware + + # For details regarding adding assets from package dependencies, see + # https://flutter.dev/assets-and-images/#from-packages + + # To add custom fonts to your application, add a fonts section here, + # in this "flutter" section. Each entry in this list should have a + # "family" key with the font family name, and a "fonts" key with a + # list giving the asset and other descriptors for the font. For + # example: + # fonts: + # - family: Schyler + # fonts: + # - asset: fonts/Schyler-Regular.ttf + # - asset: fonts/Schyler-Italic.ttf + # style: italic + # - family: Trajan Pro + # fonts: + # - asset: fonts/TrajanPro.ttf + # - asset: fonts/TrajanPro_Bold.ttf + # weight: 700 + # + # For details regarding fonts from package dependencies, + # see https://flutter.dev/custom-fonts/#from-packages flutter_launcher_icons: android: "launcher_icon"