From 2910750483f30b42a3743df1ce067f9a33c89467 Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Sun, 22 Dec 2024 01:36:07 +0300 Subject: [PATCH] 12/22/1 --- .gitignore | 2 + android/app/build.gradle | 3 +- android/build.gradle | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- assets/images/7.jpeg | Bin 0 -> 95292 bytes bubble-master/pubspec.lock | 32 +- ios/Podfile | 21 +- ios/Podfile.lock | 408 ++++----- ios/Runner.xcodeproj/project.pbxproj | 92 +- lib/controller/auth/captin/ml_google_doc.dart | 144 ++-- .../captin/register_captin_controller.dart | 2 +- .../firebase/local_notification.dart | 15 +- .../functions/camer_controller.dart | 66 +- lib/controller/functions/gemeni.dart | 180 +++- .../functions/location_controller.dart | 121 +-- .../home/captin/home_captain_controller.dart | 2 +- .../home/captin/map_driver_controller.dart | 2 +- lib/controller/local/translations.dart | 2 +- .../ride_available_controller.dart | 4 +- lib/controller/rate/rate_conroller.dart | 3 +- lib/main.dart | 1 - lib/views/auth/captin/car_license_page.dart | 310 +++---- .../auth/captin/cards/egypt_card_a_i.dart | 304 ++++++- lib/views/home/Captin/camer_widget.dart | 10 +- .../home/Captin/home_captain/home_captin.dart | 276 ++++-- .../Captin/home_captain/widget/connect.dart | 175 ++-- .../mapDriverWidgets/driver_end_ride_bar.dart | 26 +- macos/Flutter/GeneratedPluginRegistrant.swift | 4 +- pubspec.lock | 799 +++++++++--------- pubspec.yaml | 23 +- .../flutter/generated_plugin_registrant.cc | 3 + windows/flutter/generated_plugins.cmake | 1 + 32 files changed, 1804 insertions(+), 1231 deletions(-) create mode 100644 assets/images/7.jpeg diff --git a/.gitignore b/.gitignore index 5256ca2..399ec11 100644 --- a/.gitignore +++ b/.gitignore @@ -5,9 +5,11 @@ *.swp .DS_Store .atom/ +.build/ .buildlog/ .history .svn/ +.swiftpm/ migrate_working_dir/ # IntelliJ related diff --git a/android/app/build.gradle b/android/app/build.gradle index 5e03d06..2e9c36e 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -32,12 +32,13 @@ def keystorePropertiesFile = rootProject.file('key.properties') android { namespace "com.sefer_driver" - compileSdk 34 + compileSdk 35 ndkVersion flutter.ndkVersion compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 + coreLibraryDesugaringEnabled true } kotlinOptions { diff --git a/android/build.gradle b/android/build.gradle index 1c40cd1..44e5be3 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -9,7 +9,7 @@ buildscript { // START: FlutterFire Configuration classpath 'com.google.gms:google-services:4.4.2' // END: FlutterFire Configuration - classpath 'com.android.tools.build:gradle:8.0.0' + classpath 'com.android.tools.build:gradle:8.4.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 887d624..684137a 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -4,4 +4,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-all.zip diff --git a/assets/images/7.jpeg b/assets/images/7.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..3108cb3069ff46d12a47b862cacccde270a8880f GIT binary patch literal 95292 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�xd@Iaf)CPV0&jsV3>k@A{sB{Z{+qC6iw!2<3SQEl0Jlnp`Jy-Jl~eN-vZ z@G&@T=ZF%lc!696u?~leVwy}bb*aD=-Aj~9c|uf2lSJI+(})EN$1rOq^$#932Ce|8 z<`LfFprtL;WIiEG%`f2OfJGFx&O6E)zTg_DM=6S%m1)2(ohA<`SxW_GimxIR0pW|0 zy|##04`m^73K(Y2EB6Q&JVB^fgb{}N#%Q3!gEAmdY%{1wxmv#GDX07uo+1iBf-(3r zl;&YgiCG;$3)Hhr!Q2yq;}lp+?^*kgfQpJFtO8`jbQdm6OAP}qUKrtufe|+eL-m!H zrNJyj9TM|4x~M5haB~F)uZ9aO^D8yEZCr;rgbYd|xfQt72zwZn>AB5#<%(#nFTj*( zVQ}pOI}~sHPC7ggn6QI__NA$%zXzx(DWI_KJDXX^Ku1P>5p)Zjd5f0s`1+a(vlkd% zUQVU~tG9BBZ!g>R0Y$@6O1*X3#8ejc@DK&HDZW_FmGxB=Xor*jBGt;g!cmHI2Myk; z4OM*|KnY84Jj893--&9^D%8MZsHYOtmXU0k6&k_nVJbyc^qaBT4~wYcRQj}V zuX6;qh!;yxzF%_Gnd360ii=RS^8<#HR@}OS>kz^pobXGzyja<`7>uDXU%sjWt z$JEYv4a_)K2~ep?%=5N3mM)ZdzVv+5WDjSJNM!)vG!oC zkeprL{0P)1Z;i0T2=yxQ9R)~w_$MS_ZYAMi>JP-SNq|<&W9TJyDDhmq!?qqjyrEFrxC3M&V*cfD@V65!2A<|CS#{zGODeWpyb<~(>ul5k zQuB4(dNlAnM1fciAa)q1X;67h#$!vcjDmgkIfbBpMAs;+;v50TU<&&fL=Vy z?6!Vlo$d<(9L^~4h(M%yU-2n5nuc~T-0`y)h{A6Vx#WZgZ>&lqERLU$)8V5u`7XW} zvZb6t$$kF-##qk}iwZ1WTzy0s0|u@wFbG-diSd3enCw8e;>+-EJWaD(_!}{t%a@^! zXE32D%Od=jn{A@vi1L_@>^bDH$B#Wsujh8$`vXbV|lBVz`H8D;5>Hx~F2ionQhm-Axq zS2F#w{GlS8>zQG#aSD>}#Orq{Wt@_c2SvbhC^hhE9~exZ0|df*{vsvFeq%6;oy=I} z@)SQKsBM1+GcC~ zZRm>`Zu$m8k;8Ydw;n6&j;mUOeYJnkrEZM^WuCHOH|3+3RI^ai_!p%Mz}*rD7vwJ2&- z18}Go9_5f}Dp1_YU>L#Usew4@wqC{C)CtOfEp9D_m`$aQV#^A19pL+B7=xxV7&yGK zk){VhEbFW<2h=mDC@OC!GXgZ!O7$JUPaB3BH7vEch`6}ioRA}G%&i?7Ifq4qENq2) zR<#p-Hx)vP)fjj4Pr5pb#Ym z<>pb0QXqj?@2CI>+r-6z0SCO2xnXX*fGapAg$n(`xZYJL;|X9aV(eHUZNuamg)Pf< zHHN+jwHzUbsaLs8;F+>q4G0~=h6K;#BL4tC#9c6KPR2Cb4KT|Q`NUQr(&Nm%0_H_Qt&9*2 zUZoZdOIUuPT(oIojl=g6u(u!g8C!U{nT4E1vdgsOJ@}#@6n-I*Q&`v<+aSxdBb!mJ2{ufjNm5fN=vNo+7&;<(dO} zFL8_1K{-x4cQQrmJ2|&gfO&dFv z0nz!4aI@0@reRo9+&0x_plbEk5H)JBMV+upHV!5VPsF9G1Kr0G?(Ch5nW(D-CF>#e zGkVO~%wh2r%9xifES1#Y?wvZb}4m?3{X>@(dBq!VrD*Mbj!qo-{ zbdAOmEL)gn7ZrBIHwUasFDm)&S|MI|^A|-m>!`@Qv*uzyPzC^OGaK#|tyH{~rQb~%6`wEqBb;V32K-=ZazrD{ALO};vV zc=YCNP_R6>i&aY78Xyf~T7Y2OOOim#c<+8I%fK!wh&O;v7`9&1r%rqJxuDXA!@^ZUV!! zX$2T1veqkuv`YcOAcD+(vMl6s1g%+Fr} znUgBh80@57u(cJgSR^3JM%H7!X_~ei5ksF7$I*(0%dG%$7gReORCr06IYI$qmD~r% zt-<0bg}!HU!%=iN9YWg*^v2tcq78Gv&Tzwp0OQnF$%tpm0J{tET; z9vlF%yI>E1>oTc@KQfiSy=FVrQz-3y+e`%IP87`00sav#)cWpT@m);U?DG*nftp(@ z7*Xts>G?#s2mIu203 z`;3)V$P%b3c#pu}0{;LLaLlAY%FIBGyO>c(6Fg2h5w%NjtaR+1S5Or-8*5%-f|1d= z&9Z~;JYWXUltQ4kVrI{9*C5K~0V!Pzl?HY)>{aCw5NcP5=}Z@QhEcQv0yJO1D}oJk z0%X*wsZQY5;eKV};E1un#p;4G*p>Xs(QOgrb1ym6B1%|+0eOQ_W*WJ2;LCEL%L&}g z?j*m7MQBRVi-0N#W8iKM5n*RF7GM=w&a7l1mY2e!)dVm!M+jYlo})8kmokNmb3&>a zmJC-C^(#vTd!}hYER@B_X;+l#&v`IQC=(FW`dIcj$mD*bm3Xgj?S0uWna zf1FSbR^(sQO^Lj)Qbi<}i;}F~EJSZ%xhH#-TqFwwPAzVSspj^dEN0N2xM%7pYnC@ULok2`LJMb|u#^Ers`atq zA#e*qjthY)KT{=2Qm@)ynD-Ll%3D!S9m}AO2uZHenTw)+;v=MoA^MfX0P{HJTY%CL z$``qKuDKi-5|!nZh@b*9f)#CF>*voAGP&o?_L8IVI-n=07is1nZMxLhHy6-W8L!7UVHSI@05rL|8s0;-cIR zcOIC?u|_Kuvn9de6PKxb?Ith8p(+?<6{dlU%+LJn_=X zSA6)FGMs91Ht{$C#l$!RvSqjkv1a#!sDl)~$P$2hBHNo?L!yy5mP@oglKuFI;Vlf7 zADP2Z!olT<>EdI`Gwu?AJ<3KR=q5VvZZ`8}s6(~Z3S_s27H@F}j$P_f$45M|| za;1NZXg~^M_Xngizc6aV>J3#?XsV=iQ!@L6D&uszgl&fG&Jw8_{eW8l0P!rs<%|&zph>C=+qhRje-(uPhEoCla0~EES&-X}g9{ z;aG!A-Y>x6mO zrfxvc9HHt6uHpAD$fof%@7X|X6qNNXHmR78g;V!m+(1MWHj>d4j!L{rUIa8@l4hF? z!A#l}U^1k`TmnMO8&P>-7=&-Bx0ent#KN;aVg^dCrUn?ji}M>f+`3?VN?Xs=;(%{Z z1Cf`)kCIsQgBgt8vo)l$>Q2wrDAK@kEU?W#63r#g?Japhi4|)1IDrkzIm5)h>0!(U zz`0{dH^1s#Ba+$XRGq-fH<%N36~K&4gev(6RdRuHKTulVytJYpG5X+*kT19`WV+b_ zvXY%87_pBL4xfk%j0MIoAH=I~2)YEK*SIf)P;qRfX`F<}J0;DG!Ng1;O)`#RsilB8 zgNbZWePB2)pYa$A;u8*LB?N5XE*Rbi`GnjfE?`u$RX_+W!o`&f8Dry=!VY4W0P`!f zO{*k%MJG5q3F-OLxx+IJs0#OYD&1i8d{Vj9924mu#WTqsERcd z84Ft>)j)L%lQH%ypei|(MQ%9BfAtz+MngnDqja?##@qZqX~Z=ziCd}m)L{cHzv40= zQ0+MVMZ{}Hu)#q5s>RFKeaQQm0`|8&h)BXdS!G$S<~=`B){?FNfTd5UpRY9q-x%)!bZa1>exmH=sg5Y*asL|v3^WsO+pasL1T4cb2UFRCxZ185#t zRcLybaL@4*bpB->OhP9S9Yj~OF$87&OjKmwnq~rtPYlBJq_}|Y4r)|KGPGKS9FP~N zK#ZzGmSG&+)A1`;bD_ox0dXqsG}vHmNOs+76!gI1a7%0V9{HfuAX>R4NUN^|9oE3d zhQ%#FWTfQh$8#3e=()3S)ihz$zEIC>dLlO@t}5+%fQ6S5HKg%5WVO)T2!g8=4SI=z zm&jByZkWBlh#_UHt8fOLEmJ7y2o!`Wu&&Gz&?Cu(;MQWEBg;6PYGBen<6(n=ObOpE zqJc*w=WGt8rY^j}91;ju=WuP2Vvcf3HnBjZ_??Rs?f`2qxk-9dIxFahbM7Ielqp>3 zJ;gVP;vAH}iGWc3!1PSlnRaRX#S5?86Qr=&8VCc_^*)%6$MX)TJ)hJ>QmVgj8mScy z$eS^KN7E9`VCo29ggu;intB6u5w$slimwW=LQPsTdKLU zl9&EPmLQB*;yadfRc1MNVnwKLPYaG12b?*FlpOJ>5jZ(u-xQ%V%TpTCT;I92WuU-g zIhtI0wE$W55tw%}<$ybx^8HG)J8|LxYp^daWj@>Gcf>W13RF#S(&Z{DzW~^Yd`wuu zj%EuPY+0Sl%+gqWq5FrZ5?kC-v$$q7x@ij+G~Rc)TD04Us@Z{>C3RUArPzulRdW`` z)q)MIYbnzW%3=sWv4zJ-+bqGcLxc=p5i^CXF4kl2&|aehxVUE6oJ2q7X@=y|9LHSI zXhl?5&1RBOg;U2t6tfk`g~rOx<%H?Z*n~puR$_oOlzhW1vttnwgewLjN)}sfRk`&J zkO-Z^OpY@gqf)9VnfkB1?IX^@=!jBE#|*P)6UPzm$Q-UIrGaf+8Op>BQx>w~PLn(m z7E;35yavhoo&)=Z@Z7tb2o}=Ity6O~fJ<{kTg#LY+yE-$Zsm%Yuv6=w1ft*jA` zAil370Iw>uxJ9EFKBf;I9SEQ1TgwVB5T-i1RKd1A;?uc|xI2;c25lIhG)tz(6trgw zQz@{0!lyw<@jZT2*pTKR14YC%G!)L^;u&ptxTi|@Rz>_}lw4CO0=Kx7RzR&q9_urz z)VT94(y)|Nt8x)fQBXOB!A$#%g{mk(0Dzis%pK2Q?Hc5+>6jwIxoC_5x8p1R;!ql? zSY%8GToSBeU%5`_3Nl>Xn6vc^mfEgFd5yx&6Raw#>-s@0Lqw|~HB2F&gN&fZ#`7+Y z4~ILa^9B<~^+B!~dE7z5z;_IzOur(u?Qwo?a@qjB;vOKPKLXbCFDl2}RKe&>kjkpR zaGwSSVl{#B)WV<~Hw9l-K0V?my{~xfCdqeO-*R%wqh~f_IXFDmR&7|)R*TTAv)41ZI;V(bZS;6E{rODz(KAb zP|tSr9WX<%mc1B&>QI=p0Sc>& z{{Rq9Qx^tO0AVt{C3;5OB5ISx1Tsqo=#(t{=9R^*+@~TwCMq0D)-Y?5a3pp>i8mT* z(+ER6UPn;(aRUNYLa8ZDjGht9$P-9ljbP;;4W@Rn%%NikMP{aTP z5$GZ|7-|E=d}^X63ovN?%!Nc6v3P?cLEOM3d7X&lof~h&3c$O(LM9NxoKwWh54v5b zL!^Dr5&4zu{rpycNoq}PVV76SLEl+7up0DZ&f<4CAqxAsD{Sg~Tdzj$=01>lo z2nwNo<_%SylHG1+i{EnPh5BGyByS5P1yzt!qGJTI0K-oPXZ?yWFbE|$XK=2BAg>S= zYDBj)0?`e&zsl!jeZUyG*vy-i=RWfMpfA7tphQ&5W4Q53SSSFjlFCjh z^$kHlq76b%KZGSdEX(7xcN{+p10PdP3xQZKxQ?O7Gr+~CD1pD_7obFsABk@Q{vvE|R!s7ba_&!~FaH3f67oeArU`=e=2(FxS^1UVsM=~h55(xH z$fNFGOt)z6PpI$S8LG^f;CvgRBSSyU`7kP_~u8xd&8lwCJ1kRK5fgVa#A)dX&z%mPq`JC>YTEP}{v z!J*|mGo?Ha#J>;3SHbv}oj~R-ph62m?m(40zXVdT1`%&KL)knGq_d;(E!4L}{{ThK zf0-8w97jAyrtr1JLCG<#M8w13gj$Gl{Ctm}w09LTvQ1#sJxgm9p~)*t+iEPp%(Vo$ zE?)tId=Nu1W0FzLMfes*h=Wh!aK6UiDo?FL>c?<07Uc(-e23JsY1`@`HnYf)r)z<5 z%vMlfbe{sb)70-nJgfJ)SR&>k+0z}ciRL)iKBcT$*+hDY;druB$olxaSNA+m=i;+t z^E{AA?^8+$Gzn_0MGjK+DZ!a$h4nWwdzmt(MOB$BCE0!D)}=#LP_pret`JwETd8bN zqNE16oK%afH1RJ)^1FpOQ^6C=U8FA6i^Qx9ahX=v(ge5(xEM0`soIu~&QOXCxrh*1 zmfoR_1Ue2yDC=-+qF+D0#k+N9SxKYGgsc3UCdWs8Mk5bTYEaEH`0yS}>lCmla z5BL$%&N%7_J_@GuX|xu@Q;BxFsPF?d+{c@_8kcx;rb{#WP`4KQCV}5bTVIVo##Vox z$^H>f>4HB4b!5u6bTiC-umM5z!42QSS_%-7QI+q`WdEbOA(1nd3N#6Rk z2QLq@1k?2>=&spOL+L5D??m%I7q|+bJVjgq>R*9RQ_1|LE*I{9=zOJ6TmZ}!R2HA2 zdFmBl)Td$Wi_hsY$lS+Tf#Gl?io~pD2Jr&DKH!IA1lwN#oW3IPdu^1A+!U__DB8Go|~S z;CYE~{J@|aIAy@A8DYtFZsru;kV&WJHB@6emw;{Dve5j@GLOvD3-=1`F(#Ppi*)KG zLurAoSfFNV1Sl*GTzDGaf+~FA_^D_lIN;{LF{hNj8c(^nw%_Aad<1D0;MWszgh2;0 zW;$Z4E~3kQ!7J`Mn*RX#Qw=i@f|gPR=TKVQe4tT=Vh0B>qRRW2z`};*ip*9Q6I5m> zYq+$oYAzLb4I4@eb7Ouc0TsN)xQ;3Uk<>)lkX=zzB3oHzM4@YNI>DAcZ_Gir<|qdd zDycyw-aPJM@&wGMI}BSEPOb@}(XGd#sB`r%u~l#@dJ$!B2HW!lxjSIlu3VQ9mP*?A znwEv;4Q0M#8=8it{fHvTv=WrGoP~FsW{{Zb} z!8b4$sCR)y;gule*_H;TfqX`&DiQTJm?c>Z%{)c-E35GqiyL3KoC#R1`;;9D1*b-o+=Wt1!q&?C&RA+y%Bg2^?h&{= zO7R|?#>__IzlLiKP9~53c1mHa#>qk?rYdS3v716rL~zuu;f5g@ky9Y4Y59)Q5!T4K zln*V!4a{JY-ihMot{Dr%q9BS@PL;jIvaV7uhFHC<#G{513#nk${8XoGpj2}zPRvUN zNH(CwOR|I^ifqPZ_ym94F7;5Ro=6(<3de~`NVQ#&I`rA1rRWBNldGnAc}CaF z&Nc}!3gm-|_#cwb5{1jNyxZWsYf!)j;`AeEz>>M-iA2?|`6X2w zGI^PGY59W^hVUIkmdS9D7RwnxrT{i0G%BuQ4Be{EE({xBCR)yCnQ$Zu--xLTg8dVK zF1wV# zpP}Xufsh9imU1h1b7i)1Geo>#9BrIMLvwfLAYB&}%k~=%GQ}7>81WYeeQ`_+1P0&$ zq~Y!=%|VYIVCJE{cf@*94ZG?;hhp*_GL#of*~C>Kr$e1akR=XiQT)o&saidmj~}a` z+(_U>Led0DVtk+GQt`qxb2Hj1`ES7)CBpk~eM3`<|xNG6uyh^rFa|EO;GKSV`>MOHz zh2`AIwgkbujsjuS%PoTa>fX+fbnv_HS~a-a6QBND!L`vIVgar=O6E;719Slqz9y+vffHOTTlHVuSuFs=Ye8&gquQum@PE078&DMP z_b}NC72uU9tff3eHtEPZKn|!!cg(Zp)cWCxMWan|6gCA9H7{Upu=46zOeEVLSU~E3 zaIovG-EJEGT)o9*dC3fJ3VcB?iA5h0{{T4=v2WrWK&e+7;IZ)BxM$#T5BY6>H7X7z z;^hz*iJwM40kI8qaNar_FSo?0R}0#STAuLIjl?zDsXiuUUAg9S)pWMS|fn~ zU6h_9h@m-fn*(t}1XEmY6c;X{l>h|p3m|Y3>>#{L4l@)hjwX5{+-ljM+5v`&!7ZTz z8MKY0v<5Kew3e^jmYO+%099<9jzp@7QBDymyk_FG>JSBlxkYC+0=R=8n59q#P{CH$ z??0#p>rBDOjIynTCQBt7ShNA>9l+8Ri35}>{vt5lq#~^ij9NXiIw6rnxk0Xt%dSG) zqLsuEC}45oC3R$8fBhf#xPQMR~Q97Y6hAq^N0@f)C41AIkN%7x-JVMy1N!xnVFVzpo_>ZQFq zK}^_YI1zSpD=uzkp{QiGZsN$C1sfx`Kyvfc0SUCS5DyXHK&!Yja?(0;7cgruM=8(T z+B-fC{0&V$2Z%%D)aU+o8vg)`u?_vr2z)xH=uHomv~53vYwM1P@9KX9m&7@ekyjCs(Pbq;!WfU)=tX+3IWWIDfp)=lCu?qx`4oPuu?h zF#W&OH6P@|Z)e4;+x$=Gn|xN^QPmChuwb-_-tO(2aiC`oHFXHh&cT pB>h>p+5CJ*>PP4%-)G1Dr^0^mKSTLX(|p5feDHio@i?1L|JhwL+miqQ literal 0 HcmV?d00001 diff --git a/bubble-master/pubspec.lock b/bubble-master/pubspec.lock index df9b838..461388f 100755 --- a/bubble-master/pubspec.lock +++ b/bubble-master/pubspec.lock @@ -37,10 +37,10 @@ packages: dependency: transitive description: name: collection - sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a + sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf url: "https://pub.dev" source: hosted - version: "1.18.0" + version: "1.19.0" fake_async: dependency: transitive description: @@ -63,18 +63,18 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05" + sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06" url: "https://pub.dev" source: hosted - version: "10.0.5" + version: "10.0.7" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806" + sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379" url: "https://pub.dev" source: hosted - version: "3.0.5" + version: "3.0.8" leak_tracker_testing: dependency: transitive description: @@ -119,7 +119,7 @@ packages: dependency: transitive description: flutter source: sdk - version: "0.0.99" + version: "0.0.0" source_span: dependency: transitive description: @@ -132,10 +132,10 @@ packages: dependency: transitive description: name: stack_trace - sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" + sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377" url: "https://pub.dev" source: hosted - version: "1.11.1" + version: "1.12.0" stream_channel: dependency: transitive description: @@ -148,10 +148,10 @@ packages: dependency: transitive description: name: string_scanner - sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3" url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.3.0" term_glyph: dependency: transitive description: @@ -164,10 +164,10 @@ packages: dependency: transitive description: name: test_api - sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb" + sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c" url: "https://pub.dev" source: hosted - version: "0.7.2" + version: "0.7.3" vector_math: dependency: transitive description: @@ -180,10 +180,10 @@ packages: dependency: transitive description: name: vm_service - sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d" + sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b url: "https://pub.dev" source: hosted - version: "14.2.5" + version: "14.3.0" sdks: - dart: ">=3.3.0 <4.0.0" + dart: ">=3.4.0 <4.0.0" flutter: ">=3.18.0-18.0.pre.54" diff --git a/ios/Podfile b/ios/Podfile index c6404d1..20f45c9 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -1,8 +1,6 @@ -# Uncomment this line to define a global platform for your project platform :ios, '14.0' -$iOSVersion = '14.0' # or newer version +$iOSVersion = '14.0' # or your desired version -# CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' project 'Runner', { @@ -10,6 +8,7 @@ project 'Runner', { 'Profile' => :release, 'Release' => :release, } + def flutter_root generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) unless File.exist?(generated_xcode_build_settings_path) @@ -28,29 +27,33 @@ require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelpe flutter_ios_podfile_setup target 'Runner' do - use_frameworks! - use_modular_headers! + use_frameworks! :linkage => :dynamic + pod 'Firebase', :modular_headers => true + + # Explicitly enable modular headers for firebase_messaging and other Firebase-related pods + pod 'FirebaseMessaging', :modular_headers => true + pod 'FirebaseCore', :modular_headers => true + pod 'FirebaseAuth', :modular_headers => true flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) + target 'RunnerTests' do inherit! :search_paths end end post_install do |installer| - # add these lines: installer.pods_project.build_configurations.each do |config| config.build_settings["EXCLUDED_ARCHS[sdk=*]"] = "armv7" config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = $iOSVersion end + installer.pods_project.targets.each do |target| flutter_additional_ios_build_settings(target) - # add these lines: target.build_configurations.each do |config| if Gem::Version.new($iOSVersion) > Gem::Version.new(config.build_settings['IPHONEOS_DEPLOYMENT_TARGET']) config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = $iOSVersion end end end -end - +end \ No newline at end of file diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 284eee8..b0a7bc3 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -1,9 +1,9 @@ PODS: - - AppAuth (1.7.5): - - AppAuth/Core (= 1.7.5) - - AppAuth/ExternalUserAgent (= 1.7.5) - - AppAuth/Core (1.7.5) - - AppAuth/ExternalUserAgent (1.7.5): + - AppAuth (1.7.6): + - AppAuth/Core (= 1.7.6) + - AppAuth/ExternalUserAgent (= 1.7.6) + - AppAuth/Core (1.7.6) + - AppAuth/ExternalUserAgent (1.7.6): - AppAuth/Core - audio_session (0.0.1): - Flutter @@ -13,53 +13,81 @@ PODS: - Flutter - device_info_plus (0.0.1): - Flutter - - Firebase/Auth (10.28.0): + - Firebase (11.4.0): + - Firebase/Core (= 11.4.0) + - Firebase/Auth (11.4.0): - Firebase/CoreOnly - - FirebaseAuth (~> 10.28.0) - - Firebase/CoreOnly (10.28.0): - - FirebaseCore (= 10.28.0) - - Firebase/Messaging (10.28.0): + - FirebaseAuth (~> 11.4.0) + - Firebase/Core (11.4.0): - Firebase/CoreOnly - - FirebaseMessaging (~> 10.28.0) - - firebase_auth (5.1.2): - - Firebase/Auth (= 10.28.0) + - FirebaseAnalytics (~> 11.4.0) + - Firebase/CoreOnly (11.4.0): + - FirebaseCore (= 11.4.0) + - Firebase/Messaging (11.4.0): + - Firebase/CoreOnly + - FirebaseMessaging (~> 11.4.0) + - firebase_auth (5.3.4): + - Firebase/Auth (= 11.4.0) - firebase_core - Flutter - - firebase_core (3.2.0): - - Firebase/CoreOnly (= 10.28.0) + - firebase_core (3.9.0): + - Firebase/CoreOnly (= 11.4.0) - Flutter - - firebase_messaging (15.0.3): - - Firebase/Messaging (= 10.28.0) + - firebase_messaging (15.1.6): + - Firebase/Messaging (= 11.4.0) - firebase_core - Flutter - - FirebaseAppCheckInterop (10.29.0) - - FirebaseAuth (10.28.0): - - FirebaseAppCheckInterop (~> 10.17) - - FirebaseCore (~> 10.0) - - GoogleUtilities/AppDelegateSwizzler (~> 7.8) - - GoogleUtilities/Environment (~> 7.8) - - GTMSessionFetcher/Core (< 4.0, >= 2.1) + - FirebaseAnalytics (11.4.0): + - FirebaseAnalytics/AdIdSupport (= 11.4.0) + - FirebaseCore (~> 11.0) + - FirebaseInstallations (~> 11.0) + - GoogleUtilities/AppDelegateSwizzler (~> 8.0) + - GoogleUtilities/MethodSwizzler (~> 8.0) + - GoogleUtilities/Network (~> 8.0) + - "GoogleUtilities/NSData+zlib (~> 8.0)" + - nanopb (~> 3.30910.0) + - FirebaseAnalytics/AdIdSupport (11.4.0): + - FirebaseCore (~> 11.0) + - FirebaseInstallations (~> 11.0) + - GoogleAppMeasurement (= 11.4.0) + - GoogleUtilities/AppDelegateSwizzler (~> 8.0) + - GoogleUtilities/MethodSwizzler (~> 8.0) + - GoogleUtilities/Network (~> 8.0) + - "GoogleUtilities/NSData+zlib (~> 8.0)" + - nanopb (~> 3.30910.0) + - FirebaseAppCheckInterop (11.6.0) + - FirebaseAuth (11.4.0): + - FirebaseAppCheckInterop (~> 11.0) + - FirebaseAuthInterop (~> 11.0) + - FirebaseCore (~> 11.4) + - FirebaseCoreExtension (~> 11.4) + - GoogleUtilities/AppDelegateSwizzler (~> 8.0) + - GoogleUtilities/Environment (~> 8.0) + - GTMSessionFetcher/Core (< 5.0, >= 3.4) - RecaptchaInterop (~> 100.0) - - FirebaseCore (10.28.0): - - FirebaseCoreInternal (~> 10.0) - - GoogleUtilities/Environment (~> 7.12) - - GoogleUtilities/Logger (~> 7.12) - - FirebaseCoreInternal (10.29.0): - - "GoogleUtilities/NSData+zlib (~> 7.8)" - - FirebaseInstallations (10.29.0): - - FirebaseCore (~> 10.0) - - GoogleUtilities/Environment (~> 7.8) - - GoogleUtilities/UserDefaults (~> 7.8) - - PromisesObjC (~> 2.1) - - FirebaseMessaging (10.28.0): - - FirebaseCore (~> 10.0) - - FirebaseInstallations (~> 10.0) - - GoogleDataTransport (~> 9.3) - - GoogleUtilities/AppDelegateSwizzler (~> 7.8) - - GoogleUtilities/Environment (~> 7.8) - - GoogleUtilities/Reachability (~> 7.8) - - GoogleUtilities/UserDefaults (~> 7.8) - - nanopb (< 2.30911.0, >= 2.30908.0) + - FirebaseAuthInterop (11.6.0) + - FirebaseCore (11.4.0): + - FirebaseCoreInternal (~> 11.0) + - GoogleUtilities/Environment (~> 8.0) + - GoogleUtilities/Logger (~> 8.0) + - FirebaseCoreExtension (11.4.1): + - FirebaseCore (~> 11.0) + - FirebaseCoreInternal (11.6.0): + - "GoogleUtilities/NSData+zlib (~> 8.0)" + - FirebaseInstallations (11.4.0): + - FirebaseCore (~> 11.0) + - GoogleUtilities/Environment (~> 8.0) + - GoogleUtilities/UserDefaults (~> 8.0) + - PromisesObjC (~> 2.4) + - FirebaseMessaging (11.4.0): + - FirebaseCore (~> 11.0) + - FirebaseInstallations (~> 11.0) + - GoogleDataTransport (~> 10.0) + - GoogleUtilities/AppDelegateSwizzler (~> 8.0) + - GoogleUtilities/Environment (~> 8.0) + - GoogleUtilities/Reachability (~> 8.0) + - GoogleUtilities/UserDefaults (~> 8.0) + - nanopb (~> 3.30910.0) - Flutter (1.0.0) - flutter_contacts (0.0.1): - Flutter @@ -83,72 +111,77 @@ PODS: - Flutter - geolocator_apple (1.2.0): - Flutter + - Google-Maps-iOS-Utils (5.0.0): + - GoogleMaps (~> 8.0) - google_maps_flutter_ios (0.0.1): - Flutter + - Google-Maps-iOS-Utils (< 7.0, >= 5.0) - GoogleMaps (< 10.0, >= 8.4) - - google_mlkit_commons (0.7.1): - - Flutter - - MLKitVision - - google_mlkit_text_recognition (0.13.0): - - Flutter - - google_mlkit_commons - - GoogleMLKit/TextRecognition (~> 6.0.0) - google_sign_in_ios (0.0.1): - AppAuth (>= 1.7.4) - Flutter - FlutterMacOS - GoogleSignIn (~> 7.1) - GTMSessionFetcher (>= 3.4.0) - - GoogleDataTransport (9.4.1): - - GoogleUtilities/Environment (~> 7.7) - - nanopb (< 2.30911.0, >= 2.30908.0) - - PromisesObjC (< 3.0, >= 1.2) + - GoogleAppMeasurement (11.4.0): + - GoogleAppMeasurement/AdIdSupport (= 11.4.0) + - GoogleUtilities/AppDelegateSwizzler (~> 8.0) + - GoogleUtilities/MethodSwizzler (~> 8.0) + - GoogleUtilities/Network (~> 8.0) + - "GoogleUtilities/NSData+zlib (~> 8.0)" + - nanopb (~> 3.30910.0) + - GoogleAppMeasurement/AdIdSupport (11.4.0): + - GoogleAppMeasurement/WithoutAdIdSupport (= 11.4.0) + - GoogleUtilities/AppDelegateSwizzler (~> 8.0) + - GoogleUtilities/MethodSwizzler (~> 8.0) + - GoogleUtilities/Network (~> 8.0) + - "GoogleUtilities/NSData+zlib (~> 8.0)" + - nanopb (~> 3.30910.0) + - GoogleAppMeasurement/WithoutAdIdSupport (11.4.0): + - GoogleUtilities/AppDelegateSwizzler (~> 8.0) + - GoogleUtilities/MethodSwizzler (~> 8.0) + - GoogleUtilities/Network (~> 8.0) + - "GoogleUtilities/NSData+zlib (~> 8.0)" + - nanopb (~> 3.30910.0) + - GoogleDataTransport (10.1.0): + - nanopb (~> 3.30910.0) + - PromisesObjC (~> 2.4) - GoogleMaps (8.4.0): - GoogleMaps/Maps (= 8.4.0) - GoogleMaps/Base (8.4.0) - GoogleMaps/Maps (8.4.0): - GoogleMaps/Base - - GoogleMLKit/MLKitCore (6.0.0): - - MLKitCommon (~> 11.0.0) - - GoogleMLKit/TextRecognition (6.0.0): - - GoogleMLKit/MLKitCore - - MLKitTextRecognition (~> 4.0.0) - GoogleSignIn (7.1.0): - AppAuth (< 2.0, >= 1.7.3) - GTMAppAuth (< 5.0, >= 4.1.1) - GTMSessionFetcher/Core (~> 3.3) - - GoogleToolboxForMac/Defines (4.2.1) - - GoogleToolboxForMac/Logger (4.2.1): - - GoogleToolboxForMac/Defines (= 4.2.1) - - "GoogleToolboxForMac/NSData+zlib (4.2.1)": - - GoogleToolboxForMac/Defines (= 4.2.1) - - GoogleUtilities/AppDelegateSwizzler (7.13.3): + - GoogleUtilities/AppDelegateSwizzler (8.0.2): - GoogleUtilities/Environment - GoogleUtilities/Logger - GoogleUtilities/Network - GoogleUtilities/Privacy - - GoogleUtilities/Environment (7.13.3): + - GoogleUtilities/Environment (8.0.2): - GoogleUtilities/Privacy - - PromisesObjC (< 3.0, >= 1.2) - - GoogleUtilities/Logger (7.13.3): + - GoogleUtilities/Logger (8.0.2): - GoogleUtilities/Environment - GoogleUtilities/Privacy - - GoogleUtilities/Network (7.13.3): + - GoogleUtilities/MethodSwizzler (8.0.2): + - GoogleUtilities/Logger + - GoogleUtilities/Privacy + - GoogleUtilities/Network (8.0.2): - GoogleUtilities/Logger - "GoogleUtilities/NSData+zlib" - GoogleUtilities/Privacy - GoogleUtilities/Reachability - - "GoogleUtilities/NSData+zlib (7.13.3)": + - "GoogleUtilities/NSData+zlib (8.0.2)": - GoogleUtilities/Privacy - - GoogleUtilities/Privacy (7.13.3) - - GoogleUtilities/Reachability (7.13.3): + - GoogleUtilities/Privacy (8.0.2) + - GoogleUtilities/Reachability (8.0.2): - GoogleUtilities/Logger - GoogleUtilities/Privacy - - GoogleUtilities/UserDefaults (7.13.3): + - GoogleUtilities/UserDefaults (8.0.2): - GoogleUtilities/Logger - GoogleUtilities/Privacy - - GoogleUtilitiesComponents (1.1.0): - - GoogleUtilities/Logger - GTMAppAuth (4.1.1): - AppAuth/Core (~> 1.7) - GTMSessionFetcher/Core (< 4.0, >= 3.3) @@ -178,37 +211,17 @@ PODS: - libwebp/sharpyuv - local_auth_darwin (0.0.1): - Flutter + - FlutterMacOS - location (0.0.1): - Flutter - Mantle (2.2.0): - Mantle/extobjc (= 2.2.0) - Mantle/extobjc (2.2.0) - - MLImage (1.0.0-beta5) - - MLKitCommon (11.0.0): - - GoogleDataTransport (< 10.0, >= 9.4.1) - - GoogleToolboxForMac/Logger (< 5.0, >= 4.2.1) - - "GoogleToolboxForMac/NSData+zlib (< 5.0, >= 4.2.1)" - - GoogleUtilities/UserDefaults (< 8.0, >= 7.13.0) - - GoogleUtilitiesComponents (~> 1.0) - - GTMSessionFetcher/Core (< 4.0, >= 3.3.2) - - MLKitTextRecognition (4.0.0): - - MLKitCommon (~> 11.0) - - MLKitTextRecognitionCommon (= 3.0.0) - - MLKitVision (~> 7.0) - - MLKitTextRecognitionCommon (3.0.0): - - MLKitCommon (~> 11.0) - - MLKitVision (~> 7.0) - - MLKitVision (7.0.0): - - GoogleToolboxForMac/Logger (< 5.0, >= 4.2.1) - - "GoogleToolboxForMac/NSData+zlib (< 5.0, >= 4.2.1)" - - GTMSessionFetcher/Core (< 4.0, >= 3.3.2) - - MLImage (= 1.0.0-beta5) - - MLKitCommon (~> 11.0) - - nanopb (2.30910.0): - - nanopb/decode (= 2.30910.0) - - nanopb/encode (= 2.30910.0) - - nanopb/decode (2.30910.0) - - nanopb/encode (2.30910.0) + - nanopb (3.30910.0): + - nanopb/decode (= 3.30910.0) + - nanopb/encode (= 3.30910.0) + - nanopb/decode (3.30910.0) + - nanopb/encode (3.30910.0) - OrderedSet (6.0.3) - package_info_plus (0.4.5): - Flutter @@ -221,10 +234,9 @@ PODS: - RecaptchaInterop (100.0.0) - record_darwin (1.0.0): - Flutter - - FlutterMacOS - - SDWebImage (5.19.7): - - SDWebImage/Core (= 5.19.7) - - SDWebImage/Core (5.19.7) + - SDWebImage (5.20.0): + - SDWebImage/Core (= 5.20.0) + - SDWebImage/Core (5.20.0) - SDWebImageWebPCoder (0.14.6): - libwebp (~> 1.0) - SDWebImage/Core (~> 5.17) @@ -232,45 +244,45 @@ PODS: - Flutter - sign_in_with_apple (0.0.1): - Flutter - - sqflite (0.0.3): + - sqflite_darwin (0.0.4): - Flutter - FlutterMacOS - - Stripe (23.27.6): - - StripeApplePay (= 23.27.6) - - StripeCore (= 23.27.6) - - StripePayments (= 23.27.6) - - StripePaymentsUI (= 23.27.6) - - StripeUICore (= 23.27.6) + - Stripe (23.30.0): + - StripeApplePay (= 23.30.0) + - StripeCore (= 23.30.0) + - StripePayments (= 23.30.0) + - StripePaymentsUI (= 23.30.0) + - StripeUICore (= 23.30.0) - stripe_ios (0.0.1): - Flutter - - Stripe (~> 23.27.0) - - StripeApplePay (~> 23.27.0) - - StripeFinancialConnections (~> 23.27.0) - - StripePayments (~> 23.27.0) - - StripePaymentSheet (~> 23.27.0) - - StripePaymentsUI (~> 23.27.0) - - StripeApplePay (23.27.6): - - StripeCore (= 23.27.6) - - StripeCore (23.27.6) - - StripeFinancialConnections (23.27.6): - - StripeCore (= 23.27.6) - - StripeUICore (= 23.27.6) - - StripePayments (23.27.6): - - StripeCore (= 23.27.6) - - StripePayments/Stripe3DS2 (= 23.27.6) - - StripePayments/Stripe3DS2 (23.27.6): - - StripeCore (= 23.27.6) - - StripePaymentSheet (23.27.6): - - StripeApplePay (= 23.27.6) - - StripeCore (= 23.27.6) - - StripePayments (= 23.27.6) - - StripePaymentsUI (= 23.27.6) - - StripePaymentsUI (23.27.6): - - StripeCore (= 23.27.6) - - StripePayments (= 23.27.6) - - StripeUICore (= 23.27.6) - - StripeUICore (23.27.6): - - StripeCore (= 23.27.6) + - Stripe (~> 23.30.0) + - StripeApplePay (~> 23.30.0) + - StripeFinancialConnections (~> 23.30.0) + - StripePayments (~> 23.30.0) + - StripePaymentSheet (~> 23.30.0) + - StripePaymentsUI (~> 23.30.0) + - StripeApplePay (23.30.0): + - StripeCore (= 23.30.0) + - StripeCore (23.30.0) + - StripeFinancialConnections (23.30.0): + - StripeCore (= 23.30.0) + - StripeUICore (= 23.30.0) + - StripePayments (23.30.0): + - StripeCore (= 23.30.0) + - StripePayments/Stripe3DS2 (= 23.30.0) + - StripePayments/Stripe3DS2 (23.30.0): + - StripeCore (= 23.30.0) + - StripePaymentSheet (23.30.0): + - StripeApplePay (= 23.30.0) + - StripeCore (= 23.30.0) + - StripePayments (= 23.30.0) + - StripePaymentsUI (= 23.30.0) + - StripePaymentsUI (23.30.0): + - StripeCore (= 23.30.0) + - StripePayments (= 23.30.0) + - StripeUICore (= 23.30.0) + - StripeUICore (23.30.0): + - StripeCore (= 23.30.0) - TOCropViewController (2.7.4) - url_launcher_ios (0.0.1): - Flutter @@ -290,9 +302,13 @@ DEPENDENCIES: - background_location (from `.symlinks/plugins/background_location/ios`) - camera_avfoundation (from `.symlinks/plugins/camera_avfoundation/ios`) - device_info_plus (from `.symlinks/plugins/device_info_plus/ios`) + - Firebase - firebase_auth (from `.symlinks/plugins/firebase_auth/ios`) - firebase_core (from `.symlinks/plugins/firebase_core/ios`) - firebase_messaging (from `.symlinks/plugins/firebase_messaging/ios`) + - FirebaseAuth + - FirebaseCore + - FirebaseMessaging - Flutter (from `Flutter`) - flutter_contacts (from `.symlinks/plugins/flutter_contacts/ios`) - flutter_image_compress_common (from `.symlinks/plugins/flutter_image_compress_common/ios`) @@ -302,8 +318,6 @@ DEPENDENCIES: - flutter_tts (from `.symlinks/plugins/flutter_tts/ios`) - geolocator_apple (from `.symlinks/plugins/geolocator_apple/ios`) - google_maps_flutter_ios (from `.symlinks/plugins/google_maps_flutter_ios/ios`) - - google_mlkit_commons (from `.symlinks/plugins/google_mlkit_commons/ios`) - - google_mlkit_text_recognition (from `.symlinks/plugins/google_mlkit_text_recognition/ios`) - google_sign_in_ios (from `.symlinks/plugins/google_sign_in_ios/darwin`) - image_cropper (from `.symlinks/plugins/image_cropper/ios`) - image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`) @@ -316,7 +330,7 @@ DEPENDENCIES: - record_darwin (from `.symlinks/plugins/record_darwin/ios`) - share (from `.symlinks/plugins/share/ios`) - sign_in_with_apple (from `.symlinks/plugins/sign_in_with_apple/ios`) - - sqflite (from `.symlinks/plugins/sqflite/darwin`) + - sqflite_darwin (from `.symlinks/plugins/sqflite_darwin/darwin`) - stripe_ios (from `.symlinks/plugins/stripe_ios/ios`) - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) - vibration (from `.symlinks/plugins/vibration/ios`) @@ -328,28 +342,25 @@ SPEC REPOS: trunk: - AppAuth - Firebase + - FirebaseAnalytics - FirebaseAppCheckInterop - FirebaseAuth + - FirebaseAuthInterop - FirebaseCore + - FirebaseCoreExtension - FirebaseCoreInternal - FirebaseInstallations - FirebaseMessaging + - Google-Maps-iOS-Utils + - GoogleAppMeasurement - GoogleDataTransport - GoogleMaps - - GoogleMLKit - GoogleSignIn - - GoogleToolboxForMac - GoogleUtilities - - GoogleUtilitiesComponents - GTMAppAuth - GTMSessionFetcher - libwebp - Mantle - - MLImage - - MLKitCommon - - MLKitTextRecognition - - MLKitTextRecognitionCommon - - MLKitVision - nanopb - OrderedSet - PromisesObjC @@ -399,10 +410,6 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/geolocator_apple/ios" google_maps_flutter_ios: :path: ".symlinks/plugins/google_maps_flutter_ios/ios" - google_mlkit_commons: - :path: ".symlinks/plugins/google_mlkit_commons/ios" - google_mlkit_text_recognition: - :path: ".symlinks/plugins/google_mlkit_text_recognition/ios" google_sign_in_ios: :path: ".symlinks/plugins/google_sign_in_ios/darwin" image_cropper: @@ -427,8 +434,8 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/share/ios" sign_in_with_apple: :path: ".symlinks/plugins/sign_in_with_apple/ios" - sqflite: - :path: ".symlinks/plugins/sqflite/darwin" + sqflite_darwin: + :path: ".symlinks/plugins/sqflite_darwin/darwin" stripe_ios: :path: ".symlinks/plugins/stripe_ios/ios" url_launcher_ios: @@ -443,83 +450,78 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/webview_flutter_wkwebview/darwin" SPEC CHECKSUMS: - AppAuth: 501c04eda8a8d11f179dbe8637b7a91bb7e5d2fa + AppAuth: d4f13a8fe0baf391b2108511793e4b479691fb73 audio_session: 088d2483ebd1dc43f51d253d4a1c517d9a2e7207 background_location: 1b80c1fe3abd9912bca298618f6e365abf6f588f camera_avfoundation: dd002b0330f4981e1bbcb46ae9b62829237459a4 - device_info_plus: 97af1d7e84681a90d0693e63169a5d50e0839a0d - Firebase: 5121c624121af81cbc81df3bda414b3c28c4f3c3 - firebase_auth: e778ee89483b86fe4200d1f8e9a1c52aa5fb64a8 - firebase_core: a9d0180d5285527884d07a41eb4a9ec9ed12cdb6 - firebase_messaging: ccc82a143a74de75f440a4e413dbbb37ec3fddbc - FirebaseAppCheckInterop: 6a1757cfd4067d8e00fccd14fcc1b8fd78cfac07 - FirebaseAuth: 3d872fbbfc4223edeb72769e488f325fa8b0a4a9 - FirebaseCore: 857dc1c6dd1255675047404d8466f7dfaac5d779 - FirebaseCoreInternal: df84dd300b561c27d5571684f389bf60b0a5c934 - FirebaseInstallations: 913cf60d0400ebd5d6b63a28b290372ab44590dd - FirebaseMessaging: 087a7c7cadef7b9239f005bc4db823894844f323 + device_info_plus: bf2e3232933866d73fe290f2942f2156cdd10342 + Firebase: cf1b19f21410b029b6786a54e9764a0cacad3c99 + firebase_auth: c4bdd9d7b338ac004008cb5024a643584e0ec03f + firebase_core: b62a5080210edad3f2934314a8b2c6f5124e8e10 + firebase_messaging: 98619a0572d82cfb3668e78859ba9f1110e268c9 + FirebaseAnalytics: 3feef9ae8733c567866342a1000691baaa7cad49 + FirebaseAppCheckInterop: 347aa09a805219a31249b58fc956888e9fcb314b + FirebaseAuth: c359af98bd703cbf4293eec107a40de08ede6ce6 + FirebaseAuthInterop: a919d415797d23b7bfe195a04f322b86c65020ef + FirebaseCore: e0510f1523bc0eb21653cac00792e1e2bd6f1771 + FirebaseCoreExtension: f1bc67a4702931a7caa097d8e4ac0a1b0d16720e + FirebaseCoreInternal: d98ab91e2d80a56d7b246856a8885443b302c0c2 + FirebaseInstallations: 6ef4a1c7eb2a61ee1f74727d7f6ce2e72acf1414 + FirebaseMessaging: f8a160d99c2c2e5babbbcc90c4a3e15db036aee2 Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 flutter_contacts: edb1c5ce76aa433e20e6cb14c615f4c0b66e0983 flutter_image_compress_common: ec1d45c362c9d30a3f6a0426c297f47c52007e3e flutter_inappwebview_ios: 6f63631e2c62a7c350263b13fa5427aedefe81d4 - flutter_local_notifications: 4cde75091f6327eb8517fa068a0a5950212d2086 + flutter_local_notifications: df98d66e515e1ca797af436137b4459b160ad8c9 flutter_secure_storage: d33dac7ae2ea08509be337e775f6b59f1ff45f12 flutter_tts: 0f492aab6accf87059b72354fcb4ba934304771d - geolocator_apple: 6cbaf322953988e009e5ecb481f07efece75c450 - google_maps_flutter_ios: 5bc2be60ad012e79b182ce0fb0ef5030a50fb03e - google_mlkit_commons: 96aaca445520311b84a2da013dedf3427fe4cc69 - google_mlkit_text_recognition: 393c2526da49aa6c9c883e6d69100f54af011e24 + geolocator_apple: 9bcea1918ff7f0062d98345d238ae12718acfbc1 + Google-Maps-iOS-Utils: 66d6de12be1ce6d3742a54661e7a79cb317a9321 + google_maps_flutter_ios: e31555a04d1986ab130f2b9f24b6cdc861acc6d3 google_sign_in_ios: 07375bfbf2620bc93a602c0e27160d6afc6ead38 - GoogleDataTransport: 6c09b596d841063d76d4288cc2d2f42cc36e1e2a + GoogleAppMeasurement: 987769c4ca6b968f2479fbcc9fe3ce34af454b8e + GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7 GoogleMaps: 8939898920281c649150e0af74aa291c60f2e77d - GoogleMLKit: 97ac7af399057e99182ee8edfa8249e3226a4065 GoogleSignIn: d4281ab6cf21542b1cfaff85c191f230b399d2db - GoogleToolboxForMac: d1a2cbf009c453f4d6ded37c105e2f67a32206d8 - GoogleUtilities: ea963c370a38a8069cc5f7ba4ca849a60b6d7d15 - GoogleUtilitiesComponents: 679b2c881db3b615a2777504623df6122dd20afe + GoogleUtilities: 26a3abef001b6533cf678d3eb38fd3f614b7872d GTMAppAuth: f69bd07d68cd3b766125f7e072c45d7340dea0de GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6 image_cropper: 37d40f62177c101ff4c164906d259ea2c3aa70cf image_picker_ios: c560581cceedb403a6ff17f2f816d7fea1421fc1 just_audio: baa7252489dbcf47a4c7cc9ca663e9661c99aafa libwebp: 1786c9f4ff8a279e4dac1e8f385004d5fc253009 - local_auth_darwin: 4d56c90c2683319835a61274b57620df9c4520ab + local_auth_darwin: 66e40372f1c29f383a314c738c7446e2f7fdadc3 location: d5cf8598915965547c3f36761ae9cc4f4e87d22e Mantle: c5aa8794a29a022dfbbfc9799af95f477a69b62d - MLImage: 1824212150da33ef225fbd3dc49f184cf611046c - MLKitCommon: afec63980417d29ffbb4790529a1b0a2291699e1 - MLKitTextRecognition: c83c18ad25496f2077f6ec93c5940487ff2eb343 - MLKitTextRecognitionCommon: c0b3a63d529296a19bce1f8bc8a513644ed4d1f6 - MLKitVision: e858c5f125ecc288e4a31127928301eaba9ae0c1 - nanopb: 438bc412db1928dac798aa6fd75726007be04262 + nanopb: fad817b59e0457d11a5dfbde799381cd727c1275 OrderedSet: e539b66b644ff081c73a262d24ad552a69be3a94 - package_info_plus: 58f0028419748fad15bf008b270aaa8e54380b1c + package_info_plus: c0502532a26c7662a62a356cebe2692ec5fe4ec4 path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46 permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2 PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47 RecaptchaInterop: 7d1a4a01a6b2cb1610a47ef3f85f0c411434cb21 - record_darwin: df0a677188e5fed18472550298e675f19ddaffbe - SDWebImage: 8a6b7b160b4d710e2a22b6900e25301075c34cb3 + record_darwin: 3b1a8e7d5c0cbf45ad6165b4d83a6ca643d929c3 + SDWebImage: 73c6079366fea25fa4bb9640d5fb58f0893facd8 SDWebImageWebPCoder: e38c0a70396191361d60c092933e22c20d5b1380 share: 0b2c3e82132f5888bccca3351c504d0003b3b410 sign_in_with_apple: f3bf75217ea4c2c8b91823f225d70230119b8440 - sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec - Stripe: 9fec845645e39f371e6898926d096fd9c2feb5a5 - stripe_ios: 03c617acee72e48a2d055d096a4b0ed2afebb256 - StripeApplePay: 5f017e8dfe259fafbab70137776189deef754bb2 - StripeCore: 01ec57f0dddfe742054dc6a322f811426c25313d - StripeFinancialConnections: 56698cb6274bf89fb8c76b934f6156f368e97765 - StripePayments: 6adf11faf1b7038e77aa97019410305c6adca79d - StripePaymentSheet: 3eaf870c4388e44b0cc37e4c69d00b6957fd8bd7 - StripePaymentsUI: 59ccddeacad592b09fa67e8d641340820ddb4751 - StripeUICore: 879bbf5889265db13f52fac8aad7a176ba62481f + sqflite_darwin: 5a7236e3b501866c1c9befc6771dfd73ffb8702d + Stripe: 9757efc154de1d9615cbea4836d590bc4034d3a4 + stripe_ios: 4463f81157e91cbbf441e1b3fdf5edce90787491 + StripeApplePay: ca33933601302742623762157d587b79b942d073 + StripeCore: 2af250a2366ff2bbf64d4243c5f9bbf2a98b2aaf + StripeFinancialConnections: 3ab1ef6182ec44e71c29e9a2100b663f9713ac20 + StripePayments: 658a16bd34d20c8185aa281866227b9e1743300e + StripePaymentSheet: eac031f76d7fbb4f52df9b9c39be5be671ca4c07 + StripePaymentsUI: 7d7cffb2ecfc0d6b5ac3a4488c02893a5ff6cc77 + StripeUICore: bb102d453b1e1a10a37f810bc0a9aa0675fb17fd TOCropViewController: 80b8985ad794298fb69d3341de183f33d1853654 url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe vibration: 7d883d141656a1c1a6d8d238616b2042a51a1241 video_player_avfoundation: 7c6c11d8470e1675df7397027218274b6d2360b3 - wakelock_plus: 78ec7c5b202cab7761af8e2b2b3d0671be6c4ae1 + wakelock_plus: 373cfe59b235a6dd5837d0fb88791d2f13a90d56 webview_flutter_wkwebview: 0982481e3d9c78fd5c6f62a002fcd24fc791f1e4 -PODFILE CHECKSUM: d9271c147dd54ffd9ca5d77bf00ca21a1c9a5961 +PODFILE CHECKSUM: 07f180bff2523e15e01e42c30418373e5627c8fd -COCOAPODS: 1.15.2 +COCOAPODS: 1.16.2 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 84e1046..c14b593 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -7,10 +7,11 @@ objects = { /* Begin PBXBuildFile section */ - 0E2EB9A18A85A8C79C1A5B17 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 27958A27956787B6764BC14F /* Pods_RunnerTests.framework */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 38BFC4984B1B26A880FE76DE /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2AC5295B6ADEC13901A4281A /* Pods_RunnerTests.framework */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 3CEA26D0738D4C4B62323122 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A1987A597103D3E58DD06571 /* Pods_Runner.framework */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; @@ -25,7 +26,6 @@ C690B4752A80554500E1D66E /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = C690B4742A80554500E1D66E /* GoogleService-Info.plist */; }; C6B15AA12B5FB24600746405 /* order.wav in Resources */ = {isa = PBXBuildFile; fileRef = C6B15A9F2B5FB24600746405 /* order.wav */; }; C6B15AA22B5FB24600746405 /* tone2.wav in Resources */ = {isa = PBXBuildFile; fileRef = C6B15AA02B5FB24600746405 /* tone2.wav */; }; - D529E7C8240CCC30BB7358A2 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B099132D71B1299FCDFD9C8 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -52,17 +52,16 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 08CDD9E654C52E05FEE40E98 /* 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 = ""; }; + 0116059C9A3684AC66E6EA10 /* 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 = ""; }; + 0A588BA0B74F002C38F0E4F0 /* 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 = ""; }; 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; - 27958A27956787B6764BC14F /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 169535ADE82517D8C1F876D0 /* 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 = ""; }; + 20CE5C1BB6B23CE4706F0F53 /* 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 = ""; }; + 2AC5295B6ADEC13901A4281A /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 3B099132D71B1299FCDFD9C8 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 42939EAD96568C1F3F0E8006 /* 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 = ""; }; - 43385D55BAC53942A4B30B22 /* 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 = ""; }; - 45F2ED245254D48D155DD716 /* 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 = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; @@ -73,6 +72,7 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + A1987A597103D3E58DD06571 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; C624C45C2BD56D34002834AF /* tone1.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; name = tone1.mp3; path = ../../android/app/src/main/res/raw/tone1.mp3; sourceTree = ""; }; C624C45D2BD56D34002834AF /* start.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = start.wav; path = ../../android/app/src/main/res/raw/start.wav; sourceTree = ""; }; C624C45F2BD56D34002834AF /* promo.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = promo.wav; path = ../../android/app/src/main/res/raw/promo.wav; sourceTree = ""; }; @@ -84,8 +84,8 @@ C69588332A8C1F6B00C3AC67 /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = ""; }; C6B15A9F2B5FB24600746405 /* order.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = order.wav; sourceTree = ""; }; C6B15AA02B5FB24600746405 /* tone2.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = tone2.wav; sourceTree = ""; }; - CAF37DC30C17166B851DBC8C /* 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 = ""; }; - F231BA28015FE2C634809733 /* 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 = ""; }; + F13EEC8BD3BD109D175EA06D /* 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 = ""; }; + F8C2B267C197A536F06ED67A /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -93,7 +93,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 0E2EB9A18A85A8C79C1A5B17 /* Pods_RunnerTests.framework in Frameworks */, + 38BFC4984B1B26A880FE76DE /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -101,7 +101,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D529E7C8240CCC30BB7358A2 /* Pods_Runner.framework in Frameworks */, + 3CEA26D0738D4C4B62323122 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -119,12 +119,12 @@ 5684D45491D29A320AB8001A /* Pods */ = { isa = PBXGroup; children = ( - 08CDD9E654C52E05FEE40E98 /* Pods-Runner.debug.xcconfig */, - F231BA28015FE2C634809733 /* Pods-Runner.release.xcconfig */, - CAF37DC30C17166B851DBC8C /* Pods-Runner.profile.xcconfig */, - 43385D55BAC53942A4B30B22 /* Pods-RunnerTests.debug.xcconfig */, - 45F2ED245254D48D155DD716 /* Pods-RunnerTests.release.xcconfig */, - 42939EAD96568C1F3F0E8006 /* Pods-RunnerTests.profile.xcconfig */, + 169535ADE82517D8C1F876D0 /* Pods-Runner.debug.xcconfig */, + F13EEC8BD3BD109D175EA06D /* Pods-Runner.release.xcconfig */, + 20CE5C1BB6B23CE4706F0F53 /* Pods-Runner.profile.xcconfig */, + 0A588BA0B74F002C38F0E4F0 /* Pods-RunnerTests.debug.xcconfig */, + F8C2B267C197A536F06ED67A /* Pods-RunnerTests.release.xcconfig */, + 0116059C9A3684AC66E6EA10 /* Pods-RunnerTests.profile.xcconfig */, ); path = Pods; sourceTree = ""; @@ -148,7 +148,7 @@ 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, 5684D45491D29A320AB8001A /* Pods */, - B3041BA408DBB12F66846F39 /* Frameworks */, + A3767309D6B5681282917CC7 /* Frameworks */, ); sourceTree = ""; }; @@ -187,11 +187,11 @@ path = Runner; sourceTree = ""; }; - B3041BA408DBB12F66846F39 /* Frameworks */ = { + A3767309D6B5681282917CC7 /* Frameworks */ = { isa = PBXGroup; children = ( - 3B099132D71B1299FCDFD9C8 /* Pods_Runner.framework */, - 27958A27956787B6764BC14F /* Pods_RunnerTests.framework */, + A1987A597103D3E58DD06571 /* Pods_Runner.framework */, + 2AC5295B6ADEC13901A4281A /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -203,7 +203,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - E21B2D2CCD3CE8A2142D0F2C /* [CP] Check Pods Manifest.lock */, + 6A195BB0776CA9E53EAA143A /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, 7AD318F74F39A70FCC91E66D /* Frameworks */, @@ -222,15 +222,15 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 3F036A01BF594E9B01799541 /* [CP] Check Pods Manifest.lock */, + 495F1A7DF9442FE345F87EDB /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 854CC60BC5A3FC7474EC1FBF /* [CP] Embed Pods Frameworks */, - 7ADB08D4DE3D2A2E09575068 /* [CP] Copy Pods Resources */, + 87F758C3C5B8AE624C4BE481 /* [CP] Embed Pods Frameworks */, + 99A28AAD8EACCE6238494873 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -328,7 +328,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 3F036A01BF594E9B01799541 /* [CP] Check Pods Manifest.lock */ = { + 495F1A7DF9442FE345F87EDB /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -350,24 +350,29 @@ 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; }; - 7ADB08D4DE3D2A2E09575068 /* [CP] Copy Pods Resources */ = { + 6A195BB0776CA9E53EAA143A /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", ); - name = "[CP] Copy Pods Resources"; + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; + 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; }; - 854CC60BC5A3FC7474EC1FBF /* [CP] Embed Pods Frameworks */ = { + 87F758C3C5B8AE624C4BE481 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -399,26 +404,21 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - E21B2D2CCD3CE8A2142D0F2C /* [CP] Check Pods Manifest.lock */ = { + 99A28AAD8EACCE6238494873 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Copy Pods Resources"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -550,7 +550,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 43385D55BAC53942A4B30B22 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 0A588BA0B74F002C38F0E4F0 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -569,7 +569,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 45F2ED245254D48D155DD716 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = F8C2B267C197A536F06ED67A /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -586,7 +586,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 42939EAD96568C1F3F0E8006 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 0116059C9A3684AC66E6EA10 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; diff --git a/lib/controller/auth/captin/ml_google_doc.dart b/lib/controller/auth/captin/ml_google_doc.dart index 35976ab..87b70a2 100644 --- a/lib/controller/auth/captin/ml_google_doc.dart +++ b/lib/controller/auth/captin/ml_google_doc.dart @@ -1,93 +1,93 @@ import 'dart:io'; import 'package:get/get.dart'; -import 'package:google_mlkit_text_recognition/google_mlkit_text_recognition.dart'; +// import 'package:google_mlkit_text_recognition/google_mlkit_text_recognition.dart'; import 'package:image_cropper/image_cropper.dart'; import 'package:image_picker/image_picker.dart'; import 'package:sefer_driver/constant/colors.dart'; import 'package:sefer_driver/controller/functions/llama_ai.dart'; -class CarRegistrationRecognizerController extends GetxController { - @override - void onInit() { - // scanText(); - super.onInit(); - } +// class CarRegistrationRecognizerController extends GetxController { +// @override +// void onInit() { +// // scanText(); +// super.onInit(); +// } - // The ImagePicker instance - final ImagePicker _imagePicker = ImagePicker(); +// // The ImagePicker instance +// final ImagePicker _imagePicker = ImagePicker(); - // The GoogleMlKit TextRecognizer instance - final TextRecognizer _textRecognizer = TextRecognizer(); +// // The GoogleMlKit TextRecognizer instance +// // final TextRecognizer _textRecognizer = TextRecognizer(); - // The scanned text - String? scannedText; - String? jsonOutput; - final List> lines = []; - Map extracted = {}; - XFile? image; - CroppedFile? croppedFile; - // Picks an image from the camera or gallery and extracts the text - final List> extractedTextWithCoordinates = []; +// // The scanned text +// String? scannedText; +// String? jsonOutput; +// final List> lines = []; +// Map extracted = {}; +// XFile? image; +// CroppedFile? croppedFile; +// // Picks an image from the camera or gallery and extracts the text +// final List> extractedTextWithCoordinates = []; - Future scanText() async { - // Pick an image from the camera or gallery - image = await _imagePicker.pickImage(source: ImageSource.gallery); - update(); +// Future scanText() async { +// // Pick an image from the camera or gallery +// image = await _imagePicker.pickImage(source: ImageSource.gallery); +// update(); - // If no image was picked, return - if (image == null) { - return; - } +// // If no image was picked, return +// if (image == null) { +// return; +// } - // Crop the image - croppedFile = await ImageCropper().cropImage( - sourcePath: image!.path, - // - uiSettings: [ - AndroidUiSettings( - toolbarTitle: 'Cropper'.tr, - toolbarColor: AppColor.blueColor, - toolbarWidgetColor: AppColor.yellowColor, - initAspectRatio: CropAspectRatioPreset.original, - lockAspectRatio: false), - IOSUiSettings( - title: 'Cropper'.tr, - ), - ], - ); +// // Crop the image +// croppedFile = await ImageCropper().cropImage( +// sourcePath: image!.path, +// // +// uiSettings: [ +// AndroidUiSettings( +// toolbarTitle: 'Cropper'.tr, +// toolbarColor: AppColor.blueColor, +// toolbarWidgetColor: AppColor.yellowColor, +// initAspectRatio: CropAspectRatioPreset.original, +// lockAspectRatio: false), +// IOSUiSettings( +// title: 'Cropper'.tr, +// ), +// ], +// ); - // If no cropped image was obtained, return - if (croppedFile == null) { - return; - } +// // If no cropped image was obtained, return +// if (croppedFile == null) { +// return; +// } - // Convert the cropped file to an InputImage object - final InputImage inputImage = InputImage.fromFile(File(croppedFile!.path)); +// // Convert the cropped file to an InputImage object +// final InputImage inputImage = InputImage.fromFile(File(croppedFile!.path)); - // Recognize the text in the image - final RecognizedText recognizedText = - await _textRecognizer.processImage(inputImage); - scannedText = recognizedText.text; +// // Recognize the text in the image +// final RecognizedText recognizedText = +// await _textRecognizer.processImage(inputImage); +// scannedText = recognizedText.text; - // Extract the scanned text line by line - final List> lines = []; - for (var i = 0; i < recognizedText.blocks.length; i++) { - lines.add({ - i.toString(): recognizedText.blocks[i].text, - }); - } +// // Extract the scanned text line by line +// final List> lines = []; +// for (var i = 0; i < recognizedText.blocks.length; i++) { +// lines.add({ +// i.toString(): recognizedText.blocks[i].text, +// }); +// } - String result = lines.map((map) => map.values.first.toString()).join(' '); - if (result.length > 2200) { - result = result.substring(0, 2200); - } - Map result2 = await LlamaAi().getCarRegistrationData(result, - 'vin,make,made,year,expiration_date,color,owner,registration_date'); // +// String result = lines.map((map) => map.values.first.toString()).join(' '); +// if (result.length > 2200) { +// result = result.substring(0, 2200); +// } +// Map result2 = await LlamaAi().getCarRegistrationData(result, +// 'vin,make,made,year,expiration_date,color,owner,registration_date'); // - // Assign the result to the extracted variable - extracted = result2; +// // Assign the result to the extracted variable +// extracted = result2; - update(); - } -} +// update(); +// } +// } diff --git a/lib/controller/auth/captin/register_captin_controller.dart b/lib/controller/auth/captin/register_captin_controller.dart index 2a0ff38..5a15351 100644 --- a/lib/controller/auth/captin/register_captin_controller.dart +++ b/lib/controller/auth/captin/register_captin_controller.dart @@ -313,7 +313,7 @@ class RegisterCaptainController extends GetxController { '') { Get.offAll(() => HomeCaptain()); } else { - Get.to(() => CarLicensePage()); + // Get.to(() => CarLicensePage()); } } } diff --git a/lib/controller/firebase/local_notification.dart b/lib/controller/firebase/local_notification.dart index b97c99e..78c38f9 100644 --- a/lib/controller/firebase/local_notification.dart +++ b/lib/controller/firebase/local_notification.dart @@ -29,8 +29,8 @@ class NotificationController extends GetxController { requestAlertPermission: true, requestBadgePermission: true, requestSoundPermission: true, - onDidReceiveLocalNotification: - (int id, String? title, String? body, String? payload) async {}, + // onDidReceiveLocalNotification: + // (int id, String? title, String? body, String? payload) async {}, ); InitializationSettings initializationSettings = InitializationSettings(android: android, iOS: ios); @@ -176,11 +176,12 @@ class NotificationController extends GetxController { message, scheduledTime, details, - androidAllowWhileIdle: true, + // androidAllowWhileIdle: true, uiLocalNotificationDateInterpretation: UILocalNotificationDateInterpretation.absoluteTime, - matchDateTimeComponents: - DateTimeComponents.time, // Triggers daily at the same time + matchDateTimeComponents: DateTimeComponents.time, + androidScheduleMode: + AndroidScheduleMode.alarmClock, // Triggers daily at the same time ); print('Notification scheduled successfully'); } @@ -232,6 +233,7 @@ class NotificationController extends GetxController { uiLocalNotificationDateInterpretation: UILocalNotificationDateInterpretation.absoluteTime, matchDateTimeComponents: DateTimeComponents.time, + androidScheduleMode: AndroidScheduleMode.alarmClock, ); print('Notification scheduled successfully'); }); @@ -397,10 +399,11 @@ class NotificationController extends GetxController { message.tr, scheduledTime, details, - androidAllowWhileIdle: true, + // androidAllowWhileIdle: true, uiLocalNotificationDateInterpretation: UILocalNotificationDateInterpretation.absoluteTime, matchDateTimeComponents: DateTimeComponents.time, + androidScheduleMode: AndroidScheduleMode.alarmClock, ); }); diff --git a/lib/controller/functions/camer_controller.dart b/lib/controller/functions/camer_controller.dart index 67820d9..dc682aa 100644 --- a/lib/controller/functions/camer_controller.dart +++ b/lib/controller/functions/camer_controller.dart @@ -3,7 +3,7 @@ import 'dart:io'; import 'package:camera/camera.dart'; import 'package:get/get.dart'; -import 'package:google_mlkit_text_recognition/google_mlkit_text_recognition.dart'; +// import 'package:google_mlkit_text_recognition/google_mlkit_text_recognition.dart'; import 'package:sefer_driver/constant/box_name.dart'; import 'package:sefer_driver/constant/links.dart'; import 'package:sefer_driver/views/widgets/elevated_btn.dart'; @@ -16,7 +16,7 @@ class CameraClassController extends GetxController { late CameraController cameraController; late List cameras; bool isCameraInitialized = false; - final TextRecognizer _textRecognizer = TextRecognizer(); + // final TextRecognizer _textRecognizer = TextRecognizer(); String? scannedText; bool isloading = false; @@ -126,45 +126,45 @@ class CameraClassController extends GetxController { return responseString; } - Future takePictureAndMLGoogleScan() async { - try { - // Construct the path for the image file - final directory = await path_provider.getTemporaryDirectory(); - final imagePath = - path.join(directory.path, '${box.read(BoxName.driverID)}.png'); + // Future takePictureAndMLGoogleScan() async { + // try { + // // Construct the path for the image file + // final directory = await path_provider.getTemporaryDirectory(); + // final imagePath = + // path.join(directory.path, '${box.read(BoxName.driverID)}.png'); - // Capture the image and save it to the specified path - final XFile capturedImage = await cameraController.takePicture(); + // // Capture the image and save it to the specified path + // final XFile capturedImage = await cameraController.takePicture(); - // Move the captured image to the desired path - await capturedImage.saveTo(imagePath); + // // Move the captured image to the desired path + // await capturedImage.saveTo(imagePath); - // Recognize the text in the image - final InputImage inputImage = - InputImage.fromFile(File(capturedImage.path)); - final RecognizedText recognizedText = - await _textRecognizer.processImage(inputImage); - scannedText = recognizedText.text; + // // Recognize the text in the image + // final InputImage inputImage = + // InputImage.fromFile(File(capturedImage.path)); + // final RecognizedText recognizedText = + // await _textRecognizer.processImage(inputImage); + // scannedText = recognizedText.text; - // Extract the scanned text line by line - final List> lines = []; - for (var i = 0; i < recognizedText.blocks.length; i++) { - lines.add({ - 'line_number': i, - 'text': recognizedText.blocks[i].text, - }); - } + // // Extract the scanned text line by line + // final List> lines = []; + // for (var i = 0; i < recognizedText.blocks.length; i++) { + // lines.add({ + // 'line_number': i, + // 'text': recognizedText.blocks[i].text, + // }); + // } - // Convert the list of lines to a JSON string - final String jsonOutput = jsonEncode(lines); + // // Convert the list of lines to a JSON string + // final String jsonOutput = jsonEncode(lines); - update(); + // update(); - // Print the JSON output + // // Print the JSON output - // Get.back(); - } catch (e) {} - } + // // Get.back(); + // } catch (e) {} + // } String getTextAsJSON(String text) { final lines = text.split('\n'); diff --git a/lib/controller/functions/gemeni.dart b/lib/controller/functions/gemeni.dart index af27198..c939179 100644 --- a/lib/controller/functions/gemeni.dart +++ b/lib/controller/functions/gemeni.dart @@ -42,6 +42,8 @@ enum DocumentType { carLicenseFront, carLicenseBack, idCardFront, + nonIdCardFront, + nonIdCardBack, idCardBack, driverLicense, unknown, @@ -150,6 +152,14 @@ class AI extends GetxController { // Check if the inspection date is before today final inspectionDateTime = DateTime(year, 12, 31); final isInspectionExpired = inspectionDateTime.isBefore(today); +// Add birthdate comparison for non-Egyptian ID + final frontBirthDate = + DateTime.tryParse(responseNonIdCardFront['birthdate'] ?? ''); + final backBirthDate = + DateTime.tryParse(responseNonIdCardBack['birthDate'] ?? ''); + final birthdatesMismatch = frontBirthDate != null && + backBirthDate != null && + frontBirthDate != backBirthDate; if (isExpiredCar || isInspectionExpired) { Get.defaultDialog( @@ -186,6 +196,41 @@ class AI extends GetxController { ), ], ); + } else if (birthdatesMismatch && !isEgypt) { + Get.defaultDialog( + title: 'Birthdate Mismatch'.tr, + content: Column( + mainAxisSize: MainAxisSize.min, + children: [ + const Icon(Icons.warning, size: 48, color: Colors.red), + const SizedBox(height: 16), + Text( + "The birthdate on your ID front doesn't match the one on the back. Please verify your documents." + .tr, + textAlign: TextAlign.center, + style: AppStyle.title, + ), + const SizedBox(height: 16), + IconButton( + onPressed: () async { + await Get.find().speakText( + "The birthdate on your ID front doesn't match the one on the back. Please verify your documents." + .tr, + ); + }, + icon: const Icon(Icons.volume_up), + ), + ], + ), + actions: [ + TextButton( + onPressed: () { + Get.back(); + }, + child: const Text('OK'), + ), + ], + ); } else if (isExpired) { Get.defaultDialog( title: 'Expired Driver’s License'.tr, @@ -298,7 +343,7 @@ class AI extends GetxController { // ); // } else { - await addDriverEgypt(); + isEgypt ? await addDriverEgypt() : await addDriverForeign(); await addRegistrationCarEgypt(); if (isCarSaved && isDriverSaved) { @@ -343,6 +388,99 @@ class AI extends GetxController { return dob; } + Future addDriverForeign() async { + isLoading = true; + update(); + + var payload = { + 'first_name': + responseNonIdCardFront['full_name']?.toString().split(' ')[0] ?? + 'Not specified', + 'last_name': + responseNonIdCardFront['full_name']?.toString().split(' ').last ?? + 'Not specified', + 'email': box.read(BoxName.emailDriver)?.toString() ?? 'Not specified', + 'phone': box.read(BoxName.phoneDriver)?.toString() ?? 'Not specified', + 'id': box.read(BoxName.driverID)?.toString() ?? 'Not specified', + 'password': + Get.put(LoginDriverController()).passwordController.text.isEmpty + ? box.read(BoxName.emailDriver).toString() + : Get.find() + .passwordController + .text + .toString(), + 'gender': responseNonIdCardFront['gender']?.toString() ?? 'Not specified', + 'license_type': 'Foreign', + 'national_number': + responseNonIdCardFront['passport_no']?.toString() ?? 'Not specified', + 'name_arabic': + responseNonIdCardFront['full_name']?.toString() ?? 'Not specified', + 'name_english': 'Not specified', + 'issue_date': + responseNonIdCardBack['issueDate']?.toString() ?? 'Not specified', + 'expiry_date': + responseNonIdCardBack['residencyExpirationDate']?.toString() ?? + 'Not specified', + 'license_categories': responseIdEgyptDriverLicense['license_categories'] + is List + ? responseIdEgyptDriverLicense['license_categories'].join(', ') + : responseIdEgyptDriverLicense['license_categories']?.toString() ?? + 'Not specified', + 'address': + responseNonIdCardFront['address']?.toString() ?? 'Not specified', + 'card_id': + responseNonIdCardFront['card_id']?.toString() ?? 'Not specified', + 'occupation': + responseNonIdCardBack['workStatus']?.toString() ?? 'Not specified', + 'education': 'Not specified', + 'licenseIssueDate': + responseNonIdCardBack['issueDate']?.toString() ?? 'Not specified', + 'religion': + responseNonIdCardFront['country']?.toString() ?? 'Not specified', + 'status': 'yet', + 'birthdate': + responseNonIdCardFront['birthdate']?.toString() ?? 'Not specified', + 'maritalStatus': 'Not specified', + 'site': responseNonIdCardFront['address']?.toString() ?? 'Not specified', + 'employmentType': + responseNonIdCardBack['residencyType']?.toString() ?? 'Not specified', + }; + + try { + var res = await CRUD().post(link: AppLink.signUpCaptin, payload: payload); + + var status1; + try { + status1 = jsonDecode(res); + } catch (e) { + throw FormatException("Invalid JSON response: $res"); + } + + isLoading = false; + update(); + + if (status1['status'] == 'success') { + isDriverSaved = true; + CRUD().post( + link: '${AppLink.seferGizaServer}/auth/captin/register.php', + payload: payload); + CRUD().post( + link: '${AppLink.seferAlexandriaServer}/auth/captin/register.php', + payload: payload); + mySnackbarSuccess('Foreign driver data saved successfully'); + } else { + mySnackeBarError( + '${'Failed to save driver data'.tr}: ${status1['message']}'); + } + } catch (e) { + isLoading = false; + update(); + mySnackeBarError( + 'An error occurred while saving driver data'.tr, + ); + } + } + Future addDriverEgypt() async { isLoading = true; update(); @@ -542,16 +680,24 @@ class AI extends GetxController { Map responseForComplaint = {}; Map responseIdCardDriverEgyptFront = {}; Map responseIdEgyptFront = {}; + Map responseNonIdCardFront = {}; + Map responseNonIdCardBack = {}; Map responseCriminalRecordEgypt = {}; Map responseIdEgyptBack = {}; Map responseIdEgyptDriverLicense = {}; String? responseIdCardDriverEgypt1; bool isloading = false; bool isLoading = false; + bool isEgypt = true; var image; CroppedFile? croppedFile; DateTime now = DateTime.now(); + changeNationality() { + isEgypt = !isEgypt; + update(); + } + Future pickImage() async { final pickedImage = await picker.pickImage(source: ImageSource.gallery); @@ -607,6 +753,12 @@ class AI extends GetxController { ], DocumentType.idCardBack: ['البطاقةساريةحتى'], DocumentType.driverLicense: ['قيادةخاصة', 'خاصه', 'قيادة'], + DocumentType.nonIdCardFront: ['Foreign Residence Card', 'أجنبي', 'جواز'], + DocumentType.nonIdCardBack: [ + 'نوع الإقامة', + 'الإقامة', + 'Cardexpiresbyendofresidencepermit' + ], }; // Check each document type @@ -637,7 +789,10 @@ class AI extends GetxController { var extractedString = await CRUD().arabicTextExtractByVisionAndAI(imagePath: imagePath); var json = jsonDecode(extractedString); + // Log.print('extractedString: ${extractedString}'); var textValues = CRUD().extractTextFromLines(json); + Log.print('textValues: ${textValues}'); + // Log.print('json: ${json}'); DocumentType detectedType = checkDocumentType(textValues); String expectedDocument = getExpectedDocument(imagePath); @@ -720,6 +875,10 @@ class AI extends GetxController { return 'id_card_back'.tr; case 'id_front': return 'id_card_front'.tr; + case 'non_id_front': + return 'non_id_card_front'.tr; + case 'non_id_back': + return 'non_id_card_back'.tr; case 'driver_license': return 'driver_license'.tr; default: @@ -737,6 +896,10 @@ class AI extends GetxController { return DocumentType.idCardBack; case 'id_front': return DocumentType.idCardFront; + case 'non_id_front': + return DocumentType.nonIdCardFront; + case 'non_id_back': + return DocumentType.nonIdCardBack; case 'driver_license': return DocumentType.driverLicense; default: @@ -754,6 +917,10 @@ class AI extends GetxController { return 'id_card_front'.tr; case DocumentType.idCardBack: return 'id_card_back'.tr; + case DocumentType.nonIdCardFront: + return 'non_id_card_front'.tr; + case DocumentType.nonIdCardBack: + return 'non_id_card_back'.tr; case DocumentType.driverLicense: return 'driver_license'.tr; default: @@ -938,6 +1105,11 @@ class AI extends GetxController { } else if (idType == 'criminalRecord') { responseCriminalRecordEgypt = jsonDecode(responseData['content'][0]['text']); + } else if (idType == 'non_id_front') { + responseNonIdCardFront = jsonDecode(responseData['content'][0]['text']); + Log.print('responseNonIdCardFront: ${responseNonIdCardFront}'); + } else if (idType == 'non_id_back') { + responseNonIdCardBack = jsonDecode(responseData['content'][0]['text']); } update(); @@ -1014,6 +1186,12 @@ class AI extends GetxController { responseIdEgyptBack = jsonDecode(jsonString); } else if (idType == 'driver_license') { responseIdEgyptDriverLicense = jsonDecode(jsonString); + } else if (idType == 'non_id_front') { + responseNonIdCardFront = + jsonDecode(responseData['content'][0]['text']); + } else if (idType == 'non_id_back') { + responseNonIdCardBack = + jsonDecode(responseData['content'][0]['text']); } update(); diff --git a/lib/controller/functions/location_controller.dart b/lib/controller/functions/location_controller.dart index 1e07e38..d186044 100644 --- a/lib/controller/functions/location_controller.dart +++ b/lib/controller/functions/location_controller.dart @@ -1,21 +1,20 @@ import 'dart:async'; -import 'package:sefer_driver/controller/home/captin/home_captain_controller.dart'; import 'package:get/get.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; import 'package:location/location.dart'; -import 'package:sefer_driver/constant/box_name.dart'; -import 'package:sefer_driver/constant/links.dart'; -import 'package:sefer_driver/controller/functions/crud.dart'; -import 'package:sefer_driver/controller/home/payment/captain_wallet_controller.dart'; -import 'package:sefer_driver/main.dart'; +import '../../constant/box_name.dart'; +import '../../constant/links.dart'; +import '../../main.dart'; import '../../print.dart'; +import '../home/captin/home_captain_controller.dart'; +import '../home/payment/captain_wallet_controller.dart'; +import 'crud.dart'; -// LocationController.dart class LocationController extends GetxController { LocationData? _currentLocation; - late Location location; + late Location location = Location(); bool isLoading = false; late double heading = 0; late double accuracy = 0; @@ -28,7 +27,7 @@ class LocationController extends GetxController { late double speedAccuracy = 0; late double headingAccuracy = 0; bool isActive = false; - late LatLng myLocation; + late LatLng myLocation = LatLng(0, 0); // Default value String totalPoints = '0'; LocationData? get currentLocation => _currentLocation; Timer? _locationTimer; @@ -36,13 +35,13 @@ class LocationController extends GetxController { @override void onInit() async { super.onInit(); - location = Location(); - getLocation(); - // startLocationUpdates(); + location = Location(); // Initialize the location object + await getLocation(); // Fetch the location immediately + startLocationUpdates(); // Start periodic location updates totalPoints = Get.put(CaptainWalletController()).totalPoints.toString(); - // isActive = Get.put(HomeCaptainController()).isActive; - } // Function to determine which area the coordinates belong to + isActive = Get.put(HomeCaptainController()).isActive; + } String getLocationArea(double latitude, double longitude) { if (latitude >= 29.918901 && @@ -67,6 +66,10 @@ class LocationController extends GetxController { Future startLocationUpdates() async { if (box.read(BoxName.driverID) != null) { + if (location == null) { + location = Location(); // Ensure location is initialized + } + _locationTimer = Timer.periodic(const Duration(seconds: 5), (timer) async { try { @@ -77,10 +80,12 @@ class LocationController extends GetxController { if (isActive) { if (double.parse(totalPoints) > -300) { await getLocation(); + if (myLocation == null) { + return; + } print( 'Latitude: ${myLocation.latitude}, Longitude: ${myLocation.longitude}'); -// Determine the area String area = getLocationArea(myLocation.latitude, myLocation.longitude); print('Determined Area: $area'); @@ -89,56 +94,25 @@ class LocationController extends GetxController { switch (area) { case 'Cairo': - print('Area matched: Cairo'); box.write(BoxName.serverChosen, AppLink.seferCairoServer); endpoint = AppLink.addCarsLocationCairoEndpoint; break; case 'Giza': - print('Area matched: Giza'); box.write(BoxName.serverChosen, AppLink.seferGizaServer); endpoint = AppLink.addCarsLocationGizaEndpoint; break; case 'Alexandria': - print('Area matched: Alexandria'); box.write( BoxName.serverChosen, AppLink.seferAlexandriaServer); endpoint = AppLink.addCarsLocationAlexandriaEndpoint; break; default: - print('Unknown location area. Fallback to Cairo'); endpoint = AppLink.addCarsLocationCairoEndpoint; box.write(BoxName.serverChosen, AppLink.seferCairoServer); } + Log.print('Final Endpoint: $endpoint'); - switch (area) { - case 'Cairo': - box.write(BoxName.serverChosen, AppLink.seferCairoServer); - endpoint = AppLink.addCarsLocationCairoEndpoint; - Log.print('Endpoint: $endpoint'); - break; - case 'Giza': - box.write(BoxName.serverChosen, AppLink.seferGizaServer); - endpoint = AppLink.addCarsLocationGizaEndpoint; - Log.print('Endpoint: $endpoint'); - break; - case 'Alexandria': - box.write( - BoxName.serverChosen, AppLink.seferAlexandriaServer); - endpoint = AppLink.addCarsLocationAlexandriaEndpoint; - Log.print('Endpoint: $endpoint'); - break; - default: - // Handle any other unexpected cases - print('Unknown location area'); - endpoint = AppLink - .addCarsLocationCairoEndpoint; // Fallback to Cairo endpoint - Log.print('Fallback Endpoint: $endpoint'); - box.write(BoxName.serverChosen, AppLink.seferCairoServer); - return; - } - - // Ensure driver ID exists before making the API call if (box.read(BoxName.driverID) != null) { await CRUD().post(link: endpoint, payload: { 'driver_id': box.read(BoxName.driverID).toString(), @@ -154,7 +128,6 @@ class LocationController extends GetxController { 'status': box.read(BoxName.statusDriverLocation).toString(), }); - // Update the camera position on the map Get.find() .mapHomeCaptainController ?.animateCamera( @@ -169,7 +142,6 @@ class LocationController extends GetxController { } } } catch (e) { - // Handle the error gracefully Log.print('Error during location update: $e'); } }); @@ -181,75 +153,58 @@ class LocationController extends GetxController { } Future getLocation() async { - // isLoading = true; - // update(); + if (location == null) { + location = Location(); // Ensure location is initialized + } + bool serviceEnabled; PermissionStatus permissionGranted; - // Check if location services are enabled serviceEnabled = await location.serviceEnabled(); if (!serviceEnabled) { serviceEnabled = await location.requestService(); if (!serviceEnabled) { - // Location services are still not enabled, handle the error return; } } - // Check if the app has permission to access location permissionGranted = await location.hasPermission(); if (permissionGranted == PermissionStatus.denied) { permissionGranted = await location.requestPermission(); if (permissionGranted != PermissionStatus.granted) { - // Location permission is still not granted, handle the error return; } } - // Configure location accuracy - // LocationAccuracy desiredAccuracy = LocationAccuracy.high; - - // Get the current location LocationData _locationData = await location.getLocation(); - myLocation = - (_locationData.latitude != null && _locationData.longitude != null - ? LatLng(_locationData.latitude!, _locationData.longitude!) - : null)!; - getLocationArea(_locationData.latitude!, _locationData.longitude!); - speed = _locationData.speed!; - heading = _locationData.heading!; -// Calculate the distance between the current location and the previous location + if (_locationData.latitude != null && _locationData.longitude != null) { + myLocation = LatLng(_locationData.latitude!, _locationData.longitude!); + } else { + myLocation = LatLng(0, 0); // Default value + } + + speed = _locationData.speed ?? 0; + heading = _locationData.heading ?? 0; + if (Get.find().rideId == 'rideId') { - Log.print( - 'Get.find().rideId: ${Get.find().rideId}'); if (previousTime > 0) { double distance = calculateDistanceInKmPerHour( previousTime, _locationData.time, speed); totalDistance += distance; } - - previousTime = _locationData.time!; + previousTime = _locationData.time ?? 0; } - // Print location details - // isLoading = false; + update(); } double calculateDistanceInKmPerHour( double? startTime, double? endTime, double speedInMetersPerSecond) { - // Calculate the time difference in hours - double timeDifferenceInHours = (endTime! - startTime!) / 1000 / 3600; - - // Convert speed to kilometers per hour + double timeDifferenceInHours = + (endTime ?? 0 - startTime! ?? 0) / 1000 / 3600; double speedInKmPerHour = speedInMetersPerSecond * 3.6; - - // Calculate the distance in kilometers double distanceInKilometers = speedInKmPerHour * timeDifferenceInHours; - - // Convert distance from kilometers to meters double distanceInMeters = distanceInKilometers * 1000; - - // If the calculated distance is less than 6 meters, return 0 to avoid fake distance return distanceInMeters < 5 ? 0 : distanceInKilometers; } } diff --git a/lib/controller/home/captin/home_captain_controller.dart b/lib/controller/home/captin/home_captain_controller.dart index ada631c..c0fc0e4 100644 --- a/lib/controller/home/captin/home_captain_controller.dart +++ b/lib/controller/home/captin/home_captain_controller.dart @@ -90,7 +90,7 @@ class HomeCaptainController extends GetxController { isActive = !isActive; if (isActive) { if (double.parse(totalPoints) > -300) { - locationController.startLocationUpdates(); + // locationController.startLocationUpdates(); // locationBackController.startBackLocation(); activeStartTime = DateTime.now(); activeTimer = Timer.periodic(const Duration(seconds: 1), (timer) { diff --git a/lib/controller/home/captin/map_driver_controller.dart b/lib/controller/home/captin/map_driver_controller.dart index ffbfb2f..f7fe37c 100644 --- a/lib/controller/home/captin/map_driver_controller.dart +++ b/lib/controller/home/captin/map_driver_controller.dart @@ -584,7 +584,7 @@ class MapDriverController extends GetxController { Get.find().myLocation.longitude, ); - if (distanceToDestination > double.parse(distance.toString()) / 3) { + if (distanceToDestination > (double.parse(distance.toString()) / 3)) { Log.print('distanceToDestination: ${distanceToDestination}'); MyDialog().getDialog( diff --git a/lib/controller/local/translations.dart b/lib/controller/local/translations.dart index c2df55e..782d122 100644 --- a/lib/controller/local/translations.dart +++ b/lib/controller/local/translations.dart @@ -170,7 +170,7 @@ class MyTranslation extends Translations { 'Remaining time': 'الوقت المتبقي', 'Add bank Account': 'إضافة حساب بنكي', 'Are you sure to exit ride?': 'هل أنت متأكد من إنهاء الرحلة؟', - + "Today": "اليوم", "seconds": "ثواني", 'You will cancel registration': 'ستقوم بإلغاء التسجيل', "Create new Account": "إنشاء حساب جديد", diff --git a/lib/controller/notification/ride_available_controller.dart b/lib/controller/notification/ride_available_controller.dart index 609de17..e9fc9d7 100644 --- a/lib/controller/notification/ride_available_controller.dart +++ b/lib/controller/notification/ride_available_controller.dart @@ -81,8 +81,8 @@ class RideAvailableController extends GetxController { getRideAvailable() async { isLoading = true; LatLngBounds bounds = calculateBounds( - Get.find().myLocation.latitude, - Get.find().myLocation.longitude, + Get.find().myLocation!.latitude, + Get.find().myLocation!.longitude, 4000); var payload = { // "carType": box.read(BoxName.carTypeOfDriver).toString(), diff --git a/lib/controller/rate/rate_conroller.dart b/lib/controller/rate/rate_conroller.dart index 9a1acaf..9e18eb8 100644 --- a/lib/controller/rate/rate_conroller.dart +++ b/lib/controller/rate/rate_conroller.dart @@ -44,7 +44,8 @@ class RateController extends GetxController { Future addPassengerWallet() async { if (formKey.currentState!.validate()) { var priceOfTrip = - double.parse(Get.find().paymentAmount); + double.parse(price.toString()); + // double.parse(Get.find().paymentAmount); double remainingFee = double.parse(passengerPayAmount.text) - priceOfTrip; if (remainingFee > 0) { var paymentToken2 = await Get.find() diff --git a/lib/main.dart b/lib/main.dart index 3135c26..2e73a6d 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -23,7 +23,6 @@ import 'constant/notification.dart'; import 'controller/firebase/firbase_messge.dart'; import 'controller/firebase/local_notification.dart'; import 'controller/functions/location_controller.dart'; -import 'controller/functions/overlay_permisssion.dart'; import 'controller/local/local_controller.dart'; import 'controller/local/translations.dart'; import 'controller/payment/paymob/paymob_wallet.dart'; diff --git a/lib/views/auth/captin/car_license_page.dart b/lib/views/auth/captin/car_license_page.dart index 269d221..62a448b 100644 --- a/lib/views/auth/captin/car_license_page.dart +++ b/lib/views/auth/captin/car_license_page.dart @@ -10,160 +10,160 @@ import '../../../controller/auth/captin/register_captin_controller.dart'; import '../../widgets/elevated_btn.dart'; import '../../widgets/my_scafold.dart'; -class CarLicensePage extends StatelessWidget { - CarLicensePage({super.key}); - CarRegistrationRecognizerController carRegistrationRecognizerController = - Get.put(CarRegistrationRecognizerController()); - RegisterCaptainController registerCaptainController = - Get.put(RegisterCaptainController()); +// class CarLicensePage extends StatelessWidget { +// CarLicensePage({super.key}); +// // CarRegistrationRecognizerController carRegistrationRecognizerController = +// // Get.put(CarRegistrationRecognizerController()); +// RegisterCaptainController registerCaptainController = +// Get.put(RegisterCaptainController()); - @override - Widget build(BuildContext context) { - Get.find().uploadImagePortrate(); - return MyScafolld( - title: 'Car License Card'.tr, - body: [ - Positioned( - top: 3, - left: Get.width * .2, - right: Get.width * .2, - child: MyElevatedButton( - title: 'Take Picture Of ID Card'.tr, - onPressed: () async { - //0vQRyaYYDWpsv73A5CZOknseK7S2sgwE - //3vQRyaYYSWpmv69A58ZOkxmeK6M1mgwEDlXrXlBl - //0pALdqDDYHvzp73Q59SIgbzjG7Z2zkhJXr - // String? visionApi = AK.serverPHP; - await carRegistrationRecognizerController.scanText(); - }, - )), - Positioned( - top: 50, - child: SizedBox( - height: Get.height * .6, - width: Get.width, - child: buildImageWithBoundingBoxes(), - ), - ), - Positioned( - bottom: Get.height * .2, - left: Get.width * .2, - right: Get.width * .2, - child: MyElevatedButton( - title: 'Register'.tr, - onPressed: () async { - // registerCaptainController.addLisence(); - // registerCaptainController.register(); - registerCaptainController.addRegisrationCarForDriver( - carRegistrationRecognizerController.extracted['vin'], - carRegistrationRecognizerController.extracted['make'], - carRegistrationRecognizerController.extracted['model'], - carRegistrationRecognizerController.extracted['year'], - carRegistrationRecognizerController.extracted['color'], - carRegistrationRecognizerController.extracted['owner'], - carRegistrationRecognizerController - .extracted['expiration_date'], - carRegistrationRecognizerController - .extracted['registration_date'], - ); - }, - )), - ], - isleading: true); - } -} +// @override +// Widget build(BuildContext context) { +// Get.find().uploadImagePortrate(); +// return MyScafolld( +// title: 'Car License Card'.tr, +// body: [ +// Positioned( +// top: 3, +// left: Get.width * .2, +// right: Get.width * .2, +// child: MyElevatedButton( +// title: 'Take Picture Of ID Card'.tr, +// onPressed: () async { +// //0vQRyaYYDWpsv73A5CZOknseK7S2sgwE +// //3vQRyaYYSWpmv69A58ZOkxmeK6M1mgwEDlXrXlBl +// //0pALdqDDYHvzp73Q59SIgbzjG7Z2zkhJXr +// // String? visionApi = AK.serverPHP; +// await carRegistrationRecognizerController.scanText(); +// }, +// )), +// Positioned( +// top: 50, +// child: SizedBox( +// height: Get.height * .6, +// width: Get.width, +// child: buildImageWithBoundingBoxes(), +// ), +// ), +// Positioned( +// bottom: Get.height * .2, +// left: Get.width * .2, +// right: Get.width * .2, +// child: MyElevatedButton( +// title: 'Register'.tr, +// onPressed: () async { +// // registerCaptainController.addLisence(); +// // registerCaptainController.register(); +// registerCaptainController.addRegisrationCarForDriver( +// carRegistrationRecognizerController.extracted['vin'], +// carRegistrationRecognizerController.extracted['make'], +// carRegistrationRecognizerController.extracted['model'], +// carRegistrationRecognizerController.extracted['year'], +// carRegistrationRecognizerController.extracted['color'], +// carRegistrationRecognizerController.extracted['owner'], +// carRegistrationRecognizerController +// .extracted['expiration_date'], +// carRegistrationRecognizerController +// .extracted['registration_date'], +// ); +// }, +// )), +// ], +// isleading: true); +// } +// } -Widget buildImageWithBoundingBoxes() { - Get.put(CarRegistrationRecognizerController()); - return GetBuilder( - builder: (carRegistrationRecognizerController) => - carRegistrationRecognizerController.image == null || - carRegistrationRecognizerController.extracted.isEmpty - ? Center( - child: Text( - 'No image selected yet'.tr, - style: AppStyle.headTitle2, - )) - : Column( - children: [ - SizedBox( - width: Get.width * .8, - height: Get.width * .5, - child: Image.file( - File(carRegistrationRecognizerController - .croppedFile!.path), - // fit: BoxFit.fill, - )), - const SizedBox( - height: 20, - ), - Container( - decoration: AppStyle.boxDecoration, - height: Get.width * .5, - width: Get.width * .9, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [ - Text( - '${'Made :'.tr}${carRegistrationRecognizerController.extracted['make']}', - style: AppStyle.title, - ), - Text( - '${'model :'.tr}${carRegistrationRecognizerController.extracted['model']}', - style: AppStyle.title, - ), - ], - ), - Row( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [ - Text( - '${'VIN :'.tr}${carRegistrationRecognizerController.extracted['vin']}', - style: AppStyle.title, - ), - Text( - '${'year :'.tr}${carRegistrationRecognizerController.extracted['year']}', - style: AppStyle.title, - ), - ], - ), - Row( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [ - Column( - children: [ - Text( - 'expiration date :${carRegistrationRecognizerController.extracted['expiration_date']}', - style: AppStyle.title, - ), - Text( - 'registration date :${carRegistrationRecognizerController.extracted['registration_date']}', - style: AppStyle.title, - ), - ], - ), - Text( - 'color :${carRegistrationRecognizerController.extracted['color']}', - style: AppStyle.title, - ), - ], - ), - Row( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [ - Text( - 'owner :${carRegistrationRecognizerController.extracted['owner']}', - style: AppStyle.title, - ), - ], - ), - ], - ), - ) - ], - )); -} +// Widget buildImageWithBoundingBoxes() { +// Get.put(CarRegistrationRecognizerController()); +// return GetBuilder( +// builder: (carRegistrationRecognizerController) => +// carRegistrationRecognizerController.image == null || +// carRegistrationRecognizerController.extracted.isEmpty +// ? Center( +// child: Text( +// 'No image selected yet'.tr, +// style: AppStyle.headTitle2, +// )) +// : Column( +// children: [ +// SizedBox( +// width: Get.width * .8, +// height: Get.width * .5, +// child: Image.file( +// File(carRegistrationRecognizerController +// .croppedFile!.path), +// // fit: BoxFit.fill, +// )), +// const SizedBox( +// height: 20, +// ), +// Container( +// decoration: AppStyle.boxDecoration, +// height: Get.width * .5, +// width: Get.width * .9, +// child: Column( +// crossAxisAlignment: CrossAxisAlignment.start, +// mainAxisAlignment: MainAxisAlignment.spaceEvenly, +// children: [ +// Row( +// mainAxisAlignment: MainAxisAlignment.spaceEvenly, +// children: [ +// Text( +// '${'Made :'.tr}${carRegistrationRecognizerController.extracted['make']}', +// style: AppStyle.title, +// ), +// Text( +// '${'model :'.tr}${carRegistrationRecognizerController.extracted['model']}', +// style: AppStyle.title, +// ), +// ], +// ), +// Row( +// mainAxisAlignment: MainAxisAlignment.spaceEvenly, +// children: [ +// Text( +// '${'VIN :'.tr}${carRegistrationRecognizerController.extracted['vin']}', +// style: AppStyle.title, +// ), +// Text( +// '${'year :'.tr}${carRegistrationRecognizerController.extracted['year']}', +// style: AppStyle.title, +// ), +// ], +// ), +// Row( +// mainAxisAlignment: MainAxisAlignment.spaceEvenly, +// children: [ +// Column( +// children: [ +// Text( +// 'expiration date :${carRegistrationRecognizerController.extracted['expiration_date']}', +// style: AppStyle.title, +// ), +// Text( +// 'registration date :${carRegistrationRecognizerController.extracted['registration_date']}', +// style: AppStyle.title, +// ), +// ], +// ), +// Text( +// 'color :${carRegistrationRecognizerController.extracted['color']}', +// style: AppStyle.title, +// ), +// ], +// ), +// Row( +// mainAxisAlignment: MainAxisAlignment.spaceEvenly, +// children: [ +// Text( +// 'owner :${carRegistrationRecognizerController.extracted['owner']}', +// style: AppStyle.title, +// ), +// ], +// ), +// ], +// ), +// ) +// ], +// )); +// } diff --git a/lib/views/auth/captin/cards/egypt_card_a_i.dart b/lib/views/auth/captin/cards/egypt_card_a_i.dart index 51915b0..00ef592 100644 --- a/lib/views/auth/captin/cards/egypt_card_a_i.dart +++ b/lib/views/auth/captin/cards/egypt_card_a_i.dart @@ -3,7 +3,6 @@ import 'package:sefer_driver/controller/functions/gemeni.dart'; import 'package:sefer_driver/controller/functions/tts.dart'; import 'package:sefer_driver/views/widgets/elevated_btn.dart'; import 'package:sefer_driver/views/widgets/my_circular_indicator_timer.dart'; -import 'package:sefer_driver/views/widgets/my_textField.dart'; import 'package:sefer_driver/views/widgets/mydialoug.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -52,41 +51,70 @@ class EgyptCardAI extends StatelessWidget { padding: const EdgeInsets.all(8.0), child: Column( children: [ - (controller.responseIdCardDriverEgyptBack.isNotEmpty && - controller.responseIdCardDriverEgyptFront - .isNotEmpty && - controller.responseIdEgyptFront.isNotEmpty && - controller.responseIdEgyptBack.isNotEmpty && - controller - .responseIdEgyptDriverLicense.isNotEmpty - // && - // controller - // .responseCriminalRecordEgypt.isNotEmpty + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + (controller.responseIdCardDriverEgyptBack + .isNotEmpty && + controller.responseIdCardDriverEgyptFront + .isNotEmpty && + (controller + .responseIdEgyptFront.isNotEmpty || + controller.responseNonIdCardFront + .isNotEmpty) && + (controller + .responseIdEgyptBack.isNotEmpty || + controller.responseNonIdCardBack + .isNotEmpty) && + controller + .responseIdEgyptDriverLicense.isNotEmpty + // && + // controller + // .responseCriminalRecordEgypt.isNotEmpty + ) + ? MyElevatedButton( + title: 'Next'.tr, + kolor: AppColor.greenColor, + onPressed: () { + controller.addDriverAndCarEgypt(); + }) + : const SizedBox(), + Row( + children: [ + controller.isEgypt + ? MyElevatedButton( + title: 'For Egypt'.tr, + onPressed: () { + controller.changeNationality(); + }) + : MyElevatedButton( + title: 'Non Egypt'.tr, + onPressed: () { + controller.changeNationality(); + }), + ], ) - ? MyElevatedButton( - title: 'Next'.tr, - onPressed: () { - controller.addDriverAndCarEgypt(); - }) - : const SizedBox(), + ], + ), SizedBox( height: - (controller.responseIdCardDriverEgyptBack - .isNotEmpty && - controller.responseIdCardDriverEgyptFront - .isNotEmpty && - controller - .responseIdEgyptFront.isNotEmpty && - controller - .responseIdEgyptBack.isNotEmpty && - controller.responseIdEgyptDriverLicense - .isNotEmpty - // && - // controller.responseCriminalRecordEgypt - // .isNotEmpty - ) - ? Get.height * .7 - : Get.height * .85, + // (controller.responseIdCardDriverEgyptBack + // .isNotEmpty && + // controller.responseIdCardDriverEgyptFront + // .isNotEmpty && + // controller + // .responseIdEgyptFront.isNotEmpty && + // controller + // .responseIdEgyptBack.isNotEmpty && + // controller.responseIdEgyptDriverLicense + // .isNotEmpty + // && + // controller.responseCriminalRecordEgypt + // .isNotEmpty + // ) + // ? + Get.height * .7, + // : Get.height * .85, child: ListView( children: [ Padding( @@ -109,8 +137,12 @@ class EgyptCardAI extends StatelessWidget { egyptDriverLicense(), egyptCarLicenceFront(), egyptCarLicenceBack(), - egyptDriverIDFront(), - egyptDriverIDBack(), + controller.isEgypt + ? egyptDriverIDFront() + : nonEgyptDriverIDFront(), + controller.isEgypt + ? egyptDriverIDBack() + : nonEgyptDriverIDBack(), // egyptCriminalRecord(), ], ), @@ -498,6 +530,109 @@ class EgyptCardAI extends StatelessWidget { ); } + GetBuilder nonEgyptDriverIDBack() { + return GetBuilder( + builder: (ai) { + if (ai.responseNonIdCardBack.isNotEmpty) { + final residencyExpiryDate = + ai.responseNonIdCardBack['residencyExpirationDate']; + final today = DateTime.now(); + final residencyExpiryDateTime = + DateTime.tryParse(residencyExpiryDate); + final isExpired = residencyExpiryDateTime != null && + residencyExpiryDateTime.isBefore(today); + + return Card( + elevation: 4.0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16.0), + ), + child: Padding( + padding: const EdgeInsets.all(16.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text('Non-Egyptian ID Back'.tr, style: AppStyle.title), + IconButton( + onPressed: () async { + await ai.allMethodForAI( + ai.prompts[7]['prompt'].toString(), + AppLink.uploadEgypt, + 'non_id_back'); + }, + icon: const Icon(Icons.refresh), + ), + ], + ), + const SizedBox(height: 8.0), + const Divider(color: AppColor.accentColor), + const SizedBox(height: 8.0), + Text( + '${'Country'.tr}: ${ai.responseNonIdCardBack['country']}', + style: AppStyle.title, + ), + const SizedBox(height: 8.0), + Text( + '${'Residency Type'.tr}: ${ai.responseNonIdCardBack['residencyType']}', + ), + const SizedBox(height: 8.0), + Text( + '${'Work Status'.tr}: ${ai.responseNonIdCardBack['workStatus']}', + ), + const SizedBox(height: 8.0), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + '${'Issue Date'.tr}: ${ai.responseNonIdCardBack['issueDate']}', + ), + Text( + '${'Birth Date'.tr}: ${ai.responseNonIdCardBack['birthDate']}', + ), + ], + ), + const SizedBox(height: 8.0), + Text( + '${'Residency Expiration Date'.tr}: ${ai.responseNonIdCardBack['residencyExpirationDate']}', + style: AppStyle.title.copyWith( + color: !isExpired + ? AppColor.greenColor + : AppColor.redColor), + ), + ], + ), + ), + ); + } + return Card( + child: InkWell( + onTap: () async { + await ai.allMethodForAI(ai.prompts[7]['prompt'].toString(), + AppLink.uploadEgypt, 'non_id_back'); + }, + child: Column( + children: [ + Image.asset( + 'assets/images/7.png', + height: Get.height * .25, + width: double.maxFinite, + fit: BoxFit.fitHeight, + ), + Text( + 'Capture Image of Non-Egyptian ID Back'.tr, + style: AppStyle.title, + ), + ], + ), + ), + ); + }, + ); + } + GetBuilder egyptDriverIDFront() { return GetBuilder( builder: (ai) { @@ -597,6 +732,105 @@ class EgyptCardAI extends StatelessWidget { ); } + GetBuilder nonEgyptDriverIDFront() { + return GetBuilder( + builder: (ai) { + if (ai.responseNonIdCardFront.isNotEmpty) { + return Card( + elevation: 4.0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16.0), + ), + child: Padding( + padding: const EdgeInsets.all(16.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text('Non-Egyptian ID Front'.tr, style: AppStyle.title), + IconButton( + onPressed: () async { + await ai.allMethodForAI( + ai.prompts[6]['prompt'].toString(), + AppLink.uploadEgypt, + 'non_id_front'); + }, + icon: const Icon(Icons.refresh), + ), + ], + ), + const SizedBox(height: 8.0), + const Divider(color: AppColor.accentColor), + const SizedBox(height: 8.0), + Text( + '${'Full Name'.tr}: ${ai.responseNonIdCardFront['full_name']}', + style: AppStyle.title, + ), + const SizedBox(height: 8.0), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + '${'Passport No'.tr}: ${ai.responseNonIdCardFront['passport_no']}', + ), + Text( + '${'Card ID'.tr}: ${ai.responseNonIdCardFront['card_id']}', + ), + ], + ), + const SizedBox(height: 8.0), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + '${'Country'.tr}: ${ai.responseNonIdCardFront['country']}', + ), + Text( + '${'Gender'.tr}: ${ai.responseNonIdCardFront['gender']}', + ), + ], + ), + const SizedBox(height: 8.0), + Text( + '${'Birth Date'.tr}: ${ai.responseNonIdCardFront['birthdate']}', + ), + const SizedBox(height: 8.0), + Text( + '${'Address'.tr}: ${ai.responseNonIdCardFront['address']}', + ), + ], + ), + ), + ); + } + return Card( + child: InkWell( + onTap: () async { + await ai.allMethodForAI(ai.prompts[6]['prompt'].toString(), + AppLink.uploadEgypt, 'non_id_front'); + }, + child: Column( + children: [ + Image.asset( + 'assets/images/7.jpeg', + height: Get.height * .25, + width: double.maxFinite, + fit: BoxFit.fitHeight, + ), + Text( + 'Capture Image of Non-Egyptian ID Front'.tr, + style: AppStyle.title, + ), + ], + ), + ), + ); + }, + ); + } + GetBuilder egyptCarLicenceFront() { return GetBuilder( builder: (ai) { diff --git a/lib/views/home/Captin/camer_widget.dart b/lib/views/home/Captin/camer_widget.dart index 1438dce..86ac571 100644 --- a/lib/views/home/Captin/camer_widget.dart +++ b/lib/views/home/Captin/camer_widget.dart @@ -165,9 +165,8 @@ class CameraWidgetCardId extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ MyElevatedButton( - title: 'Scan ID MklGoogle'.tr, - onPressed: () => - cameraClassController.takePictureAndMLGoogleScan()), + title: 'Scan ID MklGoogle'.tr, onPressed: () {}), + // cameraClassController.takePictureAndMLGoogleScan()), MyElevatedButton( title: 'Scan ID Tesseract'.tr, onPressed: () {}), ], @@ -283,9 +282,8 @@ class CameraWidgetPassPort extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ MyElevatedButton( - title: 'Scan ID MklGoogle'.tr, - onPressed: () => - cameraClassController.takePictureAndMLGoogleScan()), + title: 'Scan ID MklGoogle'.tr, onPressed: () => {}), + // cameraClassController.takePictureAndMLGoogleScan()), MyElevatedButton( title: 'Scan ID Tesseract'.tr, onPressed: () {}), ], diff --git a/lib/views/home/Captin/home_captain/home_captin.dart b/lib/views/home/Captin/home_captain/home_captin.dart index 3956932..bd1cdb5 100644 --- a/lib/views/home/Captin/home_captain/home_captin.dart +++ b/lib/views/home/Captin/home_captain/home_captin.dart @@ -107,114 +107,210 @@ class HomeCaptain extends StatelessWidget { left: Get.width * .1, child: const ConnectWidget()), Positioned( - top: 5, - right: Get.width * .05, - left: Get.width * .05, - child: GetBuilder( - builder: (homeCaptainController) { + top: 5, + right: Get.width * .05, + left: Get.width * .05, + child: GetBuilder( + builder: (homeCaptainController) { return Container( - decoration: AppStyle.boxDecoration, - width: Get.width * .8, - height: 104, - child: Center( - child: Column( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - const Icon( - Entypo.wallet, - color: AppColor.greenColor, + decoration: BoxDecoration( + gradient: const LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: [Colors.white, Colors.white70], + ), + borderRadius: BorderRadius.circular(15), + boxShadow: [ + BoxShadow( + color: Colors.grey.withOpacity(0.2), + spreadRadius: 2, + blurRadius: 8, + offset: const Offset(0, 2), + ), + ], + ), + padding: + const EdgeInsets.symmetric(horizontal: 16, vertical: 12), + width: Get.width * .8, + height: 120, + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: AppColor.greenColor.withOpacity(0.1), + borderRadius: BorderRadius.circular(10), ), - Text( - ' You Earn today is '.tr + - homeCaptainController.totalMoneyToday, - style: AppStyle.title, - ), - ], - ), - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - const Icon( - Entypo.wallet, - color: AppColor.yellowColor, - ), - Text( - '${' You Have in'.tr} ${AppInformation.appName} ${homeCaptainController.totalMoneyInSEFER} ', - style: AppStyle.title, - ), - ], - ), - Row( - mainAxisAlignment: MainAxisAlignment.spaceAround, - children: [ - Text( - 'Total Budget is '.tr + - homeCaptainController.totalPoints, - style: AppStyle.title, - ), - Container( - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(6), - color: int.parse( - Get.find() - .countRideToday) < - 5 - ? AppColor.accentColor - : int.parse(Get.find< - HomeCaptainController>() - .countRideToday) > - 5 && - int.parse(Get.find< - HomeCaptainController>() - .countRideToday) < - 10 - ? AppColor.yellowColor - : AppColor.greenColor, - ), - child: Padding( - padding: const EdgeInsets.symmetric( - horizontal: 8, vertical: 2), - child: Text( - 'Ride Today : '.tr + - Get.find() - .countRideToday, - style: AppStyle.title - .copyWith(color: AppColor.secondaryColor), + child: Row( + children: [ + const Icon( + Entypo.wallet, + color: AppColor.greenColor, + size: 20, ), - ), + const SizedBox(width: 8), + Text( + '${"Today".tr}: ${homeCaptainController.totalMoneyToday}', + style: AppStyle.title.copyWith( + color: AppColor.greenColor, + fontWeight: FontWeight.bold, + ), + ), + ], ), - ], - ), - ], - ))); - })), + ), + Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: AppColor.yellowColor.withOpacity(0.1), + borderRadius: BorderRadius.circular(10), + ), + child: Row( + children: [ + const Icon( + Entypo.wallet, + color: AppColor.yellowColor, + size: 20, + ), + const SizedBox(width: 8), + Text( + '${AppInformation.appName}: ${homeCaptainController.totalMoneyInSEFER}', + style: AppStyle.title.copyWith( + color: AppColor.yellowColor, + fontWeight: FontWeight.bold, + ), + ), + ], + ), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + '${'Total Points is'.tr}: ${homeCaptainController.totalPoints}', + style: AppStyle.title.copyWith( + fontSize: 16, + fontWeight: FontWeight.w600, + ), + ), + Container( + padding: const EdgeInsets.symmetric( + horizontal: 12, vertical: 6), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(20), + color: int.parse(homeCaptainController + .countRideToday) < + 5 + ? AppColor.accentColor + : int.parse(homeCaptainController + .countRideToday) > + 5 && + int.parse(homeCaptainController + .countRideToday) < + 10 + ? AppColor.yellowColor + : AppColor.greenColor, + ), + child: Row( + children: [ + const Icon( + Icons.directions_car_rounded, + color: Colors.white, + size: 18, + ), + const SizedBox(width: 4), + Text( + '${"Ride Today : ".tr}: ${homeCaptainController.countRideToday}', + style: AppStyle.title.copyWith( + color: Colors.white, + fontWeight: FontWeight.bold, + ), + ), + ], + ), + ), + ], + ), + ], + ), + ); + }, + ), + ), Positioned( bottom: 65, right: Get.width * .1, left: Get.width * .1, child: GetBuilder( builder: (homeCaptainController) => Container( - decoration: AppStyle.boxDecoration, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(12), + boxShadow: [ + BoxShadow( + color: Colors.grey.withOpacity(0.2), + spreadRadius: 2, + blurRadius: 8, + offset: const Offset(0, 2), + ), + ], + ), + padding: + const EdgeInsets.symmetric(horizontal: 16, vertical: 12), child: Column( children: [ - Text( - '${'Active Duration:'.tr} ${homeCaptainController.stringActiveDuration} ', - style: AppStyle.title, + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Icon(Icons.timer_outlined, + color: AppColor.greenColor), + const SizedBox(width: 8), + Text( + 'Active Duration:'.tr, + style: AppStyle.title, + ), + const SizedBox(width: 4), + Text( + homeCaptainController.stringActiveDuration, + style: AppStyle.title.copyWith( + fontWeight: FontWeight.bold, + color: AppColor.greenColor, + ), + ), + ], ), - Text( - '${'Total Connection Duration:'.tr} ${homeCaptainController.totalDurationToday} ', - style: AppStyle.title, + const SizedBox(height: 8), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Icon(Icons.access_time, + color: AppColor.accentColor), + const SizedBox(width: 8), + Text( + 'Total Connection Duration:'.tr, + style: AppStyle.title, + ), + const SizedBox(width: 4), + Text( + homeCaptainController.totalDurationToday, + style: AppStyle.title.copyWith( + fontWeight: FontWeight.bold, + color: AppColor.accentColor, + ), + ), + ], ), ], ), ), ), - ), - // Positioned( + ), // Positioned( // bottom: Get.height * .17, // right: Get.width * .01, // child: AnimatedContainer( diff --git a/lib/views/home/Captin/home_captain/widget/connect.dart b/lib/views/home/Captin/home_captain/widget/connect.dart index 7dbdf07..3fe3d90 100644 --- a/lib/views/home/Captin/home_captain/widget/connect.dart +++ b/lib/views/home/Captin/home_captain/widget/connect.dart @@ -23,80 +23,119 @@ class ConnectWidget extends StatelessWidget { captainWalletController.getCaptainWalletFromBuyPoints(); return Center( child: GetBuilder( - builder: (homeCaptainController) => int.parse( - homeCaptainController.countRefuse) > - 3 || - double.parse(captainWalletController.totalPoints) < -300 - ? CupertinoButton( - onPressed: () { - Get.defaultDialog( - // backgroundColor: CupertinoColors.destructiveRed, - barrierDismissible: false, - title: double.parse(captainWalletController.totalPoints) < - -300 - ? 'You dont have Points'.tr - : 'You Are Stopped For this Day !'.tr, - titleStyle: AppStyle.title, - content: Column( - children: [ - IconButton( - onPressed: () async { + builder: (homeCaptainController) => double.parse( + captainWalletController.totalPoints) < + -300 + ? CupertinoButton( + onPressed: () { + Get.defaultDialog( + // backgroundColor: CupertinoColors.destructiveRed, + barrierDismissible: false, + title: + double.parse(captainWalletController.totalPoints) < + -300 + ? 'You dont have Points'.tr + : 'You Are Stopped For this Day !'.tr, + titleStyle: AppStyle.title, + content: Column( + children: [ + IconButton( + onPressed: () async { + double.parse(captainWalletController + .totalPoints) < + -300 + ? await Get.find() + .speakText( + 'You must be recharge your Account' + .tr) + : await Get.find() + .speakText( + 'You Refused 3 Rides this Day that is the reason \nSee you Tomorrow!' + .tr); + }, + icon: const Icon(Icons.headphones), + ), + Text( double.parse( captainWalletController.totalPoints) < -300 - ? await Get.find() - .speakText( - 'You must be recharge your Account' - .tr) - : await Get.find() - .speakText( - 'You Refused 3 Rides this Day that is the reason \nSee you Tomorrow!' - .tr); - }, - icon: const Icon(Icons.headphones), - ), - Text( + ? 'You must be recharge your Account'.tr + : 'You Refused 3 Rides this Day that is the reason \nSee you Tomorrow!' + .tr, + style: AppStyle.title, + ), + ], + ), + confirm: double.parse(captainWalletController.totalPoints) < -300 - ? 'You must be recharge your Account'.tr - : 'You Refused 3 Rides this Day that is the reason \nSee you Tomorrow!' - .tr, - style: AppStyle.title, - ), - ], + ? MyElevatedButton( + title: 'Recharge my Account'.tr, + onPressed: () { + homeCaptainController + .goToWalletFromConnect(); + }) + : MyElevatedButton( + title: 'Ok , See you Tomorrow'.tr, + onPressed: () { + Get.back(); + Get.back(); + })); + }, + color: CupertinoColors.destructiveRed, + child: Text( + 'You are Stopped'.tr, + style: AppStyle.title, + ), + ) + : Container( + decoration: BoxDecoration( + gradient: LinearGradient( + colors: homeCaptainController.isActive + ? [Colors.green.shade400, Colors.green.shade700] + : [Colors.grey.shade400, Colors.grey.shade700], + ), + borderRadius: BorderRadius.circular(12), + boxShadow: [ + BoxShadow( + color: homeCaptainController.isActive + ? Colors.green.withOpacity(0.3) + : Colors.grey.withOpacity(0.3), + spreadRadius: 1, + blurRadius: 8, + offset: const Offset(0, 2), ), - confirm: - double.parse(captainWalletController.totalPoints) < - -300 - ? MyElevatedButton( - title: 'Recharge my Account'.tr, - onPressed: () { - homeCaptainController - .goToWalletFromConnect(); - }) - : MyElevatedButton( - title: 'Ok , See you Tomorrow'.tr, - onPressed: () { - Get.back(); - Get.back(); - })); - }, - color: CupertinoColors.destructiveRed, - child: Text( - 'You are Stopped'.tr, - style: AppStyle.title, - ), - ) - : CupertinoButton( - onPressed: homeCaptainController.onButtonSelected, - color: homeCaptainController.isActive - ? CupertinoColors.activeGreen - : CupertinoColors.inactiveGray, - child: Text(homeCaptainController.isActive - ? 'Connected'.tr - : 'Not Connected'.tr), - ), - ), + ], + ), + child: CupertinoButton( + onPressed: homeCaptainController.onButtonSelected, + padding: const EdgeInsets.symmetric( + horizontal: 24, vertical: 12), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + homeCaptainController.isActive + ? CupertinoIcons.check_mark_circled_solid + : CupertinoIcons.circle, + color: Colors.white, + size: 24, + ), + const SizedBox(width: 8), + Text( + homeCaptainController.isActive + ? 'Connected'.tr + : 'Not Connected'.tr, + style: const TextStyle( + color: Colors.white, + fontSize: 16, + fontWeight: FontWeight.w600, + ), + ), + ], + ), + ), + )), ); } } diff --git a/lib/views/home/Captin/mapDriverWidgets/driver_end_ride_bar.dart b/lib/views/home/Captin/mapDriverWidgets/driver_end_ride_bar.dart index f54ab49..bea5331 100644 --- a/lib/views/home/Captin/mapDriverWidgets/driver_end_ride_bar.dart +++ b/lib/views/home/Captin/mapDriverWidgets/driver_end_ride_bar.dart @@ -3,6 +3,7 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:get/get.dart'; +import 'package:slide_to_act/slide_to_act.dart'; import 'package:vibration/vibration.dart'; import '../../../../constant/colors.dart'; @@ -150,13 +151,30 @@ GetBuilder driverEndRideBar() { // mapDriverController.remainingTimeTimerRideBegin < // 60 // ? - MyElevatedButton( - title: 'End Ride'.tr, - onPressed: () { + SlideAction( + text: 'End Ride'.tr, + textStyle: const TextStyle( + fontSize: 18, + fontWeight: FontWeight.bold, + color: Colors.white, + ), + outerColor: AppColor.redColor, + innerColor: Colors.white, + sliderButtonIcon: const Icon( + Icons.arrow_forward, + color: AppColor.redColor, + ), + onSubmit: () { mapDriverController.finishRideFromDriver(); }, - kolor: AppColor.redColor, ), + // MyElevatedButton( + // title: 'End Ride'.tr, + // onPressed: () { + // mapDriverController.finishRideFromDriver(); + // }, + // kolor: AppColor.redColor, + // ), // : const SizedBox(), Container( decoration: AppStyle.boxDecoration1, diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index ec70da1..456a878 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -19,12 +19,13 @@ import flutter_tts import geolocator_apple import google_sign_in_ios import just_audio +import local_auth_darwin import location import package_info_plus import path_provider_foundation import record_darwin import sign_in_with_apple -import sqflite +import sqflite_darwin import url_launcher_macos import video_player_avfoundation import wakelock_plus @@ -45,6 +46,7 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { GeolocatorPlugin.register(with: registry.registrar(forPlugin: "GeolocatorPlugin")) FLTGoogleSignInPlugin.register(with: registry.registrar(forPlugin: "FLTGoogleSignInPlugin")) JustAudioPlugin.register(with: registry.registrar(forPlugin: "JustAudioPlugin")) + FLALocalAuthPlugin.register(with: registry.registrar(forPlugin: "FLALocalAuthPlugin")) LocationPlugin.register(with: registry.registrar(forPlugin: "LocationPlugin")) FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) diff --git a/pubspec.lock b/pubspec.lock index ed84713..7f23461 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,26 +5,31 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: "0b2f2bd91ba804e53a61d757b986f89f1f9eaed5b11e4b2f5a2468d86d6c9fc7" + sha256: "16e298750b6d0af7ce8a3ba7c18c69c3785d11b15ec83f6dcd0ad2a0009b3cab" url: "https://pub.dev" source: hosted - version: "67.0.0" + version: "76.0.0" _flutterfire_internals: dependency: transitive description: name: _flutterfire_internals - sha256: b46f62516902afb04befa4b30eb6a12ac1f58ca8cb25fb9d632407259555dd3d + sha256: daa1d780fdecf8af925680c06c86563cdd445deea995d5c9176f1302a2b10bbe url: "https://pub.dev" source: hosted - version: "1.3.39" + version: "1.3.48" + _macros: + dependency: transitive + description: dart + source: sdk + version: "0.3.3" analyzer: dependency: transitive description: name: analyzer - sha256: "37577842a27e4338429a1cbc32679d508836510b056f1eedf0c8d20e39c1383d" + sha256: "1f14db053a8c23e260789e9b0980fa27f2680dd640932cae5e1137cce0e46e1e" url: "https://pub.dev" source: hosted - version: "6.4.1" + version: "6.11.0" animated_text_kit: dependency: "direct main" description: @@ -37,26 +42,26 @@ packages: dependency: transitive description: name: archive - sha256: cb6a278ef2dbb298455e1a713bda08524a175630ec643a242c399c932a0a1f7d + sha256: "6199c74e3db4fbfbd04f66d739e72fe11c8a8957d5f219f1f4482dbde6420b5a" url: "https://pub.dev" source: hosted - version: "3.6.1" + version: "4.0.2" args: dependency: transitive description: name: args - sha256: "7cf60b9f0cc88203c5a190b4cd62a99feea42759a7fa695010eb5de1c0b2252a" + sha256: bf9f5caeea8d8fe6721a9c358dd8a5c1947b27f1cfaa18b39c301273594919e6 url: "https://pub.dev" source: hosted - version: "2.5.0" + version: "2.6.0" asn1lib: dependency: transitive description: name: asn1lib - sha256: "58082b3f0dca697204dbab0ef9ff208bfaea7767ea771076af9a343488428dda" + sha256: "4bae5ae63e6d6dd17c4aac8086f3dec26c0236f6a0f03416c6c19d830c367cf5" url: "https://pub.dev" source: hosted - version: "1.5.3" + version: "1.5.8" async: dependency: transitive description: @@ -69,10 +74,10 @@ packages: dependency: transitive description: name: audio_session - sha256: "343e83bc7809fbda2591a49e525d6b63213ade10c76f15813be9aed6657b3261" + sha256: b2a26ba8b7efa1790d6460e82971fde3e398cfbe2295df9dea22f3499d2c12a7 url: "https://pub.dev" source: hosted - version: "0.1.21" + version: "0.1.23" background_location: dependency: "direct main" description: @@ -101,50 +106,50 @@ packages: dependency: transitive description: name: build - sha256: "80184af8b6cb3e5c1c4ec6d8544d27711700bc3e6d2efad04238c7b5290889f0" + sha256: cef23f1eda9b57566c81e2133d196f8e3df48f244b317368d65c5943d91148f0 url: "https://pub.dev" source: hosted - version: "2.4.1" + version: "2.4.2" build_config: dependency: transitive description: name: build_config - sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1 + sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33" url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.2" build_daemon: dependency: transitive description: name: build_daemon - sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9" + sha256: "294a2edaf4814a378725bfe6358210196f5ea37af89ecd81bfa32960113d4948" url: "https://pub.dev" source: hosted - version: "4.0.2" + version: "4.0.3" build_resolvers: dependency: transitive description: name: build_resolvers - sha256: "339086358431fa15d7eca8b6a36e5d783728cf025e559b834f4609a1fcfb7b0a" + sha256: "99d3980049739a985cf9b21f30881f46db3ebc62c5b8d5e60e27440876b1ba1e" url: "https://pub.dev" source: hosted - version: "2.4.2" + version: "2.4.3" build_runner: dependency: "direct dev" description: name: build_runner - sha256: "644dc98a0f179b872f612d3eb627924b578897c629788e858157fa5e704ca0c7" + sha256: "74691599a5bc750dc96a6b4bfd48f7d9d66453eab04c7f4063134800d6a5c573" url: "https://pub.dev" source: hosted - version: "2.4.11" + version: "2.4.14" build_runner_core: dependency: transitive description: name: build_runner_core - sha256: e3c79f69a64bdfcd8a776a3c28db4eb6e3fb5356d013ae5eb2e52007706d5dbe + sha256: "22e3aa1c80e0ada3722fe5b63fd43d9c8990759d0a2cf489c8c5d7b2bdebc021" url: "https://pub.dev" source: hosted - version: "7.3.1" + version: "8.0.0" built_collection: dependency: transitive description: @@ -157,34 +162,34 @@ packages: dependency: transitive description: name: built_value - sha256: c7913a9737ee4007efedaffc968c049fd0f3d0e49109e778edc10de9426005cb + sha256: "28a712df2576b63c6c005c465989a348604960c0958d28be5303ba9baa841ac2" url: "https://pub.dev" source: hosted - version: "8.9.2" + version: "8.9.3" cached_network_image: dependency: transitive description: name: cached_network_image - sha256: "28ea9690a8207179c319965c13cd8df184d5ee721ae2ce60f398ced1219cea1f" + sha256: "7c1183e361e5c8b0a0f21a28401eecdbde252441106a9816400dd4c2b2424916" url: "https://pub.dev" source: hosted - version: "3.3.1" + version: "3.4.1" cached_network_image_platform_interface: dependency: transitive description: name: cached_network_image_platform_interface - sha256: "9e90e78ae72caa874a323d78fa6301b3fb8fa7ea76a8f96dc5b5bf79f283bf2f" + sha256: "35814b016e37fbdc91f7ae18c8caf49ba5c88501813f73ce8a07027a395e2829" url: "https://pub.dev" source: hosted - version: "4.0.0" + version: "4.1.1" cached_network_image_web: dependency: transitive description: name: cached_network_image_web - sha256: "205d6a9f1862de34b93184f22b9d2d94586b2f05c581d546695e3d8f6a805cd7" + sha256: "980842f4e8e2535b8dbd3d5ca0b1f0ba66bf61d14cc3a17a9b4788a3685ba062" url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.3.1" calendar_builder: dependency: "direct main" description: @@ -197,26 +202,26 @@ packages: dependency: "direct main" description: name: camera - sha256: "2170a943dcb67be2af2c6bcda8775e74b41d4c02d6a4eb10bdc832ee185c4eea" + sha256: "26ff41045772153f222ffffecba711a206f670f5834d40ebf5eed3811692f167" url: "https://pub.dev" source: hosted - version: "0.11.0+1" + version: "0.11.0+2" camera_android_camerax: dependency: transitive description: name: camera_android_camerax - sha256: "7c03940cb8c92eb5b184952674a07cc4a73c6ba2b3568aad70255ad4cb913660" + sha256: "2985b8e5fca62709ebb2150962b1dae0444ba0a112be888ccf21e8371a1406d9" url: "https://pub.dev" source: hosted - version: "0.6.7+1" + version: "0.6.10+1" camera_avfoundation: dependency: transitive description: name: camera_avfoundation - sha256: b5093a82537b64bb88d4244f8e00b5ba69e822a5994f47b31d11400e1db975e5 + sha256: "2e4c568f70e406ccb87376bc06b53d2f5bebaab71e2fbcc1a950e31449381bcf" url: "https://pub.dev" source: hosted - version: "0.9.17+1" + version: "0.9.17+5" camera_platform_interface: dependency: transitive description: @@ -229,10 +234,10 @@ packages: dependency: transitive description: name: camera_web - sha256: b9235ec0a2ce949daec546f1f3d86f05c3921ed31c7d9ab6b7c03214d152fc2d + sha256: "595f28c89d1fb62d77c73c633193755b781c6d2e0ebcd8dc25b763b514e6ba8f" url: "https://pub.dev" source: hosted - version: "0.3.4" + version: "0.3.5" characters: dependency: transitive description: @@ -253,18 +258,18 @@ packages: dependency: transitive description: name: chewie - sha256: e53da939709efb9aad0f3d72a69a8d05f889168b7a138af60ce78bab5c94b135 + sha256: "335df378c025588aef400c704bd71f0daea479d4cd57c471c88c056c1144e7cd" url: "https://pub.dev" source: hosted - version: "1.8.1" + version: "1.8.5" cli_util: dependency: transitive description: name: cli_util - sha256: c05b7406fdabc7a49a3929d4af76bcaccbbffcbcdcf185b082e1ae07da323d19 + sha256: ff6785f7e9e3c38ac98b2fb035701789de90154024a75b6cb926445e83197d1c url: "https://pub.dev" source: hosted - version: "0.4.1" + version: "0.4.2" clock: dependency: transitive description: @@ -277,50 +282,50 @@ packages: dependency: transitive description: name: code_builder - sha256: f692079e25e7869c14132d39f223f8eec9830eb76131925143b2129c4bb01b37 + sha256: "0ec10bf4a89e4c613960bf1e8b42c64127021740fb21640c29c909826a5eea3e" url: "https://pub.dev" source: hosted - version: "4.10.0" + version: "4.10.1" collection: dependency: transitive description: name: collection - sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a + sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf url: "https://pub.dev" source: hosted - version: "1.18.0" + version: "1.19.0" convert: dependency: transitive description: name: convert - sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" + sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68 url: "https://pub.dev" source: hosted - version: "3.1.1" + version: "3.1.2" cross_file: dependency: transitive description: name: cross_file - sha256: "55d7b444feb71301ef6b8838dbc1ae02e63dd48c8773f3810ff53bb1e2945b32" + sha256: "7caf6a750a0c04effbb52a676dce9a4a592e10ad35c34d6d2d0e4811160d5670" url: "https://pub.dev" source: hosted - version: "0.3.4+1" + version: "0.3.4+2" crypto: dependency: transitive description: name: crypto - sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab + sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855" url: "https://pub.dev" source: hosted - version: "3.0.3" + version: "3.0.6" csslib: dependency: transitive description: name: csslib - sha256: "706b5707578e0c1b4b7550f64078f0a0f19dec3f50a178ffae7006b0a9ca58fb" + sha256: "09bad715f418841f976c77db72d5398dc1253c21fb9c0c7f0b0b985860b2d58e" url: "https://pub.dev" source: hosted - version: "1.0.0" + version: "1.0.2" cupertino_icons: dependency: "direct main" description: @@ -333,10 +338,10 @@ packages: dependency: transitive description: name: dart_style - sha256: "99e066ce75c89d6b29903d788a7bb9369cf754f7b24bf70bf4b6d6d6b26853b9" + sha256: "7856d364b589d1f08986e140938578ed36ed948581fbc3bc9aef1805039ac5ab" url: "https://pub.dev" source: hosted - version: "2.3.6" + version: "2.3.7" dbus: dependency: transitive description: @@ -349,34 +354,34 @@ packages: dependency: transitive description: name: device_info_plus - sha256: eead12d1a1ed83d8283ab4c2f3fca23ac4082f29f25f29dff0f758f57d06ec91 + sha256: "4fa68e53e26ab17b70ca39f072c285562cfc1589df5bb1e9295db90f6645f431" url: "https://pub.dev" source: hosted - version: "10.1.0" + version: "11.2.0" device_info_plus_platform_interface: dependency: transitive description: name: device_info_plus_platform_interface - sha256: d3b01d5868b50ae571cd1dc6e502fc94d956b665756180f7b16ead09e836fd64 + sha256: "0b04e02b30791224b31969eb1b50d723498f402971bff3630bca2ba839bd1ed2" url: "https://pub.dev" source: hosted - version: "7.0.0" + version: "7.0.2" dio: dependency: "direct main" description: name: dio - sha256: e17f6b3097b8c51b72c74c9f071a605c47bcc8893839bd66732457a5ebe73714 + sha256: "5598aa796bbf4699afd5c67c0f5f6e2ed542afc956884b9cd58c306966efc260" url: "https://pub.dev" source: hosted - version: "5.5.0+1" + version: "5.7.0" dio_web_adapter: dependency: transitive description: name: dio_web_adapter - sha256: "36c5b2d79eb17cdae41e974b7a8284fec631651d2a6f39a8a2ff22327e90aeac" + sha256: "33259a9276d6cea88774a0000cfae0d861003497755969c92faa223108620dc8" url: "https://pub.dev" source: hosted - version: "1.0.1" + version: "2.0.0" encrypt: dependency: "direct main" description: @@ -389,26 +394,26 @@ packages: dependency: "direct main" description: name: envied - sha256: bbff9c76120e4dc5e2e36a46690cf0a26feb65e7765633f4e8d916bcd173a450 + sha256: "129a0dbf32b90344fa2e9d6943569fdec8f17904e66161e0a1f09ee3416508ae" url: "https://pub.dev" source: hosted - version: "0.5.4+1" + version: "1.0.0" envied_generator: dependency: "direct dev" description: name: envied_generator - sha256: "517b70de08d13dcd40e97b4e5347e216a0b1c75c99e704f3c85c0474a392d14a" + sha256: "76aec98907872ce8488f021e68d213bd0d9bf224eb393a094be1708cc3180d41" url: "https://pub.dev" source: hosted - version: "0.5.4+1" + version: "1.0.0" equatable: dependency: transitive description: name: equatable - sha256: c2b87cb7756efdf69892005af546c56c0b5037f54d2a88269b4f347a505e3ca2 + sha256: "567c64b3cb4cf82397aac55f4f0cbd3ca20d77c6c03bedbc4ceaddc08904aef7" url: "https://pub.dev" source: hosted - version: "2.0.5" + version: "2.0.7" fake_async: dependency: transitive description: @@ -421,34 +426,34 @@ packages: dependency: transitive description: name: ffi - sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21" + sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.3" file: dependency: transitive description: name: file - sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c" + sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 url: "https://pub.dev" source: hosted - version: "7.0.0" + version: "7.0.1" file_selector_linux: dependency: transitive description: name: file_selector_linux - sha256: "045d372bf19b02aeb69cacf8b4009555fb5f6f0b7ad8016e5f46dd1387ddd492" + sha256: "54cbbd957e1156d29548c7d9b9ec0c0ebb6de0a90452198683a7d23aed617a33" url: "https://pub.dev" source: hosted - version: "0.9.2+1" + version: "0.9.3+2" file_selector_macos: dependency: transitive description: name: file_selector_macos - sha256: f42eacb83b318e183b1ae24eead1373ab1334084404c8c16e0354f9a3e55d385 + sha256: "271ab9986df0c135d45c3cdb6bd0faa5db6f4976d3e4b437cf7d0f258d941bfc" url: "https://pub.dev" source: hosted - version: "0.9.4" + version: "0.9.4+2" file_selector_platform_interface: dependency: transitive description: @@ -461,98 +466,98 @@ packages: dependency: transitive description: name: file_selector_windows - sha256: d3547240c20cabf205c7c7f01a50ecdbc413755814d6677f3cb366f04abcead0 + sha256: "8f5d2f6590d51ecd9179ba39c64f722edc15226cc93dcc8698466ad36a4a85a4" url: "https://pub.dev" source: hosted - version: "0.9.3+1" + version: "0.9.3+3" firebase_auth: dependency: "direct main" description: name: firebase_auth - sha256: a41b56878fa6aef3ea52962329b47eee333672d4b0ecc406e071b9fc729f242c + sha256: "03483af6e67b7c4b696ca9386989a6cd5593569e1ac5af6907ea5f7fd9c16d8b" url: "https://pub.dev" source: hosted - version: "5.1.2" + version: "5.3.4" firebase_auth_platform_interface: dependency: transitive description: name: firebase_auth_platform_interface - sha256: d1c68097588f3b75ef79a22102ff96c311735c254353bccf6824d19f1a7e86b9 + sha256: "3e1409f48c48930635705b1237ebbdee8c54c19106a0a4fb321dbb4b642820c4" url: "https://pub.dev" source: hosted - version: "7.4.2" + version: "7.4.10" firebase_auth_web: dependency: transitive description: name: firebase_auth_web - sha256: e66ec0ae5697ee39ccd4865d6887cb0df220dd4ea0b21404910c68ca4c1a731a + sha256: d83fe95c44d73c9c29b006ac7df3aa5e1b8ce92b62edc44e8f86250951fe2cd0 url: "https://pub.dev" source: hosted - version: "5.12.4" + version: "5.13.5" firebase_core: dependency: "direct main" description: name: firebase_core - sha256: "5159984ce9b70727473eb388394650677c02c925aaa6c9439905e1f30966a4d5" + sha256: "15d761b95dfa2906dfcc31b7fc6fe293188533d1a3ffe78389ba9e69bd7fdbde" url: "https://pub.dev" source: hosted - version: "3.2.0" + version: "3.9.0" firebase_core_platform_interface: dependency: transitive description: name: firebase_core_platform_interface - sha256: "1003a5a03a61fc9a22ef49f37cbcb9e46c86313a7b2e7029b9390cf8c6fc32cb" + sha256: d7253d255ff10f85cfd2adaba9ac17bae878fa3ba577462451163bd9f1d1f0bf url: "https://pub.dev" source: hosted - version: "5.1.0" + version: "5.4.0" firebase_core_web: dependency: transitive description: name: firebase_core_web - sha256: "23509cb3cddfb3c910c143279ac3f07f06d3120f7d835e4a5d4b42558e978712" + sha256: fbc008cf390d909b823763064b63afefe9f02d8afdb13eb3f485b871afee956b url: "https://pub.dev" source: hosted - version: "2.17.3" + version: "2.19.0" firebase_messaging: dependency: "direct main" description: name: firebase_messaging - sha256: "156c4292aa63a6a7d508c68ded984cb38730d2823c3265e573cb1e94983e2025" + sha256: "151a3ee68736abf293aab66d1317ade53c88abe1db09c75a0460aebf7767bbdf" url: "https://pub.dev" source: hosted - version: "15.0.3" + version: "15.1.6" firebase_messaging_platform_interface: dependency: transitive description: name: firebase_messaging_platform_interface - sha256: "10408c5ca242b7fc632dd5eab4caf8fdf18ebe88db6052980fa71a18d88bd200" + sha256: f331ee51e40c243f90cc7bc059222dfec4e5df53125b08d31fb28961b00d2a9d url: "https://pub.dev" source: hosted - version: "4.5.41" + version: "4.5.49" firebase_messaging_web: dependency: transitive description: name: firebase_messaging_web - sha256: c7a756e3750679407948de665735e69a368cb902940466e5d68a00ea7aba1aaa + sha256: efaf3fdc54cd77e0eedb8e75f7f01c808828c64d052ddbf94d3009974e47d30f url: "https://pub.dev" source: hosted - version: "3.8.11" + version: "3.9.5" fixnum: dependency: transitive description: name: fixnum - sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1" + sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.1" fl_chart: dependency: "direct main" description: name: fl_chart - sha256: d0f0d49112f2f4b192481c16d05b6418bd7820e021e265a3c22db98acf7ed7fb + sha256: c724234b05e378383e958f3e82ca84a3e1e3c06a0898462044dd8a24b1ee9864 url: "https://pub.dev" source: hosted - version: "0.68.0" + version: "0.70.0" flutter: dependency: "direct main" description: flutter @@ -562,10 +567,10 @@ packages: dependency: transitive description: name: flutter_cache_manager - sha256: ceff65d74d907b1b772e22cf04daad60fb472461638977d9fae8b00a63e01e3d + sha256: "400b6592f16a4409a7f2bb929a9a7e38c72cceb8ffb99ee57bbf2cb2cecf8386" url: "https://pub.dev" source: hosted - version: "3.3.3" + version: "3.4.1" flutter_confetti: dependency: "direct main" description: @@ -578,10 +583,10 @@ packages: dependency: "direct main" description: name: flutter_contacts - sha256: d9de65f7e8f277b60fa59d699fd916f9aeeb7ec77c9cc631745b4c9068e0b627 + sha256: "388d32cd33f16640ee169570128c933b45f3259bddbfae7a100bb49e5ffea9ae" url: "https://pub.dev" source: hosted - version: "1.1.8" + version: "1.1.9+2" flutter_font_icons: dependency: "direct main" description: @@ -642,10 +647,10 @@ packages: dependency: transitive description: name: flutter_inappwebview - sha256: "3e9a443a18ecef966fb930c3a76ca5ab6a7aafc0c7b5e14a4a850cf107b09959" + sha256: "80092d13d3e29b6227e25b67973c67c7210bd5e35c4b747ca908e31eb71a46d5" url: "https://pub.dev" source: hosted - version: "6.0.0" + version: "6.1.5" flutter_inappwebview_android: dependency: transitive description: @@ -658,10 +663,10 @@ packages: dependency: transitive description: name: flutter_inappwebview_internal_annotations - sha256: "5f80fd30e208ddded7dbbcd0d569e7995f9f63d45ea3f548d8dd4c0b473fb4c8" + sha256: "787171d43f8af67864740b6f04166c13190aa74a1468a1f1f1e9ee5b90c359cd" url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.2.0" flutter_inappwebview_ios: dependency: transitive description: @@ -690,50 +695,58 @@ packages: dependency: transitive description: name: flutter_inappwebview_web - sha256: d8c680abfb6fec71609a700199635d38a744df0febd5544c5a020bd73de8ee07 + sha256: "55f89c83b0a0d3b7893306b3bb545ba4770a4df018204917148ebb42dc14a598" url: "https://pub.dev" source: hosted - version: "1.0.8" + version: "1.1.2" + flutter_inappwebview_windows: + dependency: transitive + description: + name: flutter_inappwebview_windows + sha256: "8b4d3a46078a2cdc636c4a3d10d10f2a16882f6be607962dbfff8874d1642055" + url: "https://pub.dev" + source: hosted + version: "0.6.0" flutter_launcher_icons: dependency: "direct main" description: name: flutter_launcher_icons - sha256: "526faf84284b86a4cb36d20a5e45147747b7563d921373d4ee0559c54fcdbcea" + sha256: "31cd0885738e87c72d6f055564d37fabcdacee743b396b78c7636c169cac64f5" url: "https://pub.dev" source: hosted - version: "0.13.1" + version: "0.14.2" flutter_lints: dependency: "direct dev" description: name: flutter_lints - sha256: "3f41d009ba7172d5ff9be5f6e6e6abb4300e263aab8866d2a0842ed2a70f8f0c" + sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1" url: "https://pub.dev" source: hosted - version: "4.0.0" + version: "5.0.0" flutter_local_notifications: dependency: "direct main" description: name: flutter_local_notifications - sha256: dd6676d8c2926537eccdf9f72128bbb2a9d0814689527b17f92c248ff192eaf3 + sha256: ef41ae901e7529e52934feba19ed82827b11baa67336829564aeab3129460610 url: "https://pub.dev" source: hosted - version: "17.2.1+2" + version: "18.0.1" flutter_local_notifications_linux: dependency: transitive description: name: flutter_local_notifications_linux - sha256: c49bd06165cad9beeb79090b18cd1eb0296f4bf4b23b84426e37dd7c027fc3af + sha256: "8f685642876742c941b29c32030f6f4f6dacd0e4eaecb3efbb187d6a3812ca01" url: "https://pub.dev" source: hosted - version: "4.0.1" + version: "5.0.0" flutter_local_notifications_platform_interface: dependency: transitive description: name: flutter_local_notifications_platform_interface - sha256: "85f8d07fe708c1bdcf45037f2c0109753b26ae077e9d9e899d55971711a4ea66" + sha256: "6c5b83c86bf819cdb177a9247a3722067dd8cc6313827ce7c77a4b238a26fd52" url: "https://pub.dev" source: hosted - version: "7.2.0" + version: "8.0.0" flutter_overlay_apps: dependency: "direct main" description: @@ -745,10 +758,10 @@ packages: dependency: "direct main" description: name: flutter_overlay_window - sha256: af871da9270bf5d67e5a657d2e286dfafa43f3417e98fa9e3c06da3f9d0f340e + sha256: "87a8ed7c47104a9ac1352d081e85304934b3f06ae28507097e49dd5f892e208d" url: "https://pub.dev" source: hosted - version: "0.4.4" + version: "0.4.5" flutter_paypal: dependency: "direct main" description: @@ -761,10 +774,10 @@ packages: dependency: transitive description: name: flutter_plugin_android_lifecycle - sha256: c6b0b4c05c458e1c01ad9bcc14041dd7b1f6783d487be4386f793f47a8a4d03e + sha256: "615a505aef59b151b46bbeef55b36ce2b6ed299d160c51d84281946f0aa0ce0e" url: "https://pub.dev" source: hosted - version: "2.0.20" + version: "2.0.24" flutter_rating_bar: dependency: "direct main" description: @@ -833,18 +846,18 @@ packages: dependency: "direct main" description: name: flutter_stripe - sha256: "6c10f839e2623a336de79023a95a49c8d177032d5fd54b1f7ee9755fc577e227" + sha256: "06d7d8ac853470b7c9a9ed81f9fccafaf35f417a151e1b7ddcded56113aadf6f" url: "https://pub.dev" source: hosted - version: "10.2.0" + version: "11.3.0" flutter_svg: dependency: transitive description: name: flutter_svg - sha256: "7b4ca6cf3304575fe9c8ec64813c8d02ee41d2afe60bcfe0678bcb5375d596a2" + sha256: "54900a1a1243f3c4a5506d853a2b5c2dbc38d5f27e52a52618a8054401431123" url: "https://pub.dev" source: hosted - version: "2.0.10+1" + version: "2.0.16" flutter_test: dependency: "direct dev" description: flutter @@ -854,10 +867,10 @@ packages: dependency: "direct main" description: name: flutter_tts - sha256: aed2a00c48c43af043ed81145fd8503ddd793dafa7088ab137dbef81a703e53d + sha256: cbec5f0447223e1b4c47f893c7f8ef663ac582120c147e4a1e2cade7f2e8b0c8 url: "https://pub.dev" source: hosted - version: "4.0.2" + version: "4.2.0" flutter_web_plugins: dependency: transitive description: flutter @@ -867,18 +880,18 @@ packages: dependency: "direct main" description: name: flutter_widget_from_html - sha256: e79144d8a37b7d1075fc1fdebc32708bd142ad9fdf1c7d9444f5e964cc03158b + sha256: f3967a5b42896662efdd420b5adaf8a7d3692b0f44462a07c80e3b4c173b1a02 url: "https://pub.dev" source: hosted - version: "0.15.1" + version: "0.15.3" flutter_widget_from_html_core: dependency: transitive description: name: flutter_widget_from_html_core - sha256: df7c7c9e5ea144f7ab0adfbad733b4d4f7d408ab733c94e6e9fdcb327af92aa1 + sha256: b1048fd119a14762e2361bd057da608148a895477846d6149109b2151d2f7abf url: "https://pub.dev" source: hosted - version: "0.15.1" + version: "0.15.2" freezed_annotation: dependency: transitive description: @@ -915,18 +928,18 @@ packages: dependency: transitive description: name: fwfh_just_audio - sha256: "4ff7927619ff4855567a61e126269e1fef985a9fe7e78682592da17bf658aabb" + sha256: "38dc2c55803bd3cef33042c473e0c40b891ad4548078424641a32032f6a1245f" url: "https://pub.dev" source: hosted - version: "0.15.1" + version: "0.15.2" fwfh_svg: dependency: transitive description: name: fwfh_svg - sha256: c6bb6b513f7ce2766aba76d7276caf9a96b6fee729ac3a492c366a42f82ef02e + sha256: "550b1014d12b5528d8bdb6e3b44b58721f3fb1f65d7a852d1623a817008bdfc4" url: "https://pub.dev" source: hosted - version: "0.8.2" + version: "0.8.3" fwfh_url_launcher: dependency: transitive description: @@ -939,34 +952,34 @@ packages: dependency: transitive description: name: fwfh_webview - sha256: "2cd2b1e463ddaf26b7d4f74e1a855126c4a836fdaff9551636693e07a07422b6" + sha256: c0a8b664b642f40f4c252a0ab4e72c22dcd97c7fb3a7e50a6b4bdb6f63afca19 url: "https://pub.dev" source: hosted - version: "0.15.1" + version: "0.15.3" geolocator: dependency: "direct main" description: name: geolocator - sha256: "149876cc5207a0f5daf4fdd3bfcf0a0f27258b3fe95108fa084f527ad0568f1b" + sha256: d2ec66329cab29cb297d51d96c067d457ca519dca8589665fa0b82ebacb7dbe4 url: "https://pub.dev" source: hosted - version: "12.0.0" + version: "13.0.2" geolocator_android: dependency: transitive description: name: geolocator_android - sha256: "00c7177a95823dd3ee35ef42fd8666cd27d219ae14cea472ac76a21dff43000b" + sha256: "7aefc530db47d90d0580b552df3242440a10fe60814496a979aa67aa98b1fd47" url: "https://pub.dev" source: hosted - version: "4.6.0" + version: "4.6.1" geolocator_apple: dependency: transitive description: name: geolocator_apple - sha256: bc2aca02423ad429cb0556121f56e60360a2b7d694c8570301d06ea0c00732fd + sha256: "6154ea2682563f69fc0125762ed7e91e7ed85d0b9776595653be33918e064807" url: "https://pub.dev" source: hosted - version: "2.3.7" + version: "2.3.8+1" geolocator_platform_interface: dependency: transitive description: @@ -979,10 +992,10 @@ packages: dependency: transitive description: name: geolocator_web - sha256: "7a22f400d831f924a89d931ba126a10e6b8b437f31e6b9311320435f3e1571bd" + sha256: "2ed69328e05cd94e7eb48bb0535f5fc0c0c44d1c4fa1e9737267484d05c29b5e" url: "https://pub.dev" source: hosted - version: "4.0.0" + version: "4.1.1" geolocator_windows: dependency: transitive description: @@ -1027,74 +1040,58 @@ packages: dependency: transitive description: name: google_identity_services_web - sha256: "9482364c9f8b7bd36902572ebc3a7c2b5c8ee57a9c93e6eb5099c1a9ec5265d8" + sha256: "55580f436822d64c8ff9a77e37d61f5fb1e6c7ec9d632a43ee324e2a05c3c6c9" url: "https://pub.dev" source: hosted - version: "0.3.1+1" + version: "0.3.3" google_maps: dependency: transitive description: name: google_maps - sha256: "47eef3836b49bb030d5cb3afc60b8451408bf34cf753e571b645d6529eb4251a" + sha256: "4d6e199c561ca06792c964fa24b2bac7197bf4b401c2e1d23e345e5f9939f531" url: "https://pub.dev" source: hosted - version: "7.1.0" + version: "8.1.1" google_maps_flutter: dependency: "direct main" description: name: google_maps_flutter - sha256: acf0ec482d86b2ac55ade80597ce7f797a47971f5210ebfd030f0d58130e0a94 + sha256: "209856c8e5571626afba7182cf634b2910069dc567954e76ec3e3fb37f5e9db3" url: "https://pub.dev" source: hosted - version: "2.7.0" + version: "2.10.0" google_maps_flutter_android: dependency: transitive description: name: google_maps_flutter_android - sha256: f6306d83edddba7aa017ca6f547d6f36a1443f90ed49d91d48ef70d7aa86e2e1 + sha256: bccf64ccbb2ea672dc62a61177b315a340af86b0228564484b023657544a3fd5 url: "https://pub.dev" source: hosted - version: "2.12.0" + version: "2.14.11" google_maps_flutter_ios: dependency: transitive description: name: google_maps_flutter_ios - sha256: a6e3c6ecdda6c985053f944be13a0645ebb919da2ef0f5bc579c5e1670a5b2a8 + sha256: "6f798adb0aa1db5adf551f2e39e24bd06c8c0fbe4de912fb2d9b5b3f48147b02" url: "https://pub.dev" source: hosted - version: "2.10.0" + version: "2.13.2" google_maps_flutter_platform_interface: dependency: transitive description: name: google_maps_flutter_platform_interface - sha256: bd60ca330e3c7763b95b477054adec338a522d982af73ecc520b232474063ac5 + sha256: a951981c22d790848efb9f114f81794945bc5c06bc566238a419a92f110af6cb url: "https://pub.dev" source: hosted - version: "2.8.0" + version: "2.9.5" google_maps_flutter_web: dependency: transitive description: name: google_maps_flutter_web - sha256: f3155c12119d8a5c2732fdf39ceb5cc095bc662059a03b4ea23294ecebe1d199 + sha256: ff39211bd25d7fad125d19f757eba85bd154460907cd4d135e07e3d0f98a4130 url: "https://pub.dev" source: hosted - version: "0.5.8" - google_mlkit_commons: - dependency: transitive - description: - name: google_mlkit_commons - sha256: "27d626c66a181351a953eba5b6ff1ff123aadb891b4dab085b292118f039d6ac" - url: "https://pub.dev" - source: hosted - version: "0.7.1" - google_mlkit_text_recognition: - dependency: "direct main" - description: - name: google_mlkit_text_recognition - sha256: "89c848329355f165ff17ca8645cab5998770e9e25e431fe6dd8261ed9cf7bdc4" - url: "https://pub.dev" - source: hosted - version: "0.13.0" + version: "0.5.10" google_polyline_algorithm: dependency: "direct main" description: @@ -1107,26 +1104,26 @@ packages: dependency: "direct main" description: name: google_sign_in - sha256: "0b8787cb9c1a68ad398e8010e8c8766bfa33556d2ab97c439fb4137756d7308f" + sha256: fad6ddc80c427b0bba705f2116204ce1173e09cf299f85e053d57a55e5b2dd56 url: "https://pub.dev" source: hosted - version: "6.2.1" + version: "6.2.2" google_sign_in_android: dependency: transitive description: name: google_sign_in_android - sha256: d30fb34b659679ea74397e9748b4ab5d720720d57dcc79538f1b3c4a68654cb3 + sha256: "3b96f9b6cf61915f73cbe1218a192623e296a9b8b31965702503649477761e36" url: "https://pub.dev" source: hosted - version: "6.1.27" + version: "6.1.34" google_sign_in_ios: dependency: transitive description: name: google_sign_in_ios - sha256: a058c9880be456f21e2e8571c1126eaacd570bdc5b6c6d9d15aea4bdf22ca9fe + sha256: "83f015169102df1ab2905cf8abd8934e28f87db9ace7a5fa676998842fed228a" url: "https://pub.dev" source: hosted - version: "5.7.6" + version: "5.7.8" google_sign_in_platform_interface: dependency: transitive description: @@ -1139,10 +1136,10 @@ packages: dependency: transitive description: name: google_sign_in_web - sha256: d606264c7a1a526a3aa79d938b85a601d8589731a478bd4a3dcbdeb14a572228 + sha256: ada595df6c30cead48e66b1f3a050edf0c5cf2ba60c185d69690e08adcc6281b url: "https://pub.dev" source: hosted - version: "0.12.4+1" + version: "0.12.4+3" googleapis_auth: dependency: "direct main" description: @@ -1163,10 +1160,10 @@ packages: dependency: transitive description: name: html - sha256: "3a7812d5bcd2894edf53dfaf8cd640876cf6cef50a8f238745c8b8120ea74d3a" + sha256: "1fc58edeaec4307368c60d59b7e15b9d658b57d7f3125098b6294153c75337ec" url: "https://pub.dev" source: hosted - version: "0.15.4" + version: "0.15.5" http: dependency: "direct main" description: @@ -1187,50 +1184,50 @@ packages: dependency: transitive description: name: http_multi_server - sha256: "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b" + sha256: aa6199f908078bb1c5efb8d8638d4ae191aac11b311132c3ef48ce352fb52ef8 url: "https://pub.dev" source: hosted - version: "3.2.1" + version: "3.2.2" http_parser: dependency: transitive description: name: http_parser - sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" + sha256: "76d306a1c3afb33fe82e2bbacad62a61f409b5634c915fceb0d799de1a913360" url: "https://pub.dev" source: hosted - version: "4.0.2" + version: "4.1.1" image: dependency: "direct main" description: name: image - sha256: "2237616a36c0d69aef7549ab439b833fb7f9fb9fc861af2cc9ac3eedddd69ca8" + sha256: "8346ad4b5173924b5ddddab782fc7d8a6300178c8b1dc427775405a01701c4a6" url: "https://pub.dev" source: hosted - version: "4.2.0" + version: "4.5.2" image_cropper: dependency: "direct main" description: name: image_cropper - sha256: d31be025c744ac1bf52d1f49cfdd92fd421e7e45ddadaaac0b39901f67c2a7e3 + sha256: "266760ed426d7121f0ada02c672bfe5c1b5c714e908328716aee756f045709dc" url: "https://pub.dev" source: hosted - version: "7.1.0" + version: "8.1.0" image_cropper_for_web: dependency: transitive description: name: image_cropper_for_web - sha256: "6386e64908ce5d5df404e01c750a99b633dfcea88da69b3efcd3b3811d639760" + sha256: "34256c8fb7fcb233251787c876bb37271744459b593a948a2db73caa323034d0" url: "https://pub.dev" source: hosted - version: "5.1.0" + version: "6.0.2" image_cropper_platform_interface: dependency: transitive description: name: image_cropper_platform_interface - sha256: "39c6539571bda7ce666e0a2f450246a5d42187406eef8f486a3d64f1d9381637" + sha256: e8e9d2ca36360387aee39295ce49029362ae4df3071f23e8e71f2b81e40b7531 url: "https://pub.dev" source: hosted - version: "6.1.0" + version: "7.0.0" image_picker: dependency: "direct main" description: @@ -1243,26 +1240,26 @@ packages: dependency: transitive description: name: image_picker_android - sha256: cea2bd5b9fcff039a4901d3b13c67fe747f940be9ba76bde1bcd218d168eeb7f + sha256: fa8141602fde3f7e2f81dbf043613eb44dfa325fa0bcf93c0f142c9f7a2c193e url: "https://pub.dev" source: hosted - version: "0.8.12+6" + version: "0.8.12+18" image_picker_for_web: dependency: transitive description: name: image_picker_for_web - sha256: "5d6eb13048cd47b60dbf1a5495424dea226c5faf3950e20bf8120a58efb5b5f3" + sha256: "717eb042ab08c40767684327be06a5d8dbb341fe791d514e4b92c7bbe1b7bb83" url: "https://pub.dev" source: hosted - version: "3.0.4" + version: "3.0.6" image_picker_ios: dependency: transitive description: name: image_picker_ios - sha256: "6703696ad49f5c3c8356d576d7ace84d1faf459afb07accbb0fae780753ff447" + sha256: "4f0568120c6fcc0aaa04511cb9f9f4d29fc3d0139884b1d06be88dcec7641d6b" url: "https://pub.dev" source: hosted - version: "0.8.12" + version: "0.8.12+1" image_picker_linux: dependency: transitive description: @@ -1307,10 +1304,10 @@ packages: dependency: transitive description: name: io - sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e" + sha256: dfd5a80599cf0165756e3181807ed3e77daf6dd4137caaad72d0b7931597650b url: "https://pub.dev" source: hosted - version: "1.0.4" + version: "1.0.5" js: dependency: transitive description: @@ -1319,14 +1316,6 @@ packages: url: "https://pub.dev" source: hosted version: "0.6.7" - js_wrapping: - dependency: transitive - description: - name: js_wrapping - sha256: e385980f7c76a8c1c9a560dfb623b890975841542471eade630b2871d243851c - url: "https://pub.dev" - source: hosted - version: "0.7.4" json_annotation: dependency: transitive description: @@ -1339,10 +1328,10 @@ packages: dependency: "direct main" description: name: just_audio - sha256: ee50602364ba83fa6308f5512dd560c713ec3e1f2bc75f0db43618f0d82ef71a + sha256: a49e7120b95600bd357f37a2bb04cd1e88252f7cdea8f3368803779b925b1049 url: "https://pub.dev" source: hosted - version: "0.9.39" + version: "0.9.42" just_audio_platform_interface: dependency: transitive description: @@ -1355,26 +1344,26 @@ packages: dependency: transitive description: name: just_audio_web - sha256: "0edb481ad4aa1ff38f8c40f1a3576013c3420bf6669b686fe661627d49bc606c" + sha256: "9a98035b8b24b40749507687520ec5ab404e291d2b0937823ff45d92cb18d448" url: "https://pub.dev" source: hosted - version: "0.4.11" + version: "0.4.13" leak_tracker: dependency: transitive description: name: leak_tracker - sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05" + sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06" url: "https://pub.dev" source: hosted - version: "10.0.5" + version: "10.0.7" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806" + sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379" url: "https://pub.dev" source: hosted - version: "3.0.5" + version: "3.0.8" leak_tracker_testing: dependency: transitive description: @@ -1387,34 +1376,34 @@ packages: dependency: transitive description: name: lints - sha256: "976c774dd944a42e83e2467f4cc670daef7eed6295b10b36ae8c85bcbf828235" + sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7 url: "https://pub.dev" source: hosted - version: "4.0.0" + version: "5.1.1" local_auth: dependency: "direct main" description: name: local_auth - sha256: "280421b416b32de31405b0a25c3bd42dfcef2538dfbb20c03019e02a5ed55ed0" + sha256: "434d854cf478f17f12ab29a76a02b3067f86a63a6d6c4eb8fbfdcfe4879c1b7b" url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.3.0" local_auth_android: dependency: transitive description: name: local_auth_android - sha256: "33fcebe9c3cf1bb0033bc85caed354c1e75ff7f7670918a571bd3152a2b65bf4" + sha256: "6763aaf8965f21822624cb2fd3c03d2a8b3791037b5efb0fe4b13e110f5afc92" url: "https://pub.dev" source: hosted - version: "1.0.42" + version: "1.0.46" local_auth_darwin: dependency: transitive description: name: local_auth_darwin - sha256: e424ebf90d5233452be146d4a7da4bcd7a70278b67791592f3fde1bda8eef9e2 + sha256: "5c5127061107278ab4cafa1ac51b3b6760282bf1a2abf011270908a429d1634b" url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.4.2" local_auth_platform_interface: dependency: transitive description: @@ -1427,18 +1416,18 @@ packages: dependency: transitive description: name: local_auth_windows - sha256: "505ba3367ca781efb1c50d3132e44a2446bccc4163427bc203b9b4d8994d97ea" + sha256: bc4e66a29b0fdf751aafbec923b5bed7ad6ed3614875d8151afe2578520b2ab5 url: "https://pub.dev" source: hosted - version: "1.0.10" + version: "1.0.11" location: dependency: "direct main" description: name: location - sha256: "6463a242973bf247e3fb1c7722919521b98026978ee3b5177202e103a39c145e" + sha256: ee57923720163324416ce0306b701db6d845d2c1a3bf44d25b607cbddbaa3973 url: "https://pub.dev" source: hosted - version: "7.0.0" + version: "7.0.1" location_platform_interface: dependency: transitive description: @@ -1451,18 +1440,26 @@ packages: dependency: transitive description: name: location_web - sha256: "613597b489beb396f658c6f4358dd383c5ed0a1402d95e287642a5f2d8171cb0" + sha256: e6435cfd175b0f6e94d6fdc43c104d13cec7e27b21a8cee00bd9516a3d6a4c81 url: "https://pub.dev" source: hosted - version: "5.0.3" + version: "5.0.4" logging: dependency: transitive description: name: logging - sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340" + sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61 url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.3.0" + macros: + dependency: transitive + description: + name: macros + sha256: "1d9e801cd66f7ea3663c45fc708450db1fa57f988142c64289142c9b7ee80656" + url: "https://pub.dev" + source: hosted + version: "0.1.3-main.0" matcher: dependency: transitive description: @@ -1491,10 +1488,10 @@ packages: dependency: transitive description: name: mime - sha256: "2e123074287cc9fd6c09de8336dae606d1ddb88d9ac47358826db698c176a1f2" + sha256: "801fd0b26f14a4a58ccb09d5892c3fbdeff209594300a542492cf13fba9d247a" url: "https://pub.dev" source: hosted - version: "1.0.5" + version: "1.0.6" nested: dependency: transitive description: @@ -1507,34 +1504,34 @@ packages: dependency: transitive description: name: octo_image - sha256: "45b40f99622f11901238e18d48f5f12ea36426d8eced9f4cbf58479c7aa2430d" + sha256: "34faa6639a78c7e3cbe79be6f9f96535867e879748ade7d17c9b1ae7536293bd" url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "2.1.0" package_config: dependency: transitive description: name: package_config - sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd" + sha256: "92d4488434b520a62570293fbd33bb556c7d49230791c1b4bbd973baf6d2dc67" url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" package_info_plus: dependency: "direct main" description: name: package_info_plus - sha256: b93d8b4d624b4ea19b0a5a208b2d6eff06004bc3ce74c06040b120eeadd00ce0 + sha256: "70c421fe9d9cc1a9a7f3b05ae56befd469fe4f8daa3b484823141a55442d858d" url: "https://pub.dev" source: hosted - version: "8.0.0" + version: "8.1.2" package_info_plus_platform_interface: dependency: transitive description: name: package_info_plus_platform_interface - sha256: f49918f3433a3146047372f9d4f1f847511f2acd5cd030e1f44fe5a50036b70e + sha256: a5ef9986efc7bf772f2696183a3992615baa76c1ffb1189318dd8803778fb05b url: "https://pub.dev" source: hosted - version: "3.0.0" + version: "3.0.2" path: dependency: "direct main" description: @@ -1547,34 +1544,34 @@ packages: dependency: transitive description: name: path_parsing - sha256: e3e67b1629e6f7e8100b367d3db6ba6af4b1f0bb80f64db18ef1fbabd2fa9ccf + sha256: "883402936929eac138ee0a45da5b0f2c80f89913e6dc3bf77eb65b84b409c6ca" url: "https://pub.dev" source: hosted - version: "1.0.1" + version: "1.1.0" path_provider: dependency: transitive description: name: path_provider - sha256: c9e7d3a4cd1410877472158bee69963a4579f78b68c65a2b7d40d1a7a88bb161 + sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd" url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.1.5" path_provider_android: dependency: transitive description: name: path_provider_android - sha256: "30c5aa827a6ae95ce2853cdc5fe3971daaac00f6f081c419c013f7f57bff2f5e" + sha256: "4adf4fd5423ec60a29506c76581bc05854c55e3a0b72d35bb28d661c9686edf2" url: "https://pub.dev" source: hosted - version: "2.2.7" + version: "2.2.15" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - sha256: f234384a3fdd67f989b4d54a5d73ca2a6c422fa55ae694381ae0f4375cd1ea16 + sha256: "4843174df4d288f5e29185bd6e72a6fbdf5a4a4602717eed565497429f179942" url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.4.1" path_provider_linux: dependency: transitive description: @@ -1611,10 +1608,10 @@ packages: dependency: transitive description: name: permission_handler_android - sha256: b29a799ca03be9f999aa6c39f7de5209482d638e6f857f6b93b0875c618b7e54 + sha256: "71bbecfee799e65aff7c744761a57e817e73b738fedf62ab7afd5593da21f9f1" url: "https://pub.dev" source: hosted - version: "12.0.7" + version: "12.0.13" permission_handler_apple: dependency: transitive description: @@ -1627,18 +1624,18 @@ packages: dependency: transitive description: name: permission_handler_html - sha256: "54bf176b90f6eddd4ece307e2c06cf977fb3973719c35a93b85cc7093eb6070d" + sha256: "38f000e83355abb3392140f6bc3030660cfaef189e1f87824facb76300b4ff24" url: "https://pub.dev" source: hosted - version: "0.1.1" + version: "0.1.3+5" permission_handler_platform_interface: dependency: transitive description: name: permission_handler_platform_interface - sha256: "48d4fcf201a1dad93ee869ab0d4101d084f49136ec82a8a06ed9cfeacab9fd20" + sha256: e9c8eadee926c4532d0305dff94b85bf961f16759c3af791486613152af4b4f9 url: "https://pub.dev" source: hosted - version: "4.2.1" + version: "4.2.3" permission_handler_windows: dependency: transitive description: @@ -1659,10 +1656,10 @@ packages: dependency: transitive description: name: platform - sha256: "9b71283fc13df574056616011fb138fd3b793ea47cc509c189a6c3fa5f8a1a65" + sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984" url: "https://pub.dev" source: hosted - version: "3.1.5" + version: "3.1.6" plugin_platform_interface: dependency: transitive description: @@ -1687,6 +1684,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.5.1" + posix: + dependency: transitive + description: + name: posix + sha256: a0117dc2167805aa9125b82eee515cc891819bac2f538c83646d355b16f58b9a + url: "https://pub.dev" + source: hosted + version: "6.0.1" provider: dependency: transitive description: @@ -1699,18 +1704,18 @@ packages: dependency: transitive description: name: pub_semver - sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c" + sha256: "7b3cfbf654f3edd0c6298ecd5be782ce997ddf0e00531b9464b55245185bbbbd" url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.1.5" pubspec_parse: dependency: transitive description: name: pubspec_parse - sha256: c799b721d79eb6ee6fa56f00c04b472dcd44a30d258fac2174a6ec57302678f8 + sha256: "81876843eb50dc2e1e5b151792c9a985c5ed2536914115ed04e9c8528f6647b0" url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.0" recase: dependency: transitive description: @@ -1723,26 +1728,26 @@ packages: dependency: "direct main" description: name: record - sha256: "4a5cf4d083d1ee49e0878823c4397d073f8eb0a775f31215d388e2bc47a9e867" + sha256: "8cb57763d954624fbc673874930c6f1ceca3baaf9bfee24b25da6fd451362394" url: "https://pub.dev" source: hosted - version: "5.1.2" + version: "5.2.0" record_android: dependency: transitive description: name: record_android - sha256: "9ccf6a206dc72b486cf37893690e70c17610e8f05dba8da1a808e73dc2f49a04" + sha256: "0b4739a2502fff402b0ac0ff1d6b2740854d116d78e06a4a16b3989821f84446" url: "https://pub.dev" source: hosted - version: "1.2.4" + version: "1.3.0" record_darwin: dependency: transitive description: name: record_darwin - sha256: b038c26d1066eb81f4e7433bfb85f0d450ca3fac0002a7216b83a21b775ecf21 + sha256: e487eccb19d82a9a39cd0126945cfc47b9986e0df211734e2788c95e3f63c82c url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.2.2" record_linux: dependency: transitive description: @@ -1755,26 +1760,26 @@ packages: dependency: transitive description: name: record_platform_interface - sha256: "11f8b03ea8a0e279b0e306571dbe0db0202c0b8e866495c9fa1ad2281d5e4c15" + sha256: "8a575828733d4c3cb5983c914696f40db8667eab3538d4c41c50cbb79e722ef4" url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.2.0" record_web: dependency: transitive description: name: record_web - sha256: "703adb626d31e2dd86a8f6b34e306e03cd323e0c5e16e11bbc0385b07a8df97e" + sha256: "10cb041349024ce4256e11dd35874df26d8b45b800678f2f51fd1318901adc64" url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.4" record_windows: dependency: transitive description: name: record_windows - sha256: e653555aa3fda168aded7c34e11bd82baf0c6ac84e7624553def3c77ffefd36f + sha256: "7bce0ac47454212ca8bfa72791d8b6a951f2fb0d4b953b64443c014227f035b4" url: "https://pub.dev" source: hosted - version: "1.0.3" + version: "1.0.4" rxdart: dependency: transitive description: @@ -1810,26 +1815,26 @@ packages: dependency: transitive description: name: shelf - sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4 + sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12 url: "https://pub.dev" source: hosted - version: "1.4.1" + version: "1.4.2" shelf_web_socket: dependency: transitive description: name: shelf_web_socket - sha256: "073c147238594ecd0d193f3456a5fe91c4b0abbcc68bf5cd95b36c4e194ac611" + sha256: cc36c297b52866d203dbf9332263c94becc2fe0ceaa9681d07b6ef9807023b67 url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "2.0.1" sign_in_with_apple: dependency: "direct main" description: name: sign_in_with_apple - sha256: "5c34c601d6910d7db0077063001ccd9d9329ee58b9038ee07153ffcdd76e91bd" + sha256: e84a62e17b7e463abf0a64ce826c2cd1f0b72dff07b7b275e32d5302d76fb4c5 url: "https://pub.dev" source: hosted - version: "6.1.1" + version: "6.1.4" sign_in_with_apple_platform_interface: dependency: transitive description: @@ -1842,15 +1847,23 @@ packages: dependency: transitive description: name: sign_in_with_apple_web - sha256: c009e9beeb6c376e86aaa154fcc8b4e075d4bad90c56286b9668a51cdb6129ea + sha256: "2f7c38368f49e3f2043bca4b46a4a61aaae568c140a79aa0675dc59ad0ca49bc" url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" sky_engine: dependency: transitive description: flutter source: sdk - version: "0.0.99" + version: "0.0.0" + slide_to_act: + dependency: "direct main" + description: + name: slide_to_act + sha256: cd4ea5019754347d5a2b0375e802ad948610a0e233adfe51a9cc5b3a1fc3a43b + url: "https://pub.dev" + source: hosted + version: "2.0.2" source_gen: dependency: transitive description: @@ -1879,26 +1892,50 @@ packages: dependency: "direct main" description: name: sqflite - sha256: a43e5a27235518c03ca238e7b4732cf35eabe863a369ceba6cbefa537a66f16d + sha256: "2d7299468485dca85efeeadf5d38986909c5eb0cd71fd3db2c2f000e6c9454bb" url: "https://pub.dev" source: hosted - version: "2.3.3+1" + version: "2.4.1" + sqflite_android: + dependency: transitive + description: + name: sqflite_android + sha256: "78f489aab276260cdd26676d2169446c7ecd3484bbd5fead4ca14f3ed4dd9ee3" + url: "https://pub.dev" + source: hosted + version: "2.4.0" sqflite_common: dependency: transitive description: name: sqflite_common - sha256: "3da423ce7baf868be70e2c0976c28a1bb2f73644268b7ffa7d2e08eab71f16a4" + sha256: "761b9740ecbd4d3e66b8916d784e581861fd3c3553eda85e167bc49fdb68f709" url: "https://pub.dev" source: hosted - version: "2.5.4" + version: "2.5.4+6" + sqflite_darwin: + dependency: transitive + description: + name: sqflite_darwin + sha256: "96a698e2bc82bd770a4d6aab00b42396a7c63d9e33513a56945cbccb594c2474" + url: "https://pub.dev" + source: hosted + version: "2.4.1" + sqflite_platform_interface: + dependency: transitive + description: + name: sqflite_platform_interface + sha256: "8dd4515c7bdcae0a785b0062859336de775e8c65db81ae33dd5445f35be61920" + url: "https://pub.dev" + source: hosted + version: "2.4.0" stack_trace: dependency: transitive description: name: stack_trace - sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" + sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377" url: "https://pub.dev" source: hosted - version: "1.11.1" + version: "1.12.0" stream_channel: dependency: transitive description: @@ -1911,50 +1948,50 @@ packages: dependency: transitive description: name: stream_transform - sha256: "14a00e794c7c11aa145a170587321aedce29769c08d7f58b1d141da75e3b1c6f" + sha256: ad47125e588cfd37a9a7f86c7d6356dde8dfe89d071d293f80ca9e9273a33871 url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" string_scanner: dependency: transitive description: name: string_scanner - sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3" url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.3.0" stripe_android: dependency: transitive description: name: stripe_android - sha256: "74c977ae0a918949e84796a8a3524a68610f4719c66170f01592b4bc5196f049" + sha256: bc919b07ba1560b25a69002f9ca67a5973f12bfb96f78033cf9bd6c561f1aa10 url: "https://pub.dev" source: hosted - version: "10.2.1" + version: "11.3.0" stripe_ios: dependency: transitive description: name: stripe_ios - sha256: eb91cb9b971e22f865937309b0e5e4e0f5bcbfc39e671bd41c0fdaddbb5ad948 + sha256: "734a7668babd85a451c8049f0dfa8ca5dc6d80f85600d29732e7fa703dd5ec5e" url: "https://pub.dev" source: hosted - version: "10.2.0" + version: "11.3.0" stripe_platform_interface: dependency: transitive description: name: stripe_platform_interface - sha256: "1a2e3fe106bc723c0c0cda2f97f15bfef16944507621639c636041845a96ff57" + sha256: "5cb987074b6ee199e7dd1b81d189c87583f6eaeb19147ffc8c15bc009596e6ce" url: "https://pub.dev" source: hosted - version: "10.2.0" + version: "11.3.0" synchronized: dependency: transitive description: name: synchronized - sha256: "539ef412b170d65ecdafd780f924e5be3f60032a1128df156adad6c5b373d558" + sha256: "69fe30f3a8b04a0be0c15ae6490fc859a78ef4c43ae2dd5e8a623d45bfcf9225" url: "https://pub.dev" source: hosted - version: "3.1.0+1" + version: "3.3.0+3" term_glyph: dependency: transitive description: @@ -1967,74 +2004,74 @@ packages: dependency: transitive description: name: test_api - sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb" + sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c" url: "https://pub.dev" source: hosted - version: "0.7.2" + version: "0.7.3" timezone: dependency: transitive description: name: timezone - sha256: "2236ec079a174ce07434e89fcd3fcda430025eb7692244139a9cf54fdcf1fc7d" + sha256: ffc9d5f4d1193534ef051f9254063fa53d588609418c84299956c3db9383587d url: "https://pub.dev" source: hosted - version: "0.9.4" + version: "0.10.0" timing: dependency: transitive description: name: timing - sha256: "70a3b636575d4163c477e6de42f247a23b315ae20e86442bebe32d3cabf61c32" + sha256: "62ee18aca144e4a9f29d212f5a4c6a053be252b895ab14b5821996cff4ed90fe" url: "https://pub.dev" source: hosted - version: "1.0.1" + version: "1.0.2" typed_data: dependency: transitive description: name: typed_data - sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c + sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 url: "https://pub.dev" source: hosted - version: "1.3.2" + version: "1.4.0" url_launcher: dependency: "direct main" description: name: url_launcher - sha256: "21b704ce5fa560ea9f3b525b43601c678728ba46725bab9b01187b4831377ed3" + sha256: "9d06212b1362abc2f0f0d78e6f09f726608c74e3b9462e8368bb03314aa8d603" url: "https://pub.dev" source: hosted - version: "6.3.0" + version: "6.3.1" url_launcher_android: dependency: transitive description: name: url_launcher_android - sha256: "95d8027db36a0e52caf55680f91e33ea6aa12a3ce608c90b06f4e429a21067ac" + sha256: "6fc2f56536ee873eeb867ad176ae15f304ccccc357848b351f6f0d8d4a40d193" url: "https://pub.dev" source: hosted - version: "6.3.5" + version: "6.3.14" url_launcher_ios: dependency: transitive description: name: url_launcher_ios - sha256: e43b677296fadce447e987a2f519dcf5f6d1e527dc35d01ffab4fff5b8a7063e + sha256: "16a513b6c12bb419304e72ea0ae2ab4fed569920d1c7cb850263fe3acc824626" url: "https://pub.dev" source: hosted - version: "6.3.1" + version: "6.3.2" url_launcher_linux: dependency: transitive description: name: url_launcher_linux - sha256: ab360eb661f8879369acac07b6bb3ff09d9471155357da8443fd5d3cf7363811 + sha256: "4e9ba368772369e3e08f231d2301b4ef72b9ff87c31192ef471b380ef29a4935" url: "https://pub.dev" source: hosted - version: "3.1.1" + version: "3.2.1" url_launcher_macos: dependency: transitive description: name: url_launcher_macos - sha256: "9a1a42d5d2d95400c795b2914c36fdcb525870c752569438e4ebb09a2b5d90de" + sha256: "17ba2000b847f334f16626a574c702b196723af2a289e7a93ffcb79acff855c2" url: "https://pub.dev" source: hosted - version: "3.2.0" + version: "3.2.2" url_launcher_platform_interface: dependency: transitive description: @@ -2047,50 +2084,50 @@ packages: dependency: transitive description: name: url_launcher_web - sha256: "8d9e750d8c9338601e709cd0885f95825086bd8b642547f26bda435aade95d8a" + sha256: "772638d3b34c779ede05ba3d38af34657a05ac55b06279ea6edd409e323dca8e" url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.3.3" url_launcher_windows: dependency: transitive description: name: url_launcher_windows - sha256: ecf9725510600aa2bb6d7ddabe16357691b6d2805f66216a97d1b881e21beff7 + sha256: "44cf3aabcedde30f2dba119a9dea3b0f2672fbe6fa96e85536251d678216b3c4" url: "https://pub.dev" source: hosted - version: "3.1.1" + version: "3.1.3" uuid: dependency: transitive description: name: uuid - sha256: "83d37c7ad7aaf9aa8e275490669535c8080377cfa7a7004c24dfac53afffaa90" + sha256: a5be9ef6618a7ac1e964353ef476418026db906c4facdedaa299b7a2e71690ff url: "https://pub.dev" source: hosted - version: "4.4.2" + version: "4.5.1" vector_graphics: dependency: transitive description: name: vector_graphics - sha256: "32c3c684e02f9bc0afb0ae0aa653337a2fe022e8ab064bcd7ffda27a74e288e3" + sha256: "27d5fefe86fb9aace4a9f8375b56b3c292b64d8c04510df230f849850d912cb7" url: "https://pub.dev" source: hosted - version: "1.1.11+1" + version: "1.1.15" vector_graphics_codec: dependency: transitive description: name: vector_graphics_codec - sha256: c86987475f162fadff579e7320c7ddda04cd2fdeffbe1129227a85d9ac9e03da + sha256: "2430b973a4ca3c4dbc9999b62b8c719a160100dcbae5c819bae0cacce32c9cdb" url: "https://pub.dev" source: hosted - version: "1.1.11+1" + version: "1.1.12" vector_graphics_compiler: dependency: transitive description: name: vector_graphics_compiler - sha256: "12faff3f73b1741a36ca7e31b292ddeb629af819ca9efe9953b70bd63fc8cd81" + sha256: "1b4b9e706a10294258727674a340ae0d6e64a7231980f9f9a3d12e4b42407aad" url: "https://pub.dev" source: hosted - version: "1.1.11+1" + version: "1.1.16" vector_math: dependency: transitive description: @@ -2103,18 +2140,18 @@ packages: dependency: "direct main" description: name: vibration - sha256: "06588a845a4ebc73ab7ff7da555c2b3dbcd9676164b5856a38bf0b2287f1045d" + sha256: f0af02af2d63132135ae0332a3e54d5de718e214ee94c4f082176ef6ce624a4b url: "https://pub.dev" source: hosted - version: "1.9.0" + version: "2.0.1" vibration_platform_interface: dependency: transitive description: name: vibration_platform_interface - sha256: "735a5fef0f284de0ad9449a5ed7d36ba017c6f59b5b20ac64418af4a6bd35ee7" + sha256: f66b39aab2447038978c16f3d6f77228e49ef5717556e3da02313e044e4a7600 url: "https://pub.dev" source: hosted - version: "0.0.1" + version: "0.0.2" video_player: dependency: "direct main" description: @@ -2127,50 +2164,50 @@ packages: dependency: transitive description: name: video_player_android - sha256: fdc0331ce9f808cc2714014cb8126bd6369943affefd54f8fdab0ea0bb617b7f + sha256: "391e092ba4abe2f93b3e625bd6b6a6ec7d7414279462c1c0ee42b5ab8d0a0898" url: "https://pub.dev" source: hosted - version: "2.5.2" + version: "2.7.16" video_player_avfoundation: dependency: transitive description: name: video_player_avfoundation - sha256: d1e9a824f2b324000dc8fb2dcb2a3285b6c1c7c487521c63306cc5b394f68a7c + sha256: "33224c19775fd244be2d6e3dbd8e1826ab162877bd61123bf71890772119a2b7" url: "https://pub.dev" source: hosted - version: "2.6.1" + version: "2.6.5" video_player_platform_interface: dependency: transitive description: name: video_player_platform_interface - sha256: "236454725fafcacf98f0f39af0d7c7ab2ce84762e3b63f2cbb3ef9a7e0550bc6" + sha256: "229d7642ccd9f3dc4aba169609dd6b5f3f443bb4cc15b82f7785fcada5af9bbb" url: "https://pub.dev" source: hosted - version: "6.2.2" + version: "6.2.3" video_player_web: dependency: transitive description: name: video_player_web - sha256: ff4d69a6614b03f055397c27a71c9d3ddea2b2a23d71b2ba0164f59ca32b8fe2 + sha256: "881b375a934d8ebf868c7fb1423b2bfaa393a0a265fa3f733079a86536064a10" url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.3.3" vm_service: dependency: transitive description: name: vm_service - sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d" + sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b url: "https://pub.dev" source: hosted - version: "14.2.5" + version: "14.3.0" wakelock_plus: dependency: "direct main" description: name: wakelock_plus - sha256: "14758533319a462ffb5aa3b7ddb198e59b29ac3b02da14173a1715d65d4e6e68" + sha256: "1aeab49f24aec1e5ab417d7cdfc47c7bbcb815353f1840667ffe68c89a0cd2e6" url: "https://pub.dev" source: hosted - version: "1.2.5" + version: "1.2.9" wakelock_plus_platform_interface: dependency: transitive description: @@ -2183,18 +2220,18 @@ packages: dependency: transitive description: name: watcher - sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8" + sha256: "69da27e49efa56a15f8afe8f4438c4ec02eff0a117df1b22ea4aad194fe1c104" url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.1" web: dependency: transitive description: name: web - sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27" + sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb url: "https://pub.dev" source: hosted - version: "0.5.1" + version: "1.1.0" web_socket: dependency: transitive description: @@ -2223,10 +2260,10 @@ packages: dependency: transitive description: name: webview_flutter_android - sha256: f42447ca49523f11d8f70abea55ea211b3cafe172dd7a0e7ac007bb35dd356dc + sha256: "47a8da40d02befda5b151a26dba71f47df471cddd91dfdb7802d0a87c5442558" url: "https://pub.dev" source: hosted - version: "3.16.4" + version: "3.16.9" webview_flutter_platform_interface: dependency: transitive description: @@ -2239,34 +2276,34 @@ packages: dependency: transitive description: name: webview_flutter_wkwebview - sha256: d4034901d96357beb1b6717ebf7d583c88e40cfc6eb85fe76dd1bf0979a9f251 + sha256: b7e92f129482460951d96ef9a46b49db34bd2e1621685de26e9eaafd9674e7eb url: "https://pub.dev" source: hosted - version: "3.16.0" + version: "3.16.3" win32: dependency: transitive description: name: win32 - sha256: a79dbe579cb51ecd6d30b17e0cae4e0ea15e2c0e66f69ad4198f22a6789e94f4 + sha256: "8b338d4486ab3fbc0ba0db9f9b4f5239b6697fcee427939a40e720cbb9ee0a69" url: "https://pub.dev" source: hosted - version: "5.5.1" + version: "5.9.0" win32_registry: dependency: transitive description: name: win32_registry - sha256: "10589e0d7f4e053f2c61023a31c9ce01146656a70b7b7f0828c0b46d7da2a9bb" + sha256: "21ec76dfc731550fd3e2ce7a33a9ea90b828fdf19a5c3bcf556fa992cfa99852" url: "https://pub.dev" source: hosted - version: "1.1.3" + version: "1.1.5" xdg_directories: dependency: transitive description: name: xdg_directories - sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d + sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15" url: "https://pub.dev" source: hosted - version: "1.0.4" + version: "1.1.0" xml: dependency: transitive description: @@ -2279,18 +2316,18 @@ packages: dependency: transitive description: name: yaml - sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" + sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce url: "https://pub.dev" source: hosted - version: "3.1.2" + version: "3.1.3" youtube_player_flutter: dependency: "direct main" description: name: youtube_player_flutter - sha256: "30f84e2f7063c56e536f507e37c1e803546842707cf58e5b5a71253b9ff9b455" + sha256: "4d14aa47f9c84929b5400a87ade4dcfdab87a2ca2e0b18ecc2ef852b1440e123" url: "https://pub.dev" source: hosted - version: "9.0.4" + version: "9.1.1" sdks: - dart: ">=3.5.0 <4.0.0" - flutter: ">=3.24.0" + dart: ">=3.6.0 <4.0.0" + flutter: ">=3.27.0" diff --git a/pubspec.yaml b/pubspec.yaml index 41f2b66..f9f5595 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -20,7 +20,7 @@ dependencies: cupertino_icons: ^1.0.2 firebase_messaging: ^15.0.3 firebase_core: ^3.2.0 - flutter_local_notifications: ^17.2.1+2 + flutter_local_notifications: ^18.0.1 google_maps_flutter: ^2.5.0 sqflite: ^2.3.0 path: ^1.8.3 @@ -36,30 +36,30 @@ dependencies: # custom_searchable_dropdown: ^2.1.1 animated_text_kit: ^4.2.2 flutter_secure_storage: ^9.0.0 - geolocator: ^12.0.0 + geolocator: ^13.0.2 flutter_paypal: ^0.2.0 - flutter_launcher_icons: ^0.13.1 #to be remove + flutter_launcher_icons: ^0.14.2 #to be remove # crypto: ^3.0.3 encrypt: ^5.0.3 flutter_rating_bar: ^4.0.1 flutter_font_icons: ^2.2.5 # device_info_plus: ^9.1.0 image_picker: ^1.0.4 - flutter_stripe: ^10.2.0 + flutter_stripe: ^11.3.0 camera: ^0.11.0+1 #to be remove flutter_widget_from_html: ^0.15.1 local_auth: ^2.1.7 image: ^4.1.3 #to be remove - image_cropper: ^7.1.0 - envied: ^0.5.2 + image_cropper: ^8.1.0 + envied: ^1.0.0 # cached_network_image: ^3.3.0 #to be remove calendar_builder: ^0.0.6 - fl_chart: ^0.68.0 + fl_chart: ^0.70.0 # agora_rtc_engine: ^6.2.6 flutter_tts: ^4.0.2 permission_handler: ^11.3.0 # google_generative_ai: ^0.0.1-dev - vibration: ^1.8.4 + vibration: ^2.0.1 wakelock_plus: # background_location: ^0.13.0 background_location: @@ -77,7 +77,7 @@ dependencies: just_audio: ^0.9.37 share: ^2.0.4 google_sign_in: ^6.2.1 - google_mlkit_text_recognition: ^0.13.0 + # google_mlkit_text_recognition: ^0.14.0 sign_in_with_apple: ^6.1.0 firebase_auth: ^5.1.2 package_info_plus: ^8.0.0 @@ -88,13 +88,14 @@ dependencies: video_player: ^2.9.2 youtube_player_flutter: ^9.0.4 flutter_confetti: ^0.3.0 + slide_to_act: ^2.0.2 dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^4.0.0 - envied_generator: ^0.5.2 + flutter_lints: ^5.0.0 + envied_generator: ^1.0.0 build_runner: ^2.4.6 flutter_launcher_icons: diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index afbf346..b21e906 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -24,6 +25,8 @@ void RegisterPlugins(flutter::PluginRegistry* registry) { registry->GetRegistrarForPlugin("FirebaseAuthPluginCApi")); FirebaseCorePluginCApiRegisterWithRegistrar( registry->GetRegistrarForPlugin("FirebaseCorePluginCApi")); + FlutterInappwebviewWindowsPluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("FlutterInappwebviewWindowsPluginCApi")); FlutterSecureStorageWindowsPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("FlutterSecureStorageWindowsPlugin")); FlutterTtsPluginRegisterWithRegistrar( diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index 7957800..a75a14d 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -6,6 +6,7 @@ list(APPEND FLUTTER_PLUGIN_LIST file_selector_windows firebase_auth firebase_core + flutter_inappwebview_windows flutter_secure_storage_windows flutter_tts geolocator_windows