From f1e23277326922a9428e9580733c4bf8144e2c6e Mon Sep 17 00:00:00 2001 From: Vusumuzi Khoza Date: Sat, 27 Sep 2025 01:09:05 +0200 Subject: [PATCH] ironing out erp bugs --- android/app/build.gradle.kts | 8 +- android/app/google-services.json | 29 ++ .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 4257 -> 2880 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 2430 -> 1477 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 6529 -> 4886 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 11579 -> 10693 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 17475 -> 19290 bytes android/settings.gradle.kts | 3 + assets/.env | 5 +- assets/login.png | Bin 0 -> 25679 bytes assets/phone.jpg | Bin 0 -> 41792 bytes assets/phone.png | Bin 0 -> 36920 bytes assets/social.jpg | Bin 0 -> 37621 bytes assets/social.png | Bin 0 -> 35536 bytes firebase.json | 1 + firepit-log.txt | 13 + lib/abstracts/AbstractController.dart | 17 + lib/firebase_options.dart | 89 ++++ lib/http/http.dart | 2 +- lib/main.dart | 25 +- lib/screens/home/home_controller.dart | 2 +- lib/screens/home/home_screen.dart | 180 ++++---- lib/screens/onboarding/complete_screen.dart | 73 ++++ .../onboarding/login/login_controller.dart | 4 +- .../onboarding/login/login_screen.dart | 191 ++++----- .../onboarding/onboarding_controller.dart | 37 ++ .../onboarding/phone/phone_controller.dart | 73 ++++ .../onboarding/phone/phone_screen.dart | 270 ++++++++++++ .../onboarding/register/register_screen.dart | 384 ++++++++++-------- .../onboarding/verify/verify_controller.dart | 95 +++++ .../onboarding/verify/verify_screen.dart | 323 ++++++++------- lib/screens/receipt/receipt_controller.dart | 1 + lib/screens/transaction_controller.dart | 5 +- .../transaction_controller.freezed.dart | 36 +- lib/screens/transaction_controller.g.dart | 4 +- lib/theme/app_theme.dart | 2 +- macos/Flutter/GeneratedPluginRegistrant.swift | 4 + pubspec.lock | 74 +++- pubspec.yaml | 2 + .../flutter/generated_plugin_registrant.cc | 3 + windows/flutter/generated_plugins.cmake | 1 + 41 files changed, 1440 insertions(+), 516 deletions(-) create mode 100644 android/app/google-services.json create mode 100644 assets/login.png create mode 100644 assets/phone.jpg create mode 100644 assets/phone.png create mode 100644 assets/social.jpg create mode 100644 assets/social.png create mode 100644 firebase.json create mode 100644 firepit-log.txt create mode 100644 lib/abstracts/AbstractController.dart create mode 100644 lib/firebase_options.dart create mode 100644 lib/screens/onboarding/complete_screen.dart create mode 100644 lib/screens/onboarding/onboarding_controller.dart create mode 100644 lib/screens/onboarding/phone/phone_controller.dart create mode 100644 lib/screens/onboarding/phone/phone_screen.dart create mode 100644 lib/screens/onboarding/verify/verify_controller.dart diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index a4ee8f0..741431d 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -1,5 +1,8 @@ plugins { id("com.android.application") + // START: FlutterFire Configuration + id("com.google.gms.google-services") + // END: FlutterFire Configuration id("kotlin-android") // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. id("dev.flutter.flutter-gradle-plugin") @@ -24,7 +27,8 @@ android { applicationId = "zw.co.qantra.qpay" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = flutter.minSdkVersion + // minSdk = flutter.minSdkVersion + minSdk = 23 targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName @@ -45,4 +49,4 @@ dependencies { flutter { source = "../.." -} +} \ No newline at end of file diff --git a/android/app/google-services.json b/android/app/google-services.json new file mode 100644 index 0000000..978b7b8 --- /dev/null +++ b/android/app/google-services.json @@ -0,0 +1,29 @@ +{ + "project_info": { + "project_number": "77433712483", + "project_id": "peak-c376b", + "storage_bucket": "peak-c376b.firebasestorage.app" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:77433712483:android:c6508ec8c6a23889ab6d56", + "android_client_info": { + "package_name": "zw.co.qantra.qpay" + } + }, + "oauth_client": [], + "api_key": [ + { + "current_key": "AIzaSyARyIWVumzj4UWNwplKZRxxVYmw_H6hBKI" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png index d06ffdff068f341bf2623e8fac90090ff38d9b5c..b7e87e70ddcdf95e6dd3be684b6003e951a12d83 100644 GIT binary patch delta 2874 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 D)af7j diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png index 48ea1fe046ebc42b1d6de689a0a875a67b95fef8..09c4b198fe231dab46f951a46dbf63e3bf442dcc 100644 GIT binary patch delta 1460 zcmV;l1xxz=62%LUBYy>YNklk1I7r6KYXABv`r1gTB9a*MT1r&i4Tw>7=`lM5aiJ= z^4z`SIkS74Wy3CWx0GcQX7|j@IdkTm@0&CCE*Pe1O4E#8F@F%_ZD|t_VNTb-<|E)& z!niN~5@V8cq-8ss{cAn~eueEzMnYi`K?{ z3{Ah;Zk&woE{_laA9k~Jp8G}6$U*~XpOnSa0AM>JXps@{2$J5;zwn=X6cgia%*;%oufHGT;}giw z&nF@saDTa65cKhFf_5{sJ(VLdV4xGDnEK=%OdZ{U$-}o{qIwIaTdE-lX!GZXP`7^_ zK7DyJnm&GxK%Yfv(M~+ED+A9wcoQDmk%`|=eTkkP0!*>W%gd3IlY^Y>Yzzzx__ENI zQWK4CegYyeiUg~2tRHful@3c_<*r(YWXOR8q>wp;O1>5J&;?Ny0{;0$W2)fw}8NxuijrG%`> zb6xb{nF_okH5c;IL^zVu(fiABBqYUSw5J)W2x9`B}M%%2zpL9kB-bwz=~oKA>AB04Uv=%IoyHi zpUWWoe}r`R;WF13bY&)pKnt$fbSGL)ypG9{VYIjYh7*S?@orfu;^HKZeefDStggW= zTXXSkLj&An{9MdnaBvX(Kuda-D2>)vpMO9=ICJnc5lDmgj1!*b_h6)K#>}eq*zkBA zw(dCy_fQ}H_^J{a+xO!6ijUyx?#9>kRoMT^J6M~(2`4|R!S=j7+`GE~?^jh(H6@CR zi!nlEB~_VUs{!f4PK~gu!HZN{E`;gsf=FD46?q2{U(|;9hn!fsvjUFGGjVg_0e{?g zs1^5@wPC{@Pa*&Ay{P@B6BS2)#a)F@;>{yXc)Pw0-#0d5-@a$DX3bi(wzi_Hs|y(! znJOb!K}|F|8w4bUBX`dvJM4iW46;Zy_nM^BtJNew zua|zTD2k+2Fa2I98;z{9nDn<1Eq~kk5+Y51#!s$tVi1T+AObf43MlcQH3^5(g>VoN zlZ>R&+#rzzUO>PgB7|M78Nwh7+YF_Hwg@3$x6y9REgYQgr%1RO@sIojM`{iMCFBI~ zd<0T`^I#ysy3b4X)}Amf$}dD`g8)U~B*rBWD-%J-=MzM?=@U>mnE@RcU4IGdDkyUl zJADF#o9>M7zN+JoBIk21!IgR09CjPK+<%3uqAl O0000Px;I7vi7RA@u(n0atk)fvWr_q*Sg6;ezf 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 IM6N<$f;fLz*#H0l literal 6529 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® zx$zWo&Z3Li;)2+A!g+vtS@D`>056!mGUUVLYX&gOf8RaAbW9m3c%{(~*ly z%|$plI__kDEL|2kOu}tsdm`9zicLqJ-hq->ZrCYazfzrw=HmF1X~@o)!G&=ob5w!h zts-9g1iW1>KsIKcajNqS3>@0 zLP!rPo8eeQW_Kv*BxjLuj%1fC-W_t$y^1{1uGwT0yA+d+llYfwAb&DRfXT6}*~ImW z$~VXu=3mw;{e0x%6Hy<3fz8^sv4$}dtJf^2tiz23vNDb0?vFN+000SMNklEO35IP*QTm!YWI(d^+u#DO87mz&S z=kDh_pw)meFr(`b&DoZBv)SNJ8vq84i>?qP9ZFn-Dj*8s>alEQJxK1nZ1>)cqjG&!5&vP%}vB4-m9x#iauXNgMZM=@`@GIf*cd8|7QjfAX)o7_WUHaT!m z#wQfZ(ipki5fVEDQ!Z;5IxsIAC@fxSRA2#i=gz|N+h}^{Aeyx`Oz&(q51)gwifHG; zWyP7SE^7|0VybpgE8GmWcc+20m|7TdfAZ4#V2z?Zy^3kYP(Kda7PN_ zWXGj*B%PJjU?L8r6HzQYLNJ8^W`MDqbLc?q_8X{ZZOas!hC#YxA@!FH#Ca+0a8CUQkuZck`> z5KdI^KhlYOoiBU2eRY#8jEmuT6Tlk?EAmvCVyig5Qz%xrklY~{mtQfRT*T8cbNsr~ zKt+Z5wnmXjbs8t44=XJzPAey29JRuR+7&MZ8-mk1gy58~3^p{T;s((4Hc+}iEks(k zsf;^(VH!Je$oxB^vTV zalXQe+&GU5<0ua!y)fdfNH|ddE*4JI3L9weP6H`<2aB}Zc}P5m32n4coaWPt%H(!= z9WRRQ;uc{-Y)Kr;Lh^>hB&M?sWUFIT6)2)ucnBjZ1kosrh+^*Ha_0h4hF0+$ybLZB ztJopf5R78AB7bc<6*I}%*#_!xaY>C~Ou0p2=wj4NvWCn_7*Sr`MYcSjKz(N$C@^W; zFfD{ABtWNeAvtF{CUi|o%%gh^6k2QL#LvTeHXKNM9;o9Y@ zH_zAE9M8dZuYqzBHmO?_*Mu!IXcbo%Mi^16xFHx9!^L&uEM6vFmVX&tr*aj2FJTs z|HR0h&Z&5!iJ3AqRE1zeFbrj1po+Jm(0DFRS-kVh;N==9G_l+A9M4E>RiW`LIPlae zXJD9iU^cZq6?kjTtuS&IPF&>68mCF|T453&{VBu#)2d`VSyrxrROnpO0XFYDFvsQ5;U$Hsv&oC7nnZbaPcN7wPn{`t8mA&Yw!ig7=Fd|`E#Z2t>`=7{iYnKWdD5=OL@wt<2)&yte`e~x3uFpI-#mYn=_-{f8 z_%w=(I~ul;Ic`Y#f-s_d1RBM)!XfzxCrXB`SYsJl0bAG$8YrV0UnNANurGT)L%6@3ias{ zuAqTji+3q=J7Kd*%F=Zzw&HXuzG7w3WaF!m7&kbK@FMzj;wWgKf-I_5zrZ?CLD?9} zUDhWAUohQi$ zY_d+{GYZd4L7e{0Z>B9nNqB~K3RDvkPf(OALhic2<-E$HGjdF9AlopisC@jcd1Mrx znJW~R={$wXPS@G#cqNvC4U{yCm`JabEl;B8*H$8KX5CtWY3zVWPKgba6rV5~Pfg=D zkyYv>rAYE-`jc9LHZLn1$X^CVagF4-Z*IuMHRR30pXLe_UE^_E(m+y>wDZ{2plrE+ zO6$^NAG=xJebF70`7~ zx#*ghW?j-iR0^+`DB>JuAD+<@v$2!Zc02wg%lor**EJD&lOJy&t4vv~Zu4pL3goZA r{|5j7|Npb)EZhJ900v1!K~w_(1|0bG;D9q000000NkvXXu0mjfyz2S{ literal 11579 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 X#b;2xG-dtUh6X6gs>;+!nTP)$cch!t diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index e60527677405aa8ccbc24f12a0ee0f61ab663346..97dc50b2767d5d13db34a34644368103066ab94d 100644 GIT binary patch literal 19290 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 N002ovPDHLkV1miMV`%^Y literal 17475 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 Yvgz+;-cA)2;He-Cp00i_>zopr06+}#`~Uy| diff --git a/android/settings.gradle.kts b/android/settings.gradle.kts index a439442..9e2d35c 100644 --- a/android/settings.gradle.kts +++ b/android/settings.gradle.kts @@ -19,6 +19,9 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" id("com.android.application") version "8.7.0" apply false + // START: FlutterFire Configuration + id("com.google.gms.google-services") version("4.3.15") apply false + // END: FlutterFire Configuration id("org.jetbrains.kotlin.android") version "1.8.22" apply false } diff --git a/assets/.env b/assets/.env index f248619..38a31d4 100644 --- a/assets/.env +++ b/assets/.env @@ -1,7 +1,8 @@ ; BASE_URL=https://peakapi.qantra.co.zw/api - BASE_URL=http://192.168.100.8:6950/api + BASE_URL=http://192.168.100.26:6950/api ; BASE_URL=http://192.168.1.164:6950/api ; BASE_URL=http://192.168.120.160:6950/api ; BASE_URL=http://10.10.2.92:6950/api ; BASE_URL=http://172.20.5.105:6950/api -; BASE_URL=http://10.10.3.92:6950/api \ No newline at end of file +; BASE_URL=http://10.10.3.92:6950/api +CLIENTID=77433712483-ng7pntvcpf6tnjccriuqm8dbna8vvp3b.apps.googleusercontent.com \ No newline at end of file diff --git a/assets/login.png b/assets/login.png new file mode 100644 index 0000000000000000000000000000000000000000..5ef9b88f14c1539a9cc01201fb38681dc12e5b40 GIT binary patch literal 25679 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 vDkX$OQ-tJT%@yiw4ZigtDsEl4 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

K4a0ST&ULr6K# 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 literal 0 HcmV?d00001 diff --git a/assets/phone.png b/assets/phone.png new file mode 100644 index 0000000000000000000000000000000000000000..edda097a51b8e8997f16ef24d36fff576071b352 GIT binary patch literal 36920 zcmcF}Wm6nX7wiIyEY9L?ixb@4U4sXAcXwD^f$9-rhex!agg%zkS^9Z`>bkc{@p5|6N;i*ScNjx0bz+?W%<3y?kK1(3y;vegYuf6;b2E211lFaNaJ*K z@%8EPXtHI~UTto&<8-mt&sA<>xVNgZVz=D#cz<)IyEs}?Ek43DQuni)tW;)_)q08k z{>p^EhVuQN$%Tb!Cu@nr2J6DS?6t3+K|U&*m3lh5x(f1&znXJfDw9sTY7e?1%kl%; zTN)dqO>Av#`@cme+vpc~Tis6drz9oTLRGO% z^LHiuk?WyeU_2~{a#svXvJeC^0AW!24+YA0jJ=#V&HYu$etX~A6|qLpf35RuwY$9V z3u=iikLC=XdM+T;oJWFE{Qn)ha7fS)*Qv$4sEBW8WE@-%2e;9pqyubZmu$oNqE5Sv zy3TUt-R}zULO1{3iPa_yzcBlNu^)_NK0UU=FcfgYZ|Mj1U-$~H5XVx!Yg&AW9)OC> zeqmlmW16wjA=PWZH?MDHQWUlp9i~F`I%-(!VT|9$Xeg8odF9i%fPcb&CAGL zNAdc?>QsqL(801;}#ufME!UVWb*UlYj}JITH*Tc}s|iG@I}oOVU`HxZ&Jl7(WBjD=e60d1s};^ef6nt%e;Z zzCyg7rB(w;0#6_n@mT4TR?9d$J<1>;w2x1yKcq2d)ly)1RBEK0^prrkE{3Hf!j;Fg za^cFuX@|fe8syaTNsA}b`!h^oq(aTnn}fg*(p{>pA{!bWB<88kJltApb)!`=*O$%m zycdW8i&oo~ONZ$~99h)o>Vss?sB#A%iB)Oct>BU90J%M zSTZK@dmfa{*`XCZHN|tqx}^Y~5*wDOu4urjcF~mh3aL6A*Wl#0eqq_c`_Qqiyx4xZ zBW$d$aXz_q)i}JlM7E1mM>xIaV6AO5URTH{6*W!oU{c*fVCXaHszB+sS@Z8+fxBpO zytYXH@)3{Eq=I%4sc|>87|_E+CM*1VVr`TE>I9EPK*)Ce@!M-6u{Y5?goYqDuE_I_ zY-Y#L;fw4i!GthJ_{5!*u2(<*30l#Sq2svsO~Tck7N#m+Jz*($W;*|)Kdr_Ig3CRn zI8P=&vBQc>&H%n{^kSff%Tfdj?}dU5}54^JuP`N2Z_d*bIi%8uL?Jk-_rewjrX zA_pSE=%pLg6!1}FBD$au6zX$VcO?w33%@Vo9Tj^S$MV)5I68V9azR0W`P3h#C#CG6 zV?vp0-nzAmXC@;OTAx%8lPa;b#D2)0sBKf+AT|h<)$oxr4)2d{AFW#^eG8-aigG*U zYsJKPsNU^hbPccQTzq}N`3zUk%RpNQ=F)_mo*%ve-_L=ibT}Q4ATyqBKhhUPent5k4>Tpo4;UMJwsgGhTt34IYX=x zd+N)Vd~rQs2CGeDqE3nf6(WQorJmw0ch@}F_q@zCi;@Gen)fH!th4PBt+o;nnM!q4 z)N_pz3B6MEeYxF(Lc_3N?BEW)czp_CCEL4+4k>!RgXslxg=objSWZf#QwcR41NAMQ z-Yig-B%Lkf2|5X@SwyDjMx*N#(Qwh}6@CEt#Ss}aX|&O&x>XeTB$aG-{K^seon|Cy z%Uuc0Veb&Dy=Syf$iI=Qg$+$EDvOJw-{LlEFp&3R{&uiE2mEeUKSFzjjsGtcQIg%RBS z1!L9b6$2+UK*I$llZcTU?yGANqd3wH%wgqPr8xEH{;{;)EIi4-QR_1o8ba%MwbjDZ z(*9c~b{v`s)Z2viE}X^#W?HBx{DH4qAH6?GFhn2TD4uZZw{Om>CWMMTd56nw`;B}r ztWC36bZol}XpG#cr$7z71YDb|8IvSh(eyBhVB&N!cb

y+;qvZcp>JI}Pru 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 Sl1U)AJ54n`)hf7c#Qy*w$#X&g literal 0 HcmV?d00001 diff --git a/assets/social.jpg b/assets/social.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0790c600c312a547844e16d397eddbc5c029b9e1 GIT binary patch literal 37621 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 g1+l`2z8pF literal 0 HcmV?d00001 diff --git a/assets/social.png b/assets/social.png new file mode 100644 index 0000000000000000000000000000000000000000..e5f56f776c5f882faeb99b6cf93a9398612b98ee GIT binary patch literal 35536 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

BC(Kdi&wGjq`_>`=rHF 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 TransactionController(), + MultiProvider( + providers: [ + ChangeNotifierProvider(create: (_) => TransactionController()), + ChangeNotifierProvider(create: (_) => OnboardingController()), + ], child: const MyApp(), ), ); @@ -124,6 +137,10 @@ class _MyAppState extends State { path: '/onboarding/register', builder: (context, state) => const RegisterScreen(), ), + GoRoute( + path: '/onboarding/phone', + builder: (context, state) => const PhoneScreen(), + ), GoRoute( path: '/onboarding/verify', builder: (context, state) => const VerifyScreen(), @@ -136,6 +153,10 @@ class _MyAppState extends State { path: '/onboarding/login', builder: (context, state) => const LoginScreen(), ), + GoRoute( + path: '/onboarding/complete', + builder: (context, state) => const CompleteScreen(), + ), ], ), ], diff --git a/lib/screens/home/home_controller.dart b/lib/screens/home/home_controller.dart index 6c22de4..4e92413 100644 --- a/lib/screens/home/home_controller.dart +++ b/lib/screens/home/home_controller.dart @@ -280,7 +280,7 @@ class HomeController extends ChangeNotifier { description: 'USD Wallet', image: 'united-states.png', currency: 'USD', - balance: '4.02', + balance: '47655.02', ), Account( name: 'Vusumuzi Khoza', diff --git a/lib/screens/home/home_screen.dart b/lib/screens/home/home_screen.dart index ad52d6f..710d850 100644 --- a/lib/screens/home/home_screen.dart +++ b/lib/screens/home/home_screen.dart @@ -21,13 +21,12 @@ class _HomeScreenState extends State late AnimationController _controller; late Animation _alignAnimation; late TransactionController transactionController; - late bool _loading = true; late SharedPreferences prefs; late HomeController homeController; late final router = GoRouter.of(context); + late String initials; - Timer? _loadingTimer; - bool get _isLoggedIn => false; + bool _isLoggedIn = false; String _selectedFilter = 'All'; final List> _animations = []; @@ -36,15 +35,6 @@ class _HomeScreenState extends State @override void initState() { super.initState(); - router.routerDelegate.addListener(_onRouteChanged); - - transactionController = Provider.of( - context, - listen: false, - ); - - // Reset the transaction controller model - transactionController.model = TransactionModel(); _controller = AnimationController( duration: const Duration(milliseconds: 600), @@ -69,18 +59,19 @@ class _HomeScreenState extends State ).animate(CurvedAnimation(parent: _controller, curve: Curves.easeOut)); setupDataAndTransitions(); - - // Simulate a delay to mimic loading state - _loadingTimer = Timer(const Duration(seconds: 1), () { - if (mounted) { - setState(() { - _loading = false; - }); - } - }); } Future setupDataAndTransitions() async { + router.routerDelegate.addListener(_onRouteChanged); + + transactionController = Provider.of( + context, + listen: false, + ); + + // Reset the transaction controller model + transactionController.model = TransactionModel(); + homeController = HomeController(context); await homeController.getAccounts(); await homeController.getCategories(); @@ -103,8 +94,11 @@ class _HomeScreenState extends State prefs = await SharedPreferences.getInstance(); - if (prefs.getString("userId") == null) { - prefs.setString("userId", Uuid().v4()); + if (prefs.getString("token") != null) { + setState(() { + _isLoggedIn = true; + initials = prefs.getString("initials")!; + }); } await homeController.getTransactions(prefs.getString("userId")!); @@ -126,16 +120,21 @@ class _HomeScreenState extends State ); } - void _onRouteChanged() { + void _onRouteChanged() async { final location = router.routerDelegate.currentConfiguration.uri.toString(); if (location.startsWith('/home')) { - setupDataAndTransitions(); + prefs = await SharedPreferences.getInstance(); + + if (prefs.getString("userId") == null) { + prefs.setString("userId", Uuid().v4()); + } + + await homeController.getTransactions(prefs.getString("userId")!); } } @override void dispose() { - _loadingTimer?.cancel(); _controller.dispose(); homeController.dispose(); router.routerDelegate.removeListener(_onRouteChanged); @@ -159,45 +158,83 @@ class _HomeScreenState extends State surfaceTintColor: Colors.transparent, floating: true, title: Image(image: AssetImage('assets/peak.png'), width: 85), - leading: IconButton( - icon: Container( - width: 32, - height: 32, - decoration: BoxDecoration( - border: Border.all(color: Colors.black87.withAlpha(20)), - shape: BoxShape.circle, - gradient: LinearGradient( - colors: [ - Theme.of( - context, - ).colorScheme.primary.withValues(alpha: 0.1), - Theme.of( - context, - ).colorScheme.tertiary.withValues(alpha: 0.05), - ], - stops: const [0.3, 0.7], - begin: Alignment.topRight, - end: Alignment.bottomLeft, + leading: _isLoggedIn ? Container( + padding: const EdgeInsets.only(left: 10.0), + child: IconButton( + icon: Container( + width: 52, + height: 52, + decoration: BoxDecoration( + border: Border.all(color: Colors.black87.withAlpha(20)), + shape: BoxShape.circle, + gradient: LinearGradient( + colors: [ + Theme.of( + context, + ).colorScheme.primary.withValues(alpha: 0.1), + Theme.of( + context, + ).colorScheme.tertiary.withValues(alpha: 0.05), + ], + stops: const [0.3, 0.7], + begin: Alignment.topRight, + end: Alignment.bottomLeft, + ), ), - ), - child: Center( - child: Text( - 'VK', - style: TextStyle( - fontSize: 12, - fontWeight: FontWeight.bold, + child: Center( + child: Text( + initials, + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.bold, + ), ), ), ), + onPressed: () {}, ), - onPressed: () {}, - ), - // actions: [ - // IconButton( - // icon: const Icon(Icons.notifications_outlined), - // onPressed: () {}, - // ), - // ], + ) : SizedBox(), + actions: [ + if(_isLoggedIn) + IconButton( + icon: const Icon(Icons.exit_to_app_sharp), + onPressed: () { + showDialog( + context: context, + builder: (BuildContext dialogContext) { + return AlertDialog( + title: const Text('Confirm Logout'), + content: const Text('Are you sure you want to log out?'), + actions: [ + TextButton( + child: const Text('Cancel'), + onPressed: () { + Navigator.of(dialogContext).pop(); // Dismiss the dialog + }, + ), + TextButton( + child: const Text('Logout'), + onPressed: () { + Navigator.of(dialogContext).pop(); // Dismiss the dialog + prefs.remove("token"); + setState(() { + _isLoggedIn = false; + }); + // It's generally not recommended to call initState directly. + // Consider moving the logic from initState that needs to be rerun + // into a separate method and call that method here. + // For example, if you have a method like _reloadData(), call it here. + // _reloadData(); + setupDataAndTransitions(); // Or specific parts of it if not all is needed + }, + ), + ], + ); + }, + ); + }, + ), + ], ), SliverToBoxAdapter( child: Padding( @@ -209,7 +246,7 @@ class _HomeScreenState extends State crossAxisAlignment: CrossAxisAlignment.start, children: [ if (!_isLoggedIn) _buildLogin(homeController), - if (_isLoggedIn) _buildAccounts(homeController), + // if (_isLoggedIn) _buildAccounts(homeController), _buildFilterChips(homeController), SizedBox(height: 10), Column( @@ -361,7 +398,7 @@ class _HomeScreenState extends State // context.push("/wallet"); }, child: Container( - width: 150, + width: 170, padding: const EdgeInsets.symmetric( horizontal: 12, vertical: 12, @@ -388,11 +425,11 @@ class _HomeScreenState extends State child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Image.asset('assets/${e.image}', width: 20), - SizedBox(height: 5), Row( mainAxisAlignment: MainAxisAlignment.start, children: [ + Image.asset('assets/${e.image}', width: 20), + SizedBox(width: 10), Text( e.currency, style: TextStyle( @@ -402,12 +439,15 @@ class _HomeScreenState extends State ), ), SizedBox(width: 5), - Text( - e.balance, - style: TextStyle( - fontWeight: FontWeight.bold, - fontSize: 22, - color: Colors.black, + Expanded( + child: Text( + e.balance, + style: TextStyle( + fontWeight: FontWeight.bold, + fontSize: 22, + color: Colors.black, + overflow: TextOverflow.ellipsis, + ), ), ), ], diff --git a/lib/screens/onboarding/complete_screen.dart b/lib/screens/onboarding/complete_screen.dart new file mode 100644 index 0000000..2fe67c4 --- /dev/null +++ b/lib/screens/onboarding/complete_screen.dart @@ -0,0 +1,73 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:qpay/screens/onboarding/login/login_controller.dart'; + +class CompleteScreen extends StatefulWidget { + const CompleteScreen({super.key}); + + @override + State createState() => _CompleteScreenState(); +} + +class _CompleteScreenState extends State { + @override + Widget build(BuildContext context) { + return Scaffold( + body: SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.all(25), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + SizedBox(height: 75), + Text( + 'Registration Complete', + style: TextStyle( + fontSize: 30, + fontWeight: FontWeight.bold, + color: Theme.of(context).colorScheme.primary, + ), + ), + SizedBox(height: 5), + Text( + 'Thank you for registering with Peak payments', + style: TextStyle(fontSize: 18), + textAlign: TextAlign.center, + ), + Image.asset('assets/landing.png', width: 300), + Text( + 'Tap Login to get started', + style: TextStyle(fontSize: 18), + ), + SizedBox(height: 10), + ], + ), + ), + ), + bottomNavigationBar: SizedBox( + height: 130, + child: Column( + children: [ + Padding( + padding: const EdgeInsets.symmetric(horizontal: 25), + child: Row( + children: [ + Expanded( + child: ElevatedButton( + onPressed: () { + context.go('/onboarding/login'); + }, + child: Text('Go to Login', style: TextStyle(fontSize: 16)), + ), + ), + ], + ), + ), + SizedBox(height: 5), + ], + ), + ), + ); + } +} diff --git a/lib/screens/onboarding/login/login_controller.dart b/lib/screens/onboarding/login/login_controller.dart index 823fbaf..1b649fa 100644 --- a/lib/screens/onboarding/login/login_controller.dart +++ b/lib/screens/onboarding/login/login_controller.dart @@ -54,6 +54,8 @@ class LoginController extends ChangeNotifier { prefs.setString('firstName', response['firstName']); prefs.setString('lastName', response['lastName']); prefs.setString('phone', response['phone']); + prefs.setString('userId', response['uuid']); + prefs.setString('initials', response['firstName'].substring(0, 1) + response['lastName'].substring(0, 1)); return model; } else { @@ -64,7 +66,7 @@ class LoginController extends ChangeNotifier { } } on DioException catch (e, s) { logger.e(s); - _showErrorSnackBar("Network error. Please try again or contact support"); + _showErrorSnackBar(e.response?.data['errors'][0] ?? "Unknown error"); } catch (e, s) { logger.e(s); _showErrorSnackBar( diff --git a/lib/screens/onboarding/login/login_screen.dart b/lib/screens/onboarding/login/login_screen.dart index 97c4a41..ff87c5f 100644 --- a/lib/screens/onboarding/login/login_screen.dart +++ b/lib/screens/onboarding/login/login_screen.dart @@ -1,6 +1,12 @@ +import 'dart:async'; +import 'dart:convert'; + import 'package:flutter/material.dart'; +import 'package:flutter_dotenv/flutter_dotenv.dart'; import 'package:go_router/go_router.dart'; +import 'package:google_sign_in/google_sign_in.dart'; import 'package:qpay/screens/onboarding/login/login_controller.dart'; +import 'package:shared_preferences/shared_preferences.dart'; class LoginScreen extends StatefulWidget { const LoginScreen({super.key}); @@ -10,9 +16,13 @@ class LoginScreen extends StatefulWidget { } class _LoginScreenState extends State { + late SharedPreferences prefs; final _formKey = GlobalKey(); - final _usernameController = TextEditingController(); - final _passwordController = TextEditingController(); + bool _loading = false; + + List scopes = [ + 'https://www.googleapis.com/auth/contacts.readonly', + ]; late LoginController _loginController; @@ -22,6 +32,65 @@ class _LoginScreenState extends State { _loginController = LoginController(context); } + Future signInWithGoogle() async { + final GoogleSignIn googleSignIn = GoogleSignIn.instance; + + unawaited(googleSignIn.initialize(serverClientId: dotenv.env['CLIENTID'])); + + if (GoogleSignIn.instance.supportsAuthenticate()){ + + unawaited(GoogleSignIn.instance.authenticate().then((value) async { + print(value); + + saveUser(value); + await _loginController.login(value.email, value.id); + context.go('/'); + + googleSignIn.authenticationEvents + .listen(_handleAuthenticationEvent) + .onError(_handleAuthenticationError); + + })); + } + } + + void saveUser(GoogleSignInAccount user) async { + final Map data = { + 'displayName': user.displayName, + 'email': user.email, + 'id': user.id, + 'photoUrl': user.photoUrl, + }; + + prefs = await SharedPreferences.getInstance(); + if (prefs.getString("googleUser") == null) { + prefs.setString("googleUser", jsonEncode(data)); + } + } + + Future _handleAuthenticationEvent( + GoogleSignInAuthenticationEvent event, + ) async { + // #docregion CheckAuthorization + final GoogleSignInAccount? user = // ... + // #enddocregion CheckAuthorization + switch (event) { + GoogleSignInAuthenticationEventSignIn() => event.user, + GoogleSignInAuthenticationEventSignOut() => null, + }; + + // Check for existing authorization. + // #docregion CheckAuthorization + final GoogleSignInClientAuthorization? authorization = await user + ?.authorizationClient + .authorizationForScopes(scopes); + // #enddocregion CheckAuthorization + } + + Future _handleAuthenticationError(Object e) async { + print(e.toString()); + } + @override void dispose() { _loginController.dispose(); @@ -56,55 +125,15 @@ class _LoginScreenState extends State { textAlign: TextAlign.center, ), SizedBox(height: 40), + Image.asset('assets/password.png', width: 300), + Text( + 'Tap on your preferred social media platform to get started', + style: TextStyle(fontSize: 18), + textAlign: TextAlign.center, + ), // Username Field - TextFormField( - controller: _usernameController, - decoration: InputDecoration( - labelText: 'Phone Number', - prefixIcon: Icon(Icons.person_outline), - ), - validator: (value) { - if (value == null || value.isEmpty) { - return 'Please enter a phone number'; - } - return null; - }, - ), - SizedBox(height: 20), - // Password Field - TextFormField( - controller: _passwordController, - decoration: InputDecoration( - labelText: 'Password', - prefixIcon: Icon(Icons.lock_outline), - suffixIcon: Icon(Icons.visibility_outlined), - ), - obscureText: true, - validator: (value) { - if (value == null || value.isEmpty) { - return 'Please enter a password'; - } - return null; - }, - ), SizedBox(height: 20), // Forgot Password Link - Align( - alignment: Alignment.centerRight, - child: TextButton( - onPressed: () { - // TODO: Add forgot password logic - }, - child: Text( - 'Forgot Password?', - style: TextStyle( - color: Theme.of(context).colorScheme.primary, - fontSize: 14, - ), - ), - ), - ), - SizedBox(height: 40), // Divider with "or" text Row( children: [ @@ -112,11 +141,12 @@ class _LoginScreenState extends State { Padding( padding: EdgeInsets.symmetric(horizontal: 16), child: Text( - 'or continue with', + 'choose from the options below to continue', style: TextStyle( color: Colors.grey.shade600, fontSize: 14, ), + textAlign: TextAlign.center, ), ), Expanded(child: Divider(color: Colors.grey.shade300)), @@ -128,8 +158,9 @@ class _LoginScreenState extends State { children: [ Expanded( child: OutlinedButton.icon( - onPressed: () { - // TODO: Add Google login logic + onPressed: () async { + await signInWithGoogle(); + }, icon: Image.asset( 'assets/google.png', @@ -146,27 +177,6 @@ class _LoginScreenState extends State { ), ), ), - SizedBox(width: 16), - Expanded( - child: OutlinedButton.icon( - onPressed: () { - // TODO: Add Apple login logic - }, - icon: Image.asset( - 'assets/apple.png', - width: 20, - height: 20, - ), - label: Text('Apple', style: TextStyle(fontSize: 16)), - style: OutlinedButton.styleFrom( - padding: EdgeInsets.symmetric(vertical: 16), - side: BorderSide(color: Colors.grey.shade300), - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(12), - ), - ), - ), - ), ], ), SizedBox(height: 40), @@ -179,43 +189,6 @@ class _LoginScreenState extends State { height: 130, child: Column( children: [ - Padding( - padding: const EdgeInsets.symmetric(horizontal: 25), - child: Row( - children: [ - Expanded( - child: ElevatedButton( - onPressed: () async { - // TODO: Add login logic - if (_formKey.currentState!.validate()) { - LoginScreenModel model = await _loginController.login( - _usernameController.text, - _passwordController.text, - ); - - if (model.status == 'SUCCESS') { - context.go('/'); - } - } - }, - child: Text('Login', style: TextStyle(fontSize: 16)), - ), - ), - SizedBox(width: 16), - Expanded( - child: TextButton( - onPressed: () { - context.go('/onboarding/register'); - }, - child: Text( - 'Create Account', - style: TextStyle(fontSize: 16), - ), - ), - ), - ], - ), - ), SizedBox(height: 5), TextButton( onPressed: () { diff --git a/lib/screens/onboarding/onboarding_controller.dart b/lib/screens/onboarding/onboarding_controller.dart new file mode 100644 index 0000000..e3864f9 --- /dev/null +++ b/lib/screens/onboarding/onboarding_controller.dart @@ -0,0 +1,37 @@ +import 'package:flutter/material.dart'; +import 'package:google_sign_in/google_sign_in.dart'; +import 'package:qpay/http/http.dart'; + +class OnboardingModel { + String? phone; + String? workflowId; + String? username; + GoogleSignInAccount? googleUser; + bool isLoading = false; +} + +class OnboardingController extends ChangeNotifier { + OnboardingModel model = OnboardingModel(); + + void resetState() { + model = OnboardingModel(); + } + + void updateModel(Map mapModel) { + model.workflowId = mapModel['workflowId']; + model.phone = mapModel['phone']; + model.username = mapModel['username']; + notifyListeners(); + } + + updatePhone(String phone) { + model.phone = phone; + notifyListeners(); + } + + updateGoogleUser(GoogleSignInAccount googleUser) { + model.googleUser = googleUser; + notifyListeners(); + } + +} \ No newline at end of file diff --git a/lib/screens/onboarding/phone/phone_controller.dart b/lib/screens/onboarding/phone/phone_controller.dart new file mode 100644 index 0000000..3efb701 --- /dev/null +++ b/lib/screens/onboarding/phone/phone_controller.dart @@ -0,0 +1,73 @@ + +import 'package:dio/dio.dart'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:qpay/abstracts/AbstractController.dart'; +import 'package:qpay/http/http.dart'; + +import '../onboarding_controller.dart'; + +class PhoneModel { + bool isLoading = false; + String? errorMessage; + String? status = 'failed'; +} + +class PhoneController extends AbstractController { + PhoneModel model = PhoneModel(); + @override + BuildContext context; + + late OnboardingController onboardingController; + final Http http = Http(); + + PhoneController(this.context) { + onboardingController = Provider.of( + context, + listen: false, + ); + } + + void updatePhone(String phone) { + onboardingController.updatePhone(phone); + notifyListeners(); + } + + Future register() async { + Map user = { + "username": onboardingController.model.googleUser?.email, + "email": onboardingController.model.googleUser?.email, + "firstName": onboardingController.model.googleUser?.displayName?.split(" ").first, + "lastName": onboardingController.model.googleUser?.displayName?.split(" ").last, + "password": onboardingController.model.googleUser?.id, + "photoUrl": onboardingController.model.googleUser?.photoUrl, + "phone": onboardingController.model.phone + }; + + try { + model.isLoading = true; + + Map response = await http.post( + '/auth/register', + user + ); + model.status = response['state']; + if(response['state'] == 'failed') { + model.errorMessage = response['message']; + showErrorSnackBar(model.errorMessage); + } + Map body = response['body']; + body['workflowId'] = response['workflowId']; + onboardingController.updateModel(body); + } catch (e) { + logger.e(e); + showErrorSnackBar( + "Problem during registration, please try again or contact support?", + ); + } + + model.isLoading = false; + notifyListeners(); + } + +} \ No newline at end of file diff --git a/lib/screens/onboarding/phone/phone_screen.dart b/lib/screens/onboarding/phone/phone_screen.dart new file mode 100644 index 0000000..1835815 --- /dev/null +++ b/lib/screens/onboarding/phone/phone_screen.dart @@ -0,0 +1,270 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_contacts/flutter_contacts.dart'; +import 'package:go_router/go_router.dart'; +import 'package:qpay/screens/onboarding/phone/phone_controller.dart'; +import 'package:skeletonizer/skeletonizer.dart'; + +class PhoneScreen extends StatefulWidget { + const PhoneScreen({super.key}); + + @override + State createState() => _PhoneScreenState(); +} + +class _PhoneScreenState extends State { + late PhoneController phoneController; + final _formKey = GlobalKey(); + final TextEditingController _phoneController = TextEditingController(); + + String selectedCountryCode = '+263'; // Default to ZW + + // Common country codes with flags and names + final List> countryCodes = [ + {'code': '+263', 'name': 'ZW', 'flag': '🇿🇼'}, + {'code': '+27', 'name': 'ZA', 'flag': '🇿🇦'}, + {'code': '+1', 'name': 'US', 'flag': '🇺🇸'}, + {'code': '+44', 'name': 'UK', 'flag': '🇬🇧'}, + {'code': '+61', 'name': 'AU', 'flag': '🇦🇺'}, + {'code': '+91', 'name': 'IN', 'flag': '🇮🇳'}, + {'code': '+86', 'name': 'CN', 'flag': '🇨🇳'}, + {'code': '+81', 'name': 'JP', 'flag': '🇯🇵'}, + {'code': '+49', 'name': 'DE', 'flag': '🇩🇪'}, + {'code': '+33', 'name': 'FR', 'flag': '🇫🇷'}, + {'code': '+39', 'name': 'IT', 'flag': '🇮🇹'}, + {'code': '+34', 'name': 'ES', 'flag': '🇪🇸'}, + {'code': '+7', 'name': 'RU', 'flag': '🇷🇺'}, + {'code': '+55', 'name': 'BR', 'flag': '🇧🇷'}, + {'code': '+52', 'name': 'MX', 'flag': '🇲🇽'}, + {'code': '+971', 'name': 'AE', 'flag': '🇦🇪'}, + {'code': '+966', 'name': 'SA', 'flag': '🇸🇦'}, + {'code': '+234', 'name': 'NG', 'flag': '🇳🇬'}, + {'code': '+254', 'name': 'KE', 'flag': '🇰🇪'}, + {'code': '+233', 'name': 'GH', 'flag': '🇬🇭'}, + {'code': '+256', 'name': 'UG', 'flag': '🇺🇬'}, + ]; + + @override + void initState() { + super.initState(); + phoneController = PhoneController(context); + } + + Future updatePhoneNumber(String phoneNumber) async { + String existingPhone = phoneNumber; + if (existingPhone.isNotEmpty) { + // Try to extract country code from existing phone number + for (var country in countryCodes) { + if (existingPhone.startsWith(country['code']!)) { + setState(() { + selectedCountryCode = country['code']!; + }); + _phoneController.text = existingPhone.substring( + country['code']!.length, + ); + break; + } + } + // If no country code found, use default and set the full number + if (_phoneController.text.isEmpty) { + _phoneController.text = existingPhone; + } + } + } + + @override + Widget build(BuildContext context) { + return ListenableBuilder( + listenable: phoneController, + builder: (context, child) { + return Scaffold( + body: SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.all(25.0), + child: Form( + key: _formKey, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + SizedBox(height: 75), + Text( + 'Verify Your Device', + style: TextStyle( + fontSize: 30, + fontWeight: FontWeight.bold, + color: Theme + .of(context) + .colorScheme + .primary, + ), + textAlign: TextAlign.center, + ), + SizedBox(height: 10), + Text( + 'We will send you a verification code to this number', + style: TextStyle(fontSize: 18), + textAlign: TextAlign.center, + ), + Image.asset('assets/phone.png', width: 300), + SizedBox(height: 20), + _buildPhoneField(), + SizedBox(height: 30), + ], + ), + ), + ), + ), + bottomNavigationBar: SizedBox( + height: 130, + child: Column( + children: [ + Padding( + padding: const EdgeInsets.symmetric(horizontal: 25), + child: Skeletonizer( + enabled: phoneController.model.isLoading, + child: Row( + children: [ + Expanded( + child: ElevatedButton( + onPressed: () async { + if (_formKey.currentState!.validate()) { + String fullPhoneNumber = + selectedCountryCode + _phoneController.text; + + phoneController.updatePhone(fullPhoneNumber); + await phoneController.register(); + if(phoneController.model.status != 'failed') { + context.go('/onboarding/verify'); + } + } + }, + child: Text('Send Code', style: TextStyle(fontSize: 16)), + ), + ), + SizedBox(width: 16), + Expanded( + child: TextButton( + onPressed: () { + context.go('/onboarding/login'); + }, + child: Text( + 'Go to Login', + style: TextStyle(fontSize: 16), + ), + ), + ), + ], + ), + ), + ), + SizedBox(height: 5), + TextButton( + onPressed: () { + context.go('/'); + }, + child: Text('Continue as guest?', style: TextStyle(fontSize: 14)), + ), + ], + ), + ), + ); + } + ); + } + + Widget _buildPhoneField() { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + // Country code dropdown + Container( + width: 100, + height: 55, + decoration: BoxDecoration( + border: Border.all( + color: Theme.of(context).colorScheme.primary.withOpacity(0.2), + ), + borderRadius: BorderRadius.circular(12), + ), + child: DropdownButtonHideUnderline( + child: DropdownButton( + value: selectedCountryCode, + isExpanded: true, + icon: const Icon(Icons.arrow_drop_down), + padding: const EdgeInsets.symmetric(horizontal: 8), + items: + countryCodes.map((country) { + return DropdownMenuItem( + value: country['code'], + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Text(country['flag']!), + const SizedBox(width: 4), + Text( + country['code']!, + style: const TextStyle(fontSize: 16), + ), + ], + ), + ); + }).toList(), + onChanged: (String? newValue) { + if (newValue != null) { + setState(() { + selectedCountryCode = newValue; + }); + } + }, + ), + ), + ), + const SizedBox(width: 8), + // Phone number field + Expanded( + child: TextFormField( + controller: _phoneController, + keyboardType: TextInputType.numberWithOptions(decimal: true), + decoration: InputDecoration( + hintText: 'Enter phone number', + focusedErrorBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(12), + borderSide: BorderSide( + color: Theme.of(context).colorScheme.secondary, + ), + ), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(12), + borderSide: BorderSide( + color: Theme.of( + context, + ).colorScheme.primary.withOpacity(0.2), + ), + ), + ), + validator: (value) { + if (value == null || value.isEmpty) { + return 'Please enter a phone number'; + } + // Remove any non-digit characters for validation + String digitsOnly = value.replaceAll(RegExp(r'[^\d]'), ''); + if (digitsOnly.length < 7) { + return 'Phone number must be at least 7 digits'; + } + if (digitsOnly.length > 15) { + return 'Phone number is too long'; + } + return null; + }, + ), + ), + ], + ), + ], + ); + } + +} diff --git a/lib/screens/onboarding/register/register_screen.dart b/lib/screens/onboarding/register/register_screen.dart index f85bd67..b9e5b2b 100644 --- a/lib/screens/onboarding/register/register_screen.dart +++ b/lib/screens/onboarding/register/register_screen.dart @@ -1,5 +1,12 @@ +import 'dart:async'; + import 'package:flutter/material.dart'; +import 'package:flutter_dotenv/flutter_dotenv.dart'; import 'package:go_router/go_router.dart'; +import 'package:google_sign_in/google_sign_in.dart'; +import 'package:provider/provider.dart'; +import 'package:qpay/screens/onboarding/onboarding_controller.dart'; +import 'package:skeletonizer/skeletonizer.dart'; class RegisterScreen extends StatefulWidget { const RegisterScreen({super.key}); @@ -9,186 +16,237 @@ class RegisterScreen extends StatefulWidget { } class _RegisterScreenState extends State { + late OnboardingController onboardingController; + + bool _loading = false; + + List scopes = [ + 'https://www.googleapis.com/auth/contacts.readonly', + ]; + + @override + void initState() { + super.initState(); + onboardingController = Provider.of( + context, + listen: false, + ); + // onboardingController.resetState(); + } + + void signInWithGoogle() { + final GoogleSignIn googleSignIn = GoogleSignIn.instance; + + unawaited(googleSignIn.initialize(serverClientId: dotenv.env['CLIENTID'])); + + if (GoogleSignIn.instance.supportsAuthenticate()){ + unawaited(GoogleSignIn.instance.authenticate().then((value) { + print(value); + onboardingController.updateGoogleUser(value); + googleSignIn.authenticationEvents + .listen(_handleAuthenticationEvent) + .onError(_handleAuthenticationError); + + })); + } + } + + Future _handleAuthenticationEvent( + GoogleSignInAuthenticationEvent event, + ) async { + // #docregion CheckAuthorization + final GoogleSignInAccount? user = // ... + // #enddocregion CheckAuthorization + switch (event) { + GoogleSignInAuthenticationEventSignIn() => event.user, + GoogleSignInAuthenticationEventSignOut() => null, + }; + + // Check for existing authorization. + // #docregion CheckAuthorization + final GoogleSignInClientAuthorization? authorization = await user + ?.authorizationClient + .authorizationForScopes(scopes); + // #enddocregion CheckAuthorization + } + + Future _handleAuthenticationError(Object e) async { + print(e.toString()); + } + @override Widget build(BuildContext context) { - return Scaffold( - body: SingleChildScrollView( - child: Padding( - padding: const EdgeInsets.all(25), - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - SizedBox(height: 75), - Text( - 'Registration', - style: TextStyle( - fontSize: 30, - fontWeight: FontWeight.bold, - color: Theme.of(context).colorScheme.primary, - ), - ), - SizedBox(height: 5), - Text( - 'Join Peak and start making fast payments', - style: TextStyle(fontSize: 18), - textAlign: TextAlign.center, - ), - SizedBox(height: 40), - // First Name Field - TextField( - decoration: InputDecoration( - labelText: 'First Name', - prefixIcon: Icon(Icons.person_outline), - ), - ), - SizedBox(height: 20), - // Last Name Field - TextField( - decoration: InputDecoration( - labelText: 'Last Name', - prefixIcon: Icon(Icons.person_outline), - ), - ), - SizedBox(height: 20), - // Phone Field - TextField( - decoration: InputDecoration( - labelText: 'Phone Number', - prefixIcon: Icon(Icons.phone_outlined), - ), - keyboardType: TextInputType.phone, - ), - SizedBox(height: 20), - // Email Field - TextField( - decoration: InputDecoration( - labelText: 'Email Address', - prefixIcon: Icon(Icons.email_outlined), - ), - keyboardType: TextInputType.emailAddress, - ), - SizedBox(height: 20), - // Password Field - TextField( - decoration: InputDecoration( - labelText: 'Password', - prefixIcon: Icon(Icons.lock_outline), - suffixIcon: Icon(Icons.visibility_outlined), - ), - obscureText: true, - ), - SizedBox(height: 40), - // Divider with "or" text - Row( + return ListenableBuilder( + listenable: onboardingController, + builder: (context, child) { + return Scaffold( + body: SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.all(25), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, children: [ - Expanded(child: Divider(color: Colors.grey.shade300)), - Padding( - padding: EdgeInsets.symmetric(horizontal: 16), - child: Text( - 'or continue with', - style: TextStyle( - color: Colors.grey.shade600, - fontSize: 14, - ), + SizedBox(height: 75), + Text( + 'Registration', + style: TextStyle( + fontSize: 30, + fontWeight: FontWeight.bold, + color: Theme.of(context).colorScheme.primary, ), ), - Expanded(child: Divider(color: Colors.grey.shade300)), - ], - ), - SizedBox(height: 30), - // Social Login Buttons - Row( - children: [ - Expanded( - child: OutlinedButton.icon( - onPressed: () { - // TODO: Add Google login logic - }, - icon: Image.asset( - 'assets/google.png', - width: 20, - height: 20, + SizedBox(height: 5), + Text( + "Let's start by getting some of your details online to get you started", + style: TextStyle(fontSize: 18), + textAlign: TextAlign.center, + ), + Image.asset('assets/social.png', width: 300), + SizedBox(height: 20), + + // Social Login Buttons + if(onboardingController.model.googleUser == null) + Column( + children: [ + Row( + children: [ + Expanded(child: Divider(color: Colors.grey.shade300)), + Padding( + padding: EdgeInsets.symmetric(horizontal: 16), + child: Text( + 'Choose from the options below to continue', + style: TextStyle( + color: Colors.grey.shade600, + fontSize: 14, + ), + textAlign: TextAlign.center, + ), + ), + Expanded(child: Divider(color: Colors.grey.shade300)), + ], ), - label: Text('Google', style: TextStyle(fontSize: 16)), - style: OutlinedButton.styleFrom( - padding: EdgeInsets.symmetric(vertical: 16), - side: BorderSide(color: Colors.grey.shade300), - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(12), + SizedBox(height: 20), + Skeletonizer( + enabled: _loading, + child: Row( + children: [ + Expanded( + child: OutlinedButton.icon( + onPressed: () { + signInWithGoogle(); + }, + icon: Image.asset( + 'assets/google.png', + width: 20, + height: 20, + ), + label: Text('Google', style: TextStyle(fontSize: 16)), + style: OutlinedButton.styleFrom( + padding: EdgeInsets.symmetric(vertical: 16), + side: BorderSide(color: Colors.grey.shade300), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12), + ), + ), + ), + ), + SizedBox(width: 16), + ], ), ), - ), + ], ), - SizedBox(width: 16), - Expanded( - child: OutlinedButton.icon( - onPressed: () { - // TODO: Add Apple login logic - }, - icon: Image.asset( - 'assets/apple.png', - width: 20, - height: 20, - ), - label: Text('Apple', style: TextStyle(fontSize: 16)), - style: OutlinedButton.styleFrom( - padding: EdgeInsets.symmetric(vertical: 16), - side: BorderSide(color: Colors.grey.shade300), - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(12), + if(onboardingController.model.googleUser != null) + Column( + children: [ + SizedBox( + width: 100, + child: Divider( + color: Colors.grey.shade300, + thickness: 1, + ), ), - ), + SizedBox(height: 20,), + Text( + "Welcome, ${onboardingController.model.googleUser?.displayName}", + style: TextStyle(fontSize: 25), + textAlign: TextAlign.center, + ), + SizedBox(height: 10,), + Text("Tap Proceed to continue", style: TextStyle(fontSize: 18),) + ], ), - ), + SizedBox(height: 40), + ], ), - SizedBox(height: 40), - ], + ), ), - ), - ), - bottomNavigationBar: SizedBox( - height: 130, - child: Column( - children: [ - Padding( - padding: const EdgeInsets.symmetric(horizontal: 25), - child: Row( - children: [ - Expanded( - child: ElevatedButton( - onPressed: () { - context.go('/onboarding/verify'); - }, - child: Text('Submit', style: TextStyle(fontSize: 16)), - ), - ), - SizedBox(width: 16), - Expanded( - child: TextButton( - onPressed: () { - context.go('/onboarding/login'); - }, - child: Text( - 'Go to Login', - style: TextStyle(fontSize: 16), + bottomNavigationBar: SizedBox( + height: 130, + child: Column( + children: [ + Padding( + padding: const EdgeInsets.symmetric(horizontal: 25), + child: Row( + children: [ + Expanded( + child: ElevatedButton( + onPressed: () { + if (onboardingController.model.googleUser == null) { + showDialog( + context: context, + builder: (BuildContext dialogContext) { + return AlertDialog( + title: const Text('Sign-In Required'), + content: const Text( + "Please sign in with one of the social media platforms to proceed."), + actions: [ + TextButton( + child: const Text('OK'), + onPressed: () { + Navigator.of(dialogContext).pop(); // Close the dialog + }, + ), + ], + ); + }, + ); + } else { + context.go('/onboarding/phone'); + } + }, + child: Text('Proceed', style: TextStyle(fontSize: 16)), + ), ), - ), + SizedBox(width: 16), + Expanded( + child: TextButton( + onPressed: () { + context.go('/onboarding/login'); + }, + child: Text( + 'Go to Login', + style: TextStyle(fontSize: 16), + ), + ), + ), + ], ), - ], - ), + ), + SizedBox(height: 5), + TextButton( + onPressed: () { + context.go('/'); + }, + child: Text('Continue as guest?', style: TextStyle(fontSize: 14)), + ), + ], ), - SizedBox(height: 5), - TextButton( - onPressed: () { - context.go('/'); - }, - child: Text('Continue as guest?', style: TextStyle(fontSize: 14)), - ), - ], - ), - ), + ), + ); + } ); } } diff --git a/lib/screens/onboarding/verify/verify_controller.dart b/lib/screens/onboarding/verify/verify_controller.dart new file mode 100644 index 0000000..0d5e141 --- /dev/null +++ b/lib/screens/onboarding/verify/verify_controller.dart @@ -0,0 +1,95 @@ +import 'package:flutter/cupertino.dart'; +import 'package:provider/provider.dart'; +import 'package:qpay/abstracts/AbstractController.dart'; +import 'package:qpay/http/http.dart'; +import 'package:qpay/screens/onboarding/onboarding_controller.dart'; + +class VerifyModel { + String? code; + bool isLoading = false; + String? errorMessage; + String? status = 'failed'; +} + +class VerifyController extends AbstractController { + late OnboardingController onboardingController; + final Http http = Http(); + BuildContext context; + + VerifyModel model = VerifyModel(); + + VerifyController(this.context){ + onboardingController = Provider.of( + context, + listen: false, + ); + } + + void updateCode(String code) { + model.code = code; + notifyListeners(); + } + + Future verifyOtp () async { + Map user = { + "username": onboardingController.model.phone, + "otpCode": model.code, + "otpType": "REGISTRATION", + "workflowId": onboardingController.model.workflowId, + }; + + try { + model.isLoading = true; + notifyListeners(); + + Map response = await http.post( + '/auth/verify', + user + ); + model.status = response['state']; + if(response['state'] == 'failed') { + model.errorMessage = response['message']; + showErrorSnackBar(model.errorMessage); + } + } catch (e) { + logger.e(e); + showErrorSnackBar( + "Problem during registration, please try again or contact support?", + ); + } + + model.isLoading = false; + notifyListeners(); + } + + Future resendOtp () async { + Map user = { + "username": onboardingController.model.phone, + "phone": onboardingController.model.phone, + "workflowId": onboardingController.model.workflowId, + }; + + try { + model.isLoading = true; + notifyListeners(); + + Map response = await http.post( + '/auth/resend', + user + ); + model.status = response['state']; + if(response['state'] == 'failed') { + model.errorMessage = response['message']; + showErrorSnackBar(model.errorMessage); + } + } catch (e) { + logger.e(e); + showErrorSnackBar( + "Problem during registration, please try again or contact support?", + ); + } + + model.isLoading = false; + notifyListeners(); + } +} \ No newline at end of file diff --git a/lib/screens/onboarding/verify/verify_screen.dart b/lib/screens/onboarding/verify/verify_screen.dart index 98a73e2..a86e61d 100644 --- a/lib/screens/onboarding/verify/verify_screen.dart +++ b/lib/screens/onboarding/verify/verify_screen.dart @@ -1,5 +1,7 @@ import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; +import 'package:qpay/screens/onboarding/verify/verify_controller.dart'; +import 'package:skeletonizer/skeletonizer.dart'; class VerifyScreen extends StatefulWidget { const VerifyScreen({super.key}); @@ -9,6 +11,16 @@ class VerifyScreen extends StatefulWidget { } class _VerifyScreenState extends State { + late VerifyController verifyController; + String? errorMessage; + + @override + void initState() { + super.initState(); + + verifyController = VerifyController(context); + } + final List _codeControllers = List.generate( 6, (index) => TextEditingController(), @@ -26,6 +38,12 @@ class _VerifyScreenState extends State { super.dispose(); } + void showErrorMessage(String? message) { + setState(() { + errorMessage = message; + }); + } + void _onCodeChanged(String value, int index) { if (value.length == 1 && index < 5) { _focusNodes[index + 1].requestFocus(); @@ -34,155 +52,180 @@ class _VerifyScreenState extends State { @override Widget build(BuildContext context) { - return Scaffold( - body: SingleChildScrollView( - child: Padding( - padding: const EdgeInsets.all(25), - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - SizedBox(height: 75), - Text( - 'Verify Your Account', - style: TextStyle( - fontSize: 30, - fontWeight: FontWeight.bold, - color: Theme.of(context).colorScheme.primary, - ), - ), - SizedBox(height: 5), - Text( - 'Enter the 6-digit code sent to your phone/email', - style: TextStyle(fontSize: 18), - textAlign: TextAlign.center, - ), - Image.asset('assets/verify.png', width: 300), - // Verification Code Input - Row( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: List.generate( - 6, - (index) => SizedBox( - width: 50, - child: TextField( - controller: _codeControllers[index], - focusNode: _focusNodes[index], - textAlign: TextAlign.center, - keyboardType: TextInputType.number, - maxLength: 1, - decoration: InputDecoration( - counterText: '', - border: OutlineInputBorder( - borderRadius: BorderRadius.circular(12), - borderSide: BorderSide(color: Colors.grey.shade300), + return ListenableBuilder( + listenable: verifyController, + builder: (context, child) { + return Scaffold( + body: SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.all(25), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + SizedBox(height: 75), + Text( + 'Verify Your Account', + style: TextStyle( + fontSize: 30, + fontWeight: FontWeight.bold, + color: Theme.of(context).colorScheme.primary, + ), + ), + SizedBox(height: 5), + Text( + 'Enter the 6-digit code sent to your phone/email', + style: TextStyle(fontSize: 18), + textAlign: TextAlign.center, + ), + Image.asset('assets/verify.png', width: 300), + // Verification Code Input + Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: List.generate( + 6, + (index) => SizedBox( + width: 50, + child: TextFormField( + controller: _codeControllers[index], + focusNode: _focusNodes[index], + textAlign: TextAlign.center, + keyboardType: TextInputType.number, + maxLength: 1, + decoration: InputDecoration( + counterText: '', + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(12), + borderSide: BorderSide(color: Colors.grey.shade300), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(12), + borderSide: BorderSide( + color: Theme.of(context).colorScheme.primary, + width: 2, + ), + ), + contentPadding: EdgeInsets.symmetric(vertical: 16), + ), + onChanged: (value) => _onCodeChanged(value, index), ), - focusedBorder: OutlineInputBorder( - borderRadius: BorderRadius.circular(12), - borderSide: BorderSide( + ), + ), + ), + SizedBox(height: 5), + if(errorMessage != null) + Text(errorMessage ?? '', style: TextStyle(color: Colors.red)), + SizedBox(height: 30), + // Resend Code Section + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + "Didn't receive the code? ", + style: TextStyle(color: Colors.grey.shade600, fontSize: 16), + ), + TextButton( + onPressed: () { + verifyController.resendOtp(); + }, + child: Text( + 'Resend Code', + style: TextStyle( color: Theme.of(context).colorScheme.primary, - width: 2, + fontSize: 16, + fontWeight: FontWeight.w600, ), ), - contentPadding: EdgeInsets.symmetric(vertical: 16), ), - onChanged: (value) => _onCodeChanged(value, index), + ], + ), + // SizedBox(height: 20), + // // Timer for resend (optional) + // Text( + // 'Resend available in 2:30', + // style: TextStyle(color: Colors.grey.shade500, fontSize: 14), + // ), + SizedBox(height: 40), + ], + ), + ), + ), + bottomNavigationBar: SizedBox( + height: 130, + child: Column( + children: [ + Padding( + padding: const EdgeInsets.symmetric(horizontal: 25), + child: Skeletonizer( + enabled: verifyController.model.isLoading, + child: Row( + children: [ + Expanded( + child: ElevatedButton( + onPressed: () async { + showErrorMessage(null); + String code = ''; + for (var controller in _codeControllers) { + code += controller.text; + } + + if(code.length != 6) { + showErrorMessage('Invalid code'); + return; + } + verifyController.updateCode(code); + await verifyController.verifyOtp(); + if(verifyController.model.status == 'done') { + context.go('/onboarding/complete'); + } + }, + style: ElevatedButton.styleFrom( + padding: EdgeInsets.symmetric(vertical: 16), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12), + ), + ), + child: Text( + 'Verify Code', + style: TextStyle(fontSize: 16), + ), + ), + ), + SizedBox(width: 16), + Expanded( + child: OutlinedButton( + onPressed: () { + context.go('/onboarding/login'); + }, + style: OutlinedButton.styleFrom( + padding: EdgeInsets.symmetric(vertical: 16), + side: BorderSide(color: Colors.grey.shade300), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12), + ), + ), + child: Text( + 'Back to Login', + style: TextStyle(fontSize: 16), + ), + ), + ), + ], ), ), ), - ), - SizedBox(height: 30), - // Resend Code Section - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Text( - "Didn't receive the code? ", - style: TextStyle(color: Colors.grey.shade600, fontSize: 16), - ), - TextButton( - onPressed: () { - // TODO: Add resend code logic - }, - child: Text( - 'Resend Code', - style: TextStyle( - color: Theme.of(context).colorScheme.primary, - fontSize: 16, - fontWeight: FontWeight.w600, - ), - ), - ), - ], - ), - SizedBox(height: 20), - // Timer for resend (optional) - Text( - 'Resend available in 2:30', - style: TextStyle(color: Colors.grey.shade500, fontSize: 14), - ), - SizedBox(height: 40), - ], + SizedBox(height: 20), + TextButton( + onPressed: () { + context.go('/'); + }, + child: Text('Continue as guest?', style: TextStyle(fontSize: 14)), + ), + ], + ), ), - ), - ), - bottomNavigationBar: SizedBox( - height: 130, - child: Column( - children: [ - Padding( - padding: const EdgeInsets.symmetric(horizontal: 25), - child: Row( - children: [ - Expanded( - child: ElevatedButton( - onPressed: () { - context.go('/onboarding/password'); - }, - style: ElevatedButton.styleFrom( - padding: EdgeInsets.symmetric(vertical: 16), - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(12), - ), - ), - child: Text( - 'Verify Code', - style: TextStyle(fontSize: 16), - ), - ), - ), - SizedBox(width: 16), - Expanded( - child: OutlinedButton( - onPressed: () { - context.go('/onboarding/login'); - }, - style: OutlinedButton.styleFrom( - padding: EdgeInsets.symmetric(vertical: 16), - side: BorderSide(color: Colors.grey.shade300), - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(12), - ), - ), - child: Text( - 'Back to Login', - style: TextStyle(fontSize: 16), - ), - ), - ), - ], - ), - ), - SizedBox(height: 20), - TextButton( - onPressed: () { - context.go('/'); - }, - child: Text('Continue as guest?', style: TextStyle(fontSize: 14)), - ), - ], - ), - ), + ); + } ); } } diff --git a/lib/screens/receipt/receipt_controller.dart b/lib/screens/receipt/receipt_controller.dart index 573b4a0..9a46a1e 100644 --- a/lib/screens/receipt/receipt_controller.dart +++ b/lib/screens/receipt/receipt_controller.dart @@ -87,6 +87,7 @@ class ReceiptController extends ChangeNotifier { creditPhone: model.receiptData?['creditPhone'] ?? '', paymentProcessorLabel: model.receiptData?['paymentProcessorLabel'] ?? '', paymentProcessorName: model.receiptData?['paymentProcessorName'] ?? '', + id: null ); setLoading(false); diff --git a/lib/screens/transaction_controller.dart b/lib/screens/transaction_controller.dart index 6848b3c..6f8b950 100644 --- a/lib/screens/transaction_controller.dart +++ b/lib/screens/transaction_controller.dart @@ -15,7 +15,6 @@ class TransactionModel { BillProvider? selectedProvider; Map? receiptData; FormData formData = FormData( - id: '', type: '', billClientId: '', debitRef: '', @@ -48,9 +47,9 @@ class TransactionModel { @freezed abstract class FormData with _$FormData { const factory FormData({ + String? id, required String type, // CONFIRM, REQUEST, REVERSE required String billClientId, - required String id, required String debitRef, required String debitCurrency, required String amount, @@ -117,7 +116,7 @@ class TransactionController extends ChangeNotifier { clearFormData() { model.formData = FormData( - id: '', + id: null, type: '', billClientId: '', debitRef: '', diff --git a/lib/screens/transaction_controller.freezed.dart b/lib/screens/transaction_controller.freezed.dart index c204d16..8b49421 100644 --- a/lib/screens/transaction_controller.freezed.dart +++ b/lib/screens/transaction_controller.freezed.dart @@ -16,8 +16,8 @@ T _$identity(T value) => value; /// @nodoc mixin _$FormData { - String get type;// CONFIRM, REQUEST, REVERSE - String get billClientId; String get id; String get debitRef; String get debitCurrency; String get amount; String get creditAccount; String? get creditPhone; String? get creditName; String? get creditEmail; String get billName; String? get errorMessage; String get status; String get paymentProcessorLabel; String get paymentProcessorName; String get paymentProcessorImage; String get providerImage; String get providerLabel; String get userId; String? get debitPhone; String? get debitAccount; String? get productUid; String? get trace; String? get authType; String? get charge; String? get gatewayCharge; String? get tax; String? get totalAmount; + String? get id; String get type;// CONFIRM, REQUEST, REVERSE + String get billClientId; String get debitRef; String get debitCurrency; String get amount; String get creditAccount; String? get creditPhone; String? get creditName; String? get creditEmail; String get billName; String? get errorMessage; String get status; String get paymentProcessorLabel; String get paymentProcessorName; String get paymentProcessorImage; String get providerImage; String get providerLabel; String get userId; String? get debitPhone; String? get debitAccount; String? get productUid; String? get trace; String? get authType; String? get charge; String? get gatewayCharge; String? get tax; String? get totalAmount; /// Create a copy of FormData /// with the given fields replaced by the non-null parameter values. @JsonKey(includeFromJson: false, includeToJson: false) @@ -30,16 +30,16 @@ $FormDataCopyWith get copyWith => _$FormDataCopyWithImpl(thi @override bool operator ==(Object other) { - return identical(this, other) || (other.runtimeType == runtimeType&&other is FormData&&(identical(other.type, type) || other.type == type)&&(identical(other.billClientId, billClientId) || other.billClientId == billClientId)&&(identical(other.id, id) || other.id == id)&&(identical(other.debitRef, debitRef) || other.debitRef == debitRef)&&(identical(other.debitCurrency, debitCurrency) || other.debitCurrency == debitCurrency)&&(identical(other.amount, amount) || other.amount == amount)&&(identical(other.creditAccount, creditAccount) || other.creditAccount == creditAccount)&&(identical(other.creditPhone, creditPhone) || other.creditPhone == creditPhone)&&(identical(other.creditName, creditName) || other.creditName == creditName)&&(identical(other.creditEmail, creditEmail) || other.creditEmail == creditEmail)&&(identical(other.billName, billName) || other.billName == billName)&&(identical(other.errorMessage, errorMessage) || other.errorMessage == errorMessage)&&(identical(other.status, status) || other.status == status)&&(identical(other.paymentProcessorLabel, paymentProcessorLabel) || other.paymentProcessorLabel == paymentProcessorLabel)&&(identical(other.paymentProcessorName, paymentProcessorName) || other.paymentProcessorName == paymentProcessorName)&&(identical(other.paymentProcessorImage, paymentProcessorImage) || other.paymentProcessorImage == paymentProcessorImage)&&(identical(other.providerImage, providerImage) || other.providerImage == providerImage)&&(identical(other.providerLabel, providerLabel) || other.providerLabel == providerLabel)&&(identical(other.userId, userId) || other.userId == userId)&&(identical(other.debitPhone, debitPhone) || other.debitPhone == debitPhone)&&(identical(other.debitAccount, debitAccount) || other.debitAccount == debitAccount)&&(identical(other.productUid, productUid) || other.productUid == productUid)&&(identical(other.trace, trace) || other.trace == trace)&&(identical(other.authType, authType) || other.authType == authType)&&(identical(other.charge, charge) || other.charge == charge)&&(identical(other.gatewayCharge, gatewayCharge) || other.gatewayCharge == gatewayCharge)&&(identical(other.tax, tax) || other.tax == tax)&&(identical(other.totalAmount, totalAmount) || other.totalAmount == totalAmount)); + return identical(this, other) || (other.runtimeType == runtimeType&&other is FormData&&(identical(other.id, id) || other.id == id)&&(identical(other.type, type) || other.type == type)&&(identical(other.billClientId, billClientId) || other.billClientId == billClientId)&&(identical(other.debitRef, debitRef) || other.debitRef == debitRef)&&(identical(other.debitCurrency, debitCurrency) || other.debitCurrency == debitCurrency)&&(identical(other.amount, amount) || other.amount == amount)&&(identical(other.creditAccount, creditAccount) || other.creditAccount == creditAccount)&&(identical(other.creditPhone, creditPhone) || other.creditPhone == creditPhone)&&(identical(other.creditName, creditName) || other.creditName == creditName)&&(identical(other.creditEmail, creditEmail) || other.creditEmail == creditEmail)&&(identical(other.billName, billName) || other.billName == billName)&&(identical(other.errorMessage, errorMessage) || other.errorMessage == errorMessage)&&(identical(other.status, status) || other.status == status)&&(identical(other.paymentProcessorLabel, paymentProcessorLabel) || other.paymentProcessorLabel == paymentProcessorLabel)&&(identical(other.paymentProcessorName, paymentProcessorName) || other.paymentProcessorName == paymentProcessorName)&&(identical(other.paymentProcessorImage, paymentProcessorImage) || other.paymentProcessorImage == paymentProcessorImage)&&(identical(other.providerImage, providerImage) || other.providerImage == providerImage)&&(identical(other.providerLabel, providerLabel) || other.providerLabel == providerLabel)&&(identical(other.userId, userId) || other.userId == userId)&&(identical(other.debitPhone, debitPhone) || other.debitPhone == debitPhone)&&(identical(other.debitAccount, debitAccount) || other.debitAccount == debitAccount)&&(identical(other.productUid, productUid) || other.productUid == productUid)&&(identical(other.trace, trace) || other.trace == trace)&&(identical(other.authType, authType) || other.authType == authType)&&(identical(other.charge, charge) || other.charge == charge)&&(identical(other.gatewayCharge, gatewayCharge) || other.gatewayCharge == gatewayCharge)&&(identical(other.tax, tax) || other.tax == tax)&&(identical(other.totalAmount, totalAmount) || other.totalAmount == totalAmount)); } @JsonKey(includeFromJson: false, includeToJson: false) @override -int get hashCode => Object.hashAll([runtimeType,type,billClientId,id,debitRef,debitCurrency,amount,creditAccount,creditPhone,creditName,creditEmail,billName,errorMessage,status,paymentProcessorLabel,paymentProcessorName,paymentProcessorImage,providerImage,providerLabel,userId,debitPhone,debitAccount,productUid,trace,authType,charge,gatewayCharge,tax,totalAmount]); +int get hashCode => Object.hashAll([runtimeType,id,type,billClientId,debitRef,debitCurrency,amount,creditAccount,creditPhone,creditName,creditEmail,billName,errorMessage,status,paymentProcessorLabel,paymentProcessorName,paymentProcessorImage,providerImage,providerLabel,userId,debitPhone,debitAccount,productUid,trace,authType,charge,gatewayCharge,tax,totalAmount]); @override String toString() { - return 'FormData(type: $type, billClientId: $billClientId, id: $id, debitRef: $debitRef, debitCurrency: $debitCurrency, amount: $amount, creditAccount: $creditAccount, creditPhone: $creditPhone, creditName: $creditName, creditEmail: $creditEmail, billName: $billName, errorMessage: $errorMessage, status: $status, paymentProcessorLabel: $paymentProcessorLabel, paymentProcessorName: $paymentProcessorName, paymentProcessorImage: $paymentProcessorImage, providerImage: $providerImage, providerLabel: $providerLabel, userId: $userId, debitPhone: $debitPhone, debitAccount: $debitAccount, productUid: $productUid, trace: $trace, authType: $authType, charge: $charge, gatewayCharge: $gatewayCharge, tax: $tax, totalAmount: $totalAmount)'; + return 'FormData(id: $id, type: $type, billClientId: $billClientId, debitRef: $debitRef, debitCurrency: $debitCurrency, amount: $amount, creditAccount: $creditAccount, creditPhone: $creditPhone, creditName: $creditName, creditEmail: $creditEmail, billName: $billName, errorMessage: $errorMessage, status: $status, paymentProcessorLabel: $paymentProcessorLabel, paymentProcessorName: $paymentProcessorName, paymentProcessorImage: $paymentProcessorImage, providerImage: $providerImage, providerLabel: $providerLabel, userId: $userId, debitPhone: $debitPhone, debitAccount: $debitAccount, productUid: $productUid, trace: $trace, authType: $authType, charge: $charge, gatewayCharge: $gatewayCharge, tax: $tax, totalAmount: $totalAmount)'; } @@ -50,7 +50,7 @@ abstract mixin class $FormDataCopyWith<$Res> { factory $FormDataCopyWith(FormData value, $Res Function(FormData) _then) = _$FormDataCopyWithImpl; @useResult $Res call({ - String type, String billClientId, String id, String debitRef, String debitCurrency, String amount, String creditAccount, String? creditPhone, String? creditName, String? creditEmail, String billName, String? errorMessage, String status, String paymentProcessorLabel, String paymentProcessorName, String paymentProcessorImage, String providerImage, String providerLabel, String userId, String? debitPhone, String? debitAccount, String? productUid, String? trace, String? authType, String? charge, String? gatewayCharge, String? tax, String? totalAmount + String? id, String type, String billClientId, String debitRef, String debitCurrency, String amount, String creditAccount, String? creditPhone, String? creditName, String? creditEmail, String billName, String? errorMessage, String status, String paymentProcessorLabel, String paymentProcessorName, String paymentProcessorImage, String providerImage, String providerLabel, String userId, String? debitPhone, String? debitAccount, String? productUid, String? trace, String? authType, String? charge, String? gatewayCharge, String? tax, String? totalAmount }); @@ -67,11 +67,11 @@ class _$FormDataCopyWithImpl<$Res> /// Create a copy of FormData /// with the given fields replaced by the non-null parameter values. -@pragma('vm:prefer-inline') @override $Res call({Object? type = null,Object? billClientId = null,Object? id = null,Object? debitRef = null,Object? debitCurrency = null,Object? amount = null,Object? creditAccount = null,Object? creditPhone = freezed,Object? creditName = freezed,Object? creditEmail = freezed,Object? billName = null,Object? errorMessage = freezed,Object? status = null,Object? paymentProcessorLabel = null,Object? paymentProcessorName = null,Object? paymentProcessorImage = null,Object? providerImage = null,Object? providerLabel = null,Object? userId = null,Object? debitPhone = freezed,Object? debitAccount = freezed,Object? productUid = freezed,Object? trace = freezed,Object? authType = freezed,Object? charge = freezed,Object? gatewayCharge = freezed,Object? tax = freezed,Object? totalAmount = freezed,}) { +@pragma('vm:prefer-inline') @override $Res call({Object? id = freezed,Object? type = null,Object? billClientId = null,Object? debitRef = null,Object? debitCurrency = null,Object? amount = null,Object? creditAccount = null,Object? creditPhone = freezed,Object? creditName = freezed,Object? creditEmail = freezed,Object? billName = null,Object? errorMessage = freezed,Object? status = null,Object? paymentProcessorLabel = null,Object? paymentProcessorName = null,Object? paymentProcessorImage = null,Object? providerImage = null,Object? providerLabel = null,Object? userId = null,Object? debitPhone = freezed,Object? debitAccount = freezed,Object? productUid = freezed,Object? trace = freezed,Object? authType = freezed,Object? charge = freezed,Object? gatewayCharge = freezed,Object? tax = freezed,Object? totalAmount = freezed,}) { return _then(_self.copyWith( -type: null == type ? _self.type : type // ignore: cast_nullable_to_non_nullable +id: freezed == id ? _self.id : id // ignore: cast_nullable_to_non_nullable +as String?,type: null == type ? _self.type : type // ignore: cast_nullable_to_non_nullable as String,billClientId: null == billClientId ? _self.billClientId : billClientId // ignore: cast_nullable_to_non_nullable -as String,id: null == id ? _self.id : id // ignore: cast_nullable_to_non_nullable as String,debitRef: null == debitRef ? _self.debitRef : debitRef // ignore: cast_nullable_to_non_nullable as String,debitCurrency: null == debitCurrency ? _self.debitCurrency : debitCurrency // ignore: cast_nullable_to_non_nullable as String,amount: null == amount ? _self.amount : amount // ignore: cast_nullable_to_non_nullable @@ -108,13 +108,13 @@ as String?, @JsonSerializable() class _FormData implements FormData { - const _FormData({required this.type, required this.billClientId, required this.id, required this.debitRef, required this.debitCurrency, required this.amount, required this.creditAccount, required this.creditPhone, required this.creditName, required this.creditEmail, required this.billName, required this.errorMessage, required this.status, required this.paymentProcessorLabel, required this.paymentProcessorName, required this.paymentProcessorImage, required this.providerImage, required this.providerLabel, required this.userId, this.debitPhone, this.debitAccount, this.productUid, this.trace, this.authType, this.charge, this.gatewayCharge, this.tax, this.totalAmount}); + const _FormData({this.id, required this.type, required this.billClientId, required this.debitRef, required this.debitCurrency, required this.amount, required this.creditAccount, required this.creditPhone, required this.creditName, required this.creditEmail, required this.billName, required this.errorMessage, required this.status, required this.paymentProcessorLabel, required this.paymentProcessorName, required this.paymentProcessorImage, required this.providerImage, required this.providerLabel, required this.userId, this.debitPhone, this.debitAccount, this.productUid, this.trace, this.authType, this.charge, this.gatewayCharge, this.tax, this.totalAmount}); factory _FormData.fromJson(Map json) => _$FormDataFromJson(json); +@override final String? id; @override final String type; // CONFIRM, REQUEST, REVERSE @override final String billClientId; -@override final String id; @override final String debitRef; @override final String debitCurrency; @override final String amount; @@ -154,16 +154,16 @@ Map toJson() { @override bool operator ==(Object other) { - return identical(this, other) || (other.runtimeType == runtimeType&&other is _FormData&&(identical(other.type, type) || other.type == type)&&(identical(other.billClientId, billClientId) || other.billClientId == billClientId)&&(identical(other.id, id) || other.id == id)&&(identical(other.debitRef, debitRef) || other.debitRef == debitRef)&&(identical(other.debitCurrency, debitCurrency) || other.debitCurrency == debitCurrency)&&(identical(other.amount, amount) || other.amount == amount)&&(identical(other.creditAccount, creditAccount) || other.creditAccount == creditAccount)&&(identical(other.creditPhone, creditPhone) || other.creditPhone == creditPhone)&&(identical(other.creditName, creditName) || other.creditName == creditName)&&(identical(other.creditEmail, creditEmail) || other.creditEmail == creditEmail)&&(identical(other.billName, billName) || other.billName == billName)&&(identical(other.errorMessage, errorMessage) || other.errorMessage == errorMessage)&&(identical(other.status, status) || other.status == status)&&(identical(other.paymentProcessorLabel, paymentProcessorLabel) || other.paymentProcessorLabel == paymentProcessorLabel)&&(identical(other.paymentProcessorName, paymentProcessorName) || other.paymentProcessorName == paymentProcessorName)&&(identical(other.paymentProcessorImage, paymentProcessorImage) || other.paymentProcessorImage == paymentProcessorImage)&&(identical(other.providerImage, providerImage) || other.providerImage == providerImage)&&(identical(other.providerLabel, providerLabel) || other.providerLabel == providerLabel)&&(identical(other.userId, userId) || other.userId == userId)&&(identical(other.debitPhone, debitPhone) || other.debitPhone == debitPhone)&&(identical(other.debitAccount, debitAccount) || other.debitAccount == debitAccount)&&(identical(other.productUid, productUid) || other.productUid == productUid)&&(identical(other.trace, trace) || other.trace == trace)&&(identical(other.authType, authType) || other.authType == authType)&&(identical(other.charge, charge) || other.charge == charge)&&(identical(other.gatewayCharge, gatewayCharge) || other.gatewayCharge == gatewayCharge)&&(identical(other.tax, tax) || other.tax == tax)&&(identical(other.totalAmount, totalAmount) || other.totalAmount == totalAmount)); + return identical(this, other) || (other.runtimeType == runtimeType&&other is _FormData&&(identical(other.id, id) || other.id == id)&&(identical(other.type, type) || other.type == type)&&(identical(other.billClientId, billClientId) || other.billClientId == billClientId)&&(identical(other.debitRef, debitRef) || other.debitRef == debitRef)&&(identical(other.debitCurrency, debitCurrency) || other.debitCurrency == debitCurrency)&&(identical(other.amount, amount) || other.amount == amount)&&(identical(other.creditAccount, creditAccount) || other.creditAccount == creditAccount)&&(identical(other.creditPhone, creditPhone) || other.creditPhone == creditPhone)&&(identical(other.creditName, creditName) || other.creditName == creditName)&&(identical(other.creditEmail, creditEmail) || other.creditEmail == creditEmail)&&(identical(other.billName, billName) || other.billName == billName)&&(identical(other.errorMessage, errorMessage) || other.errorMessage == errorMessage)&&(identical(other.status, status) || other.status == status)&&(identical(other.paymentProcessorLabel, paymentProcessorLabel) || other.paymentProcessorLabel == paymentProcessorLabel)&&(identical(other.paymentProcessorName, paymentProcessorName) || other.paymentProcessorName == paymentProcessorName)&&(identical(other.paymentProcessorImage, paymentProcessorImage) || other.paymentProcessorImage == paymentProcessorImage)&&(identical(other.providerImage, providerImage) || other.providerImage == providerImage)&&(identical(other.providerLabel, providerLabel) || other.providerLabel == providerLabel)&&(identical(other.userId, userId) || other.userId == userId)&&(identical(other.debitPhone, debitPhone) || other.debitPhone == debitPhone)&&(identical(other.debitAccount, debitAccount) || other.debitAccount == debitAccount)&&(identical(other.productUid, productUid) || other.productUid == productUid)&&(identical(other.trace, trace) || other.trace == trace)&&(identical(other.authType, authType) || other.authType == authType)&&(identical(other.charge, charge) || other.charge == charge)&&(identical(other.gatewayCharge, gatewayCharge) || other.gatewayCharge == gatewayCharge)&&(identical(other.tax, tax) || other.tax == tax)&&(identical(other.totalAmount, totalAmount) || other.totalAmount == totalAmount)); } @JsonKey(includeFromJson: false, includeToJson: false) @override -int get hashCode => Object.hashAll([runtimeType,type,billClientId,id,debitRef,debitCurrency,amount,creditAccount,creditPhone,creditName,creditEmail,billName,errorMessage,status,paymentProcessorLabel,paymentProcessorName,paymentProcessorImage,providerImage,providerLabel,userId,debitPhone,debitAccount,productUid,trace,authType,charge,gatewayCharge,tax,totalAmount]); +int get hashCode => Object.hashAll([runtimeType,id,type,billClientId,debitRef,debitCurrency,amount,creditAccount,creditPhone,creditName,creditEmail,billName,errorMessage,status,paymentProcessorLabel,paymentProcessorName,paymentProcessorImage,providerImage,providerLabel,userId,debitPhone,debitAccount,productUid,trace,authType,charge,gatewayCharge,tax,totalAmount]); @override String toString() { - return 'FormData(type: $type, billClientId: $billClientId, id: $id, debitRef: $debitRef, debitCurrency: $debitCurrency, amount: $amount, creditAccount: $creditAccount, creditPhone: $creditPhone, creditName: $creditName, creditEmail: $creditEmail, billName: $billName, errorMessage: $errorMessage, status: $status, paymentProcessorLabel: $paymentProcessorLabel, paymentProcessorName: $paymentProcessorName, paymentProcessorImage: $paymentProcessorImage, providerImage: $providerImage, providerLabel: $providerLabel, userId: $userId, debitPhone: $debitPhone, debitAccount: $debitAccount, productUid: $productUid, trace: $trace, authType: $authType, charge: $charge, gatewayCharge: $gatewayCharge, tax: $tax, totalAmount: $totalAmount)'; + return 'FormData(id: $id, type: $type, billClientId: $billClientId, debitRef: $debitRef, debitCurrency: $debitCurrency, amount: $amount, creditAccount: $creditAccount, creditPhone: $creditPhone, creditName: $creditName, creditEmail: $creditEmail, billName: $billName, errorMessage: $errorMessage, status: $status, paymentProcessorLabel: $paymentProcessorLabel, paymentProcessorName: $paymentProcessorName, paymentProcessorImage: $paymentProcessorImage, providerImage: $providerImage, providerLabel: $providerLabel, userId: $userId, debitPhone: $debitPhone, debitAccount: $debitAccount, productUid: $productUid, trace: $trace, authType: $authType, charge: $charge, gatewayCharge: $gatewayCharge, tax: $tax, totalAmount: $totalAmount)'; } @@ -174,7 +174,7 @@ abstract mixin class _$FormDataCopyWith<$Res> implements $FormDataCopyWith<$Res> factory _$FormDataCopyWith(_FormData value, $Res Function(_FormData) _then) = __$FormDataCopyWithImpl; @override @useResult $Res call({ - String type, String billClientId, String id, String debitRef, String debitCurrency, String amount, String creditAccount, String? creditPhone, String? creditName, String? creditEmail, String billName, String? errorMessage, String status, String paymentProcessorLabel, String paymentProcessorName, String paymentProcessorImage, String providerImage, String providerLabel, String userId, String? debitPhone, String? debitAccount, String? productUid, String? trace, String? authType, String? charge, String? gatewayCharge, String? tax, String? totalAmount + String? id, String type, String billClientId, String debitRef, String debitCurrency, String amount, String creditAccount, String? creditPhone, String? creditName, String? creditEmail, String billName, String? errorMessage, String status, String paymentProcessorLabel, String paymentProcessorName, String paymentProcessorImage, String providerImage, String providerLabel, String userId, String? debitPhone, String? debitAccount, String? productUid, String? trace, String? authType, String? charge, String? gatewayCharge, String? tax, String? totalAmount }); @@ -191,11 +191,11 @@ class __$FormDataCopyWithImpl<$Res> /// Create a copy of FormData /// with the given fields replaced by the non-null parameter values. -@override @pragma('vm:prefer-inline') $Res call({Object? type = null,Object? billClientId = null,Object? id = null,Object? debitRef = null,Object? debitCurrency = null,Object? amount = null,Object? creditAccount = null,Object? creditPhone = freezed,Object? creditName = freezed,Object? creditEmail = freezed,Object? billName = null,Object? errorMessage = freezed,Object? status = null,Object? paymentProcessorLabel = null,Object? paymentProcessorName = null,Object? paymentProcessorImage = null,Object? providerImage = null,Object? providerLabel = null,Object? userId = null,Object? debitPhone = freezed,Object? debitAccount = freezed,Object? productUid = freezed,Object? trace = freezed,Object? authType = freezed,Object? charge = freezed,Object? gatewayCharge = freezed,Object? tax = freezed,Object? totalAmount = freezed,}) { +@override @pragma('vm:prefer-inline') $Res call({Object? id = freezed,Object? type = null,Object? billClientId = null,Object? debitRef = null,Object? debitCurrency = null,Object? amount = null,Object? creditAccount = null,Object? creditPhone = freezed,Object? creditName = freezed,Object? creditEmail = freezed,Object? billName = null,Object? errorMessage = freezed,Object? status = null,Object? paymentProcessorLabel = null,Object? paymentProcessorName = null,Object? paymentProcessorImage = null,Object? providerImage = null,Object? providerLabel = null,Object? userId = null,Object? debitPhone = freezed,Object? debitAccount = freezed,Object? productUid = freezed,Object? trace = freezed,Object? authType = freezed,Object? charge = freezed,Object? gatewayCharge = freezed,Object? tax = freezed,Object? totalAmount = freezed,}) { return _then(_FormData( -type: null == type ? _self.type : type // ignore: cast_nullable_to_non_nullable +id: freezed == id ? _self.id : id // ignore: cast_nullable_to_non_nullable +as String?,type: null == type ? _self.type : type // ignore: cast_nullable_to_non_nullable as String,billClientId: null == billClientId ? _self.billClientId : billClientId // ignore: cast_nullable_to_non_nullable -as String,id: null == id ? _self.id : id // ignore: cast_nullable_to_non_nullable as String,debitRef: null == debitRef ? _self.debitRef : debitRef // ignore: cast_nullable_to_non_nullable as String,debitCurrency: null == debitCurrency ? _self.debitCurrency : debitCurrency // ignore: cast_nullable_to_non_nullable as String,amount: null == amount ? _self.amount : amount // ignore: cast_nullable_to_non_nullable diff --git a/lib/screens/transaction_controller.g.dart b/lib/screens/transaction_controller.g.dart index 19be559..9b326ff 100644 --- a/lib/screens/transaction_controller.g.dart +++ b/lib/screens/transaction_controller.g.dart @@ -7,9 +7,9 @@ part of 'transaction_controller.dart'; // ************************************************************************** _FormData _$FormDataFromJson(Map json) => _FormData( + id: json['id'] as String?, type: json['type'] as String, billClientId: json['billClientId'] as String, - id: json['id'] as String, debitRef: json['debitRef'] as String, debitCurrency: json['debitCurrency'] as String, amount: json['amount'] as String, @@ -38,9 +38,9 @@ _FormData _$FormDataFromJson(Map json) => _FormData( ); Map _$FormDataToJson(_FormData instance) => { + 'id': instance.id, 'type': instance.type, 'billClientId': instance.billClientId, - 'id': instance.id, 'debitRef': instance.debitRef, 'debitCurrency': instance.debitCurrency, 'amount': instance.amount, diff --git a/lib/theme/app_theme.dart b/lib/theme/app_theme.dart index 9581ce5..eec2b5b 100644 --- a/lib/theme/app_theme.dart +++ b/lib/theme/app_theme.dart @@ -38,7 +38,7 @@ class AppTheme { const TextStyle(fontSize: 12, fontWeight: FontWeight.w500), ), ), - cardTheme: CardTheme( + cardTheme: CardThemeData( elevation: 0, shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(16)), ), diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 313ef1e..9005b53 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,12 +5,16 @@ import FlutterMacOS import Foundation +import firebase_core +import google_sign_in_ios import path_provider_foundation import share_plus import shared_preferences_foundation import webview_flutter_wkwebview func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin")) + FLTGoogleSignInPlugin.register(with: registry.registrar(forPlugin: "FLTGoogleSignInPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) SharePlusMacosPlugin.register(with: registry.registrar(forPlugin: "SharePlusMacosPlugin")) SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) diff --git a/pubspec.lock b/pubspec.lock index 73125d5..f639c1f 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -225,6 +225,30 @@ packages: url: "https://pub.dev" source: hosted version: "7.0.1" + firebase_core: + dependency: "direct main" + description: + name: firebase_core + sha256: "967dae9a65f69377beb9f4ab292ea63ce5befa1ce24682cab1b69ca4b7a46927" + url: "https://pub.dev" + source: hosted + version: "4.1.0" + firebase_core_platform_interface: + dependency: transitive + description: + name: firebase_core_platform_interface + sha256: "5dbc900677dcbe5873d22ad7fbd64b047750124f1f9b7ebe2a33b9ddccc838eb" + url: "https://pub.dev" + source: hosted + version: "6.0.0" + firebase_core_web: + dependency: transitive + description: + name: firebase_core_web + sha256: f7ee08febc1c4451588ce58ffcf28edaee857e9a196fee88b85deb889990094a + url: "https://pub.dev" + source: hosted + version: "3.1.0" fixnum: dependency: transitive description: @@ -336,6 +360,54 @@ packages: url: "https://pub.dev" source: hosted version: "6.2.1" + google_identity_services_web: + dependency: transitive + description: + name: google_identity_services_web + sha256: "5d187c46dc59e02646e10fe82665fc3884a9b71bc1c90c2b8b749316d33ee454" + url: "https://pub.dev" + source: hosted + version: "0.3.3+1" + google_sign_in: + dependency: "direct main" + description: + name: google_sign_in + sha256: "939a8b58f84c4053811b8c1bc9adbcb59449a15b37958264bbf60020698cca0e" + url: "https://pub.dev" + source: hosted + version: "7.1.1" + google_sign_in_android: + dependency: transitive + description: + name: google_sign_in_android + sha256: d2c80c17ede83c2f3348847520bf78bc9ada3ff4f94361b0d7e93a3b9d7815a0 + url: "https://pub.dev" + source: hosted + version: "7.1.0" + google_sign_in_ios: + dependency: transitive + description: + name: google_sign_in_ios + sha256: "10830fd37e6b4402b5c71373d3d8687e95ce7e9504738605237f23a76456c973" + url: "https://pub.dev" + source: hosted + version: "6.2.0" + google_sign_in_platform_interface: + dependency: transitive + description: + name: google_sign_in_platform_interface + sha256: "7f59208c42b415a3cca203571128d6f84f885fead2d5b53eb65a9e27f2965bb5" + url: "https://pub.dev" + source: hosted + version: "3.1.0" + google_sign_in_web: + dependency: transitive + description: + name: google_sign_in_web + sha256: "2fc1f941e6443b2d6984f4056a727a3eaeab15d8ee99ba7125d79029be75a1da" + url: "https://pub.dev" + source: hosted + version: "1.1.0" graphs: dependency: transitive description: @@ -1015,4 +1087,4 @@ packages: version: "3.1.3" sdks: dart: ">=3.7.2 <4.0.0" - flutter: ">=3.27.0" + flutter: ">=3.29.0" diff --git a/pubspec.yaml b/pubspec.yaml index 7228adb..59602a8 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -53,6 +53,8 @@ dependencies: share_plus: ^11.0.0 flutter_contacts: ^1.1.9+2 gif_view: ^0.4.0 + google_sign_in: ^7.1.1 + firebase_core: ^4.1.0 dev_dependencies: flutter_test: diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index c3384ec..c3d3b6a 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -6,10 +6,13 @@ #include "generated_plugin_registrant.h" +#include #include #include void RegisterPlugins(flutter::PluginRegistry* registry) { + FirebaseCorePluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("FirebaseCorePluginCApi")); SharePlusWindowsPluginCApiRegisterWithRegistrar( registry->GetRegistrarForPlugin("SharePlusWindowsPluginCApi")); UrlLauncherWindowsRegisterWithRegistrar( diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index 01d3836..c04ddae 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -3,6 +3,7 @@ # list(APPEND FLUTTER_PLUGIN_LIST + firebase_core share_plus url_launcher_windows )