From 9c28d73b26c22d58fce2c578337991db120f17f7 Mon Sep 17 00:00:00 2001 From: Angela <8798027+angelabauer@users.noreply.github.com> Date: Wed, 17 Apr 2019 14:52:40 +0100 Subject: [PATCH 1/9] Update for AndroidX --- android/app/build.gradle | 8 +++++--- android/gradle.properties | 2 ++ lib/constants.dart | 6 +++--- lib/screens/chat_screen.dart | 6 +++--- lib/screens/login_screen.dart | 2 +- lib/screens/registration_screen.dart | 14 +++++++------- 6 files changed, 21 insertions(+), 17 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index fa9891b..37c3c6d 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -6,6 +6,7 @@ if (localPropertiesFile.exists()) { } } + def flutterRoot = localProperties.getProperty('flutter.sdk') if (flutterRoot == null) { throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") @@ -38,7 +39,7 @@ android { targetSdkVersion 28 versionCode flutterVersionCode.toInteger() versionName flutterVersionName - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { @@ -56,6 +57,7 @@ flutter { dependencies { testImplementation 'junit:junit:4.12' - androidTestImplementation 'com.android.support.test:runner:1.0.2' - androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' + androidTestImplementation 'androidx.test:runner:1.1.0-alpha4' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4' + implementation 'androidx.multidex:multidex:2.0.0' } diff --git a/android/gradle.properties b/android/gradle.properties index 8bd86f6..4d3226a 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -1 +1,3 @@ org.gradle.jvmargs=-Xmx1536M +android.useAndroidX=true +android.enableJetifier=true \ No newline at end of file diff --git a/lib/constants.dart b/lib/constants.dart index 8e5d8b5..25e5f5c 100644 --- a/lib/constants.dart +++ b/lib/constants.dart @@ -1,18 +1,18 @@ import 'package:flutter/material.dart'; -const sendButtonTextStyle = TextStyle( +const kSendButtonTextStyle = TextStyle( color: Colors.lightBlueAccent, fontWeight: FontWeight.bold, fontSize: 18.0, ); -const messageTextFieldDecoration = InputDecoration( +const kMessageTextFieldDecoration = InputDecoration( contentPadding: EdgeInsets.symmetric(vertical: 10.0, horizontal: 20.0), hintText: 'Type your message here...', border: InputBorder.none, ); -const messageContainerDecoration = BoxDecoration( +const kMessageContainerDecoration = BoxDecoration( border: Border( top: BorderSide(color: Colors.lightBlueAccent, width: 2.0), ), diff --git a/lib/screens/chat_screen.dart b/lib/screens/chat_screen.dart index 102fd9f..42d8b67 100644 --- a/lib/screens/chat_screen.dart +++ b/lib/screens/chat_screen.dart @@ -28,7 +28,7 @@ class _ChatScreenState extends State { crossAxisAlignment: CrossAxisAlignment.stretch, children: [ Container( - decoration: messageContainerDecoration, + decoration: kMessageContainerDecoration, child: Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ @@ -37,7 +37,7 @@ class _ChatScreenState extends State { onChanged: (value) { //Do something with the user input. }, - decoration: messageTextFieldDecoration, + decoration: kMessageTextFieldDecoration, ), ), FlatButton( @@ -46,7 +46,7 @@ class _ChatScreenState extends State { }, child: Text( 'Send', - style: sendButtonTextStyle, + style: kSendButtonTextStyle, ), ), ], diff --git a/lib/screens/login_screen.dart b/lib/screens/login_screen.dart index 06e9061..852e116 100644 --- a/lib/screens/login_screen.dart +++ b/lib/screens/login_screen.dart @@ -79,7 +79,7 @@ class _LoginScreenState extends State { padding: EdgeInsets.symmetric(vertical: 16.0), child: Material( color: Colors.lightBlueAccent, - borderRadius: BorderRadius.circular(30.0), + borderRadius: BorderRadius.all(Radius.circular(30.0)), elevation: 5.0, child: MaterialButton( onPressed: () { diff --git a/lib/screens/registration_screen.dart b/lib/screens/registration_screen.dart index 7655b56..18a5236 100644 --- a/lib/screens/registration_screen.dart +++ b/lib/screens/registration_screen.dart @@ -32,15 +32,15 @@ class _RegistrationScreenState extends State { contentPadding: EdgeInsets.symmetric(vertical: 10.0, horizontal: 20.0), border: OutlineInputBorder( - borderRadius: BorderRadius.circular(32.0), + borderRadius: BorderRadius.all(Radius.circular(32.0)), ), enabledBorder: OutlineInputBorder( borderSide: BorderSide(color: Colors.blueAccent, width: 1.0), - borderRadius: BorderRadius.circular(32.0), + borderRadius: BorderRadius.all(Radius.circular(32.0)), ), focusedBorder: OutlineInputBorder( borderSide: BorderSide(color: Colors.blueAccent, width: 2.0), - borderRadius: BorderRadius.circular(32.0), + borderRadius: BorderRadius.all(Radius.circular(32.0)), ), ), ), @@ -56,15 +56,15 @@ class _RegistrationScreenState extends State { contentPadding: EdgeInsets.symmetric(vertical: 10.0, horizontal: 20.0), border: OutlineInputBorder( - borderRadius: BorderRadius.circular(32.0), + borderRadius: BorderRadius.all(Radius.circular(32.0)), ), enabledBorder: OutlineInputBorder( borderSide: BorderSide(color: Colors.blueAccent, width: 1.0), - borderRadius: BorderRadius.circular(32.0), + borderRadius: BorderRadius.all(Radius.circular(32.0)), ), focusedBorder: OutlineInputBorder( borderSide: BorderSide(color: Colors.blueAccent, width: 2.0), - borderRadius: BorderRadius.circular(32.0), + borderRadius: BorderRadius.all(Radius.circular(32.0)), ), ), ), @@ -75,7 +75,7 @@ class _RegistrationScreenState extends State { padding: EdgeInsets.symmetric(vertical: 16.0), child: Material( color: Colors.blueAccent, - borderRadius: BorderRadius.circular(30.0), + borderRadius: BorderRadius.all(Radius.circular(30.0)), elevation: 5.0, child: MaterialButton( onPressed: () { From 51223aa87f6ff229adaab5d0b8aee4812edb97a6 Mon Sep 17 00:00:00 2001 From: Angela <8798027+angelabauer@users.noreply.github.com> Date: Wed, 17 Apr 2019 16:24:08 +0100 Subject: [PATCH 2/9] Update for Multidex --- android/app/build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/android/app/build.gradle b/android/app/build.gradle index 37c3c6d..9c402d3 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -40,6 +40,7 @@ android { versionCode flutterVersionCode.toInteger() versionName flutterVersionName testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + multiDexEnabled true } buildTypes { From 6028576d493c43173906fbe2bc57af2c1c946dff Mon Sep 17 00:00:00 2001 From: Angela <8798027+angelabauer@users.noreply.github.com> Date: Wed, 17 Apr 2019 16:48:41 +0100 Subject: [PATCH 3/9] Update Readme --- README.md | 38 ++++++++++++++++++++++++++++---------- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 9f2cb25..a07acb0 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,34 @@ -# flash_chat +![App Brewery Banner](https://github.com/londonappbrewery/Images/blob/master/AppBreweryBanner.png) -A new Flutter application. -## Getting Started +# Flash Chat ⚡️ -This project is a starting point for a Flutter application. +## Our Goal -A few resources to get you started if this is your first Flutter project: +The objective of this tutorial is to learn how to incorporate Firebase into our Flutter apps. We'll be using Firebase Cloud Firestore as well as the Firebase authentication package to equip our app with a cloud based NoSQL database and secure authentication methods. -- [Lab: Write your first Flutter app](https://flutter.io/docs/get-started/codelab) -- [Cookbook: Useful Flutter samples](https://flutter.io/docs/cookbook) -For help getting started with Flutter, view our -[online documentation](https://flutter.io/docs), which offers tutorials, -samples, guidance on mobile development, and a full API reference. +## What you will create + +We’re going to build a modern messaging app where users can sign up and log in to chat. + +![Finished App](https://github.com/londonappbrewery/Images/blob/master/flash_chat_flutter_demo.gif) + +## What you will learn + +- How to incorporate Firebase into your Flutter projects. +- How to use Firebase authentication to register and sign in users. +- How to create beautiful animations using the Flutter Hero widget. +- How to create custom aniamtions using Flutter's animation controller. +- Learn all about mixins and how they differ from superclasses. +- Learn about Streams and how they work. +- Learn to use ListViews to build scrolling views. +- How to use Firebase Cloud Firestore to store and retrieve data on the fly. + +## Potential Problems When Incorporating Firebase + +- + +>This is a companion project to The App Brewery's Complete Flutter Development Bootcamp, check out the full course at [www.appbrewery.co](https://www.appbrewery.co/) + +![End Banner](https://github.com/londonappbrewery/Images/blob/master/readme-end-banner.png) From 94a8c0675f2dfd25040d86849d1792ad27c565e5 Mon Sep 17 00:00:00 2001 From: Angela <8798027+angelabauer@users.noreply.github.com> Date: Thu, 18 Apr 2019 08:46:24 +0100 Subject: [PATCH 4/9] Update Readme --- README.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/README.md b/README.md index a07acb0..13110d4 100644 --- a/README.md +++ b/README.md @@ -25,9 +25,6 @@ We’re going to build a modern messaging app where users can sign up and log in - Learn to use ListViews to build scrolling views. - How to use Firebase Cloud Firestore to store and retrieve data on the fly. -## Potential Problems When Incorporating Firebase - -- >This is a companion project to The App Brewery's Complete Flutter Development Bootcamp, check out the full course at [www.appbrewery.co](https://www.appbrewery.co/) From dd7eefa9f3851c8f31ed66e009767b7491de0968 Mon Sep 17 00:00:00 2001 From: Angela <8798027+angelabauer@users.noreply.github.com> Date: Fri, 19 Apr 2019 09:21:39 +0100 Subject: [PATCH 5/9] Update Register screen --- README.md | 1 + lib/screens/registration_screen.dart | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 13110d4..5d2772a 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,7 @@ We’re going to build a modern messaging app where users can sign up and log in - How to use Firebase Cloud Firestore to store and retrieve data on the fly. + >This is a companion project to The App Brewery's Complete Flutter Development Bootcamp, check out the full course at [www.appbrewery.co](https://www.appbrewery.co/) ![End Banner](https://github.com/londonappbrewery/Images/blob/master/readme-end-banner.png) diff --git a/lib/screens/registration_screen.dart b/lib/screens/registration_screen.dart index 18a5236..bbc0d51 100644 --- a/lib/screens/registration_screen.dart +++ b/lib/screens/registration_screen.dart @@ -52,7 +52,7 @@ class _RegistrationScreenState extends State { //Do something with the user input. }, decoration: InputDecoration( - hintText: 'Enter yourpassword', + hintText: 'Enter your password', contentPadding: EdgeInsets.symmetric(vertical: 10.0, horizontal: 20.0), border: OutlineInputBorder( From 124e94c3066590a4f0f1c9f25e1f31fb0b217b15 Mon Sep 17 00:00:00 2001 From: Angela <8798027+angelabauer@users.noreply.github.com> Date: Fri, 19 Apr 2019 09:48:27 +0100 Subject: [PATCH 6/9] Update app icons --- android/app/src/main/ic_launcher-web.png | Bin 16204 -> 16995 bytes .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 1406 -> 1530 bytes .../mipmap-hdpi/ic_launcher_foreground.png | Bin 2053 -> 2141 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 3210 -> 3258 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 913 -> 964 bytes .../mipmap-mdpi/ic_launcher_foreground.png | Bin 1248 -> 1300 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 1928 -> 1983 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 1978 -> 2066 bytes .../mipmap-xhdpi/ic_launcher_foreground.png | Bin 2853 -> 2897 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 4716 -> 4740 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 3266 -> 3343 bytes .../mipmap-xxhdpi/ic_launcher_foreground.png | Bin 4613 -> 4940 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 7421 -> 7672 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 4523 -> 4674 bytes .../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin 6493 -> 7020 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 10771 -> 11046 bytes 16 files changed, 0 insertions(+), 0 deletions(-) diff --git a/android/app/src/main/ic_launcher-web.png b/android/app/src/main/ic_launcher-web.png index 9ca2dce9123ae40e7011aadd1e4f25fb75c2e3a1..94cc4e879b4d6ef02f16f16e994c02c2332239d1 100644 GIT binary patch literal 16995 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 Uq7k?+xlofwso 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

4$JuW#wDOs2^P6J?et2S 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 diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png index d5753e423df491ebe83beec58b2e3a6a5976a73b..aa3c2df1d00621e69f86ef1df2852a5a1ccdf764 100644 GIT binary patch delta 2085 zcmah~`#aMO8_yx+w4pNDm_y+qqh68Y%q%MOC@k8hIaZG}DLM7EdN3Mt2!%YQ9NrvS zC(1~V@1_jPE5~eV%OY%qM>*|Tf5H3t<#S#4bzk>=-S>6hpHDiJ2fb+msF-?V-A`N@ zn;Tz?y|s+!ph#(CxoM5B>Af+I8shsD>pyPBP^!KO?njo13wm2XE47Q^)?)jd#TvpB zpCiVB9o^;)MdU{h)BB4tmL)I7v(qpyyXVTkCf!{e{pwsZ>=B|lGVnFAFY$F@?9p}V z6~PV3%FnBPlNtK7Unm?>)-C*`tfUxMc$`alP%6v@vsm9^ zIH;gSlM}rpA8@hYPlllt$rna>sI2~Zg}Yi**eP*;j&{gFQaK;^l~(aqSJOLXSvQq- z+NGFUDk;%1+k@kgv)X=d?D`JTo7iFt%^*K_nK3!qU}MNZ_Xx||hjCDLARqoM4A7$` z1`EP#Kt3}Jg1AQ0>U8;$|1YktBo}%@^p4}w^y4161RZOO|`}-TE!xX*)xEZ5h6O)9W}o+&24O(~Ui+@XY3QC&qB-zSZp4{CJI~3}BacUX zA?iU*?4A*Kvz@XVs>2V{#hb&wI%zbx@g8#1o6SLOz$csHvy>Zw#6?D@`u4D!vKg1} zHWpae-jTS$-wmsP?=9n5WB;_kq!lH^pf^(nwerT$i?RWdPYPy4+4;dio%sEvyh$Cj zq97j9pbxO{O;cyTMyB_#f69N`9*E4i9G!~q$x+)bIAusa0OMT`_?79plMS9FnBsWl zOWjJsu{iHtW@#$m8F=uDvn6gr7Syg9T)pssWC!g$@XXbJH#=jL%yddVOvfqVR*vm} zQXL2$GrqRFjL1D+G8?|}lb@r?Fi)n3MJE&5ixSw=qd` zKkhY414Di4_>U((MJoyB%S8qFIg;+vI`g(Yf45LpZO5ESem*@cdn~(Jtz<5jl|o|J z=@RtWR_6yy6eQ~OA<@H42_U?1QjVOo-+2|~iNAmD1*S({cnLmm8`hhVjBz=qD4;_c zKC;G{Xw=S0RSI#JaCw$K3Lof%4s&%Sr-Evwaq<*g=FoL=OfuSt-&j(_&FLB`*QYOx zm4Pn)y>KmBXUIJhU+!`8bABE7Ea|O*u$r6EKf3I!5QEH3v<94)vhgu1zk#hy2;n6$ zeQ0Q&=$i%u->;siy5B;o-%HZJzQCzG9mQPuFRZt^bz`L|@dkwE;W6Vuehvf~x&8%} za5_q>!d~4w#a!euht)wwWt0QTTUcr;%-k`V2HD@HnVs;G#5|ImIb=X+Wwo{((TW)! ztb5c+${NT4vY$A#RxnQIwiq^vJRs>gPyupSMVqEQ*zMi$=f{g7M*ZLzSMqk z{ZXJ>iH0t}oZ0m#^RC{FYB2iwRZo;zjmerL6(%a!#&Fze0hYz@@XKYq#8&Q2Hs0`; z#d-5R$$HJx+iVW>7JymJCemOkj6Zj5R@}uJ2U5z&%tRI8EvKrdKq8SDjLi6t1jC&w zXGD zhio(r2O8AY<*vAH1#L7RL)xu|ieuH=5T#iQm%YpDInB3SpdQWo-zevvqx6zu9d!U< z35dAj`P~+o5o7QC3R5pl4H<53?3kLp%9d_DDZ8Go>zyrlLf*7z_`4mjxyD1w*HYZS z+aWXFeGYBIBOufL>n^Moypi?cus=w%0NJckfgEk1Nuao{=ZqkZbcKGXpnOaKod%45 z8bCYub-1<$%+9%Kw=U*WV7#gTz+Xkq7XI;`Ln>$a;Cz?R#&H8x4Pdv)ww%wK7Z4c< zo7h=|A3Zew@x#_b;Hj1Rn*D$Iycf)SgKJn%)O(Rh2rA9@oN82-* zq;iEO(V#9+nFc#Z^LELd&_;3HLR7$;9!Gao(h?dKE}_+b;M+fNClzULNdEU%3n^%; z2TiJ5v}lT0q&8HxAyXMqy<{YFP%pHivD_~sl{c1#P`$AK2kt8XV%q(D6h|{Ob&Cw% Mp1#;dOz5?L0S7<#RsaA1 literal 2053 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 delta 3205 zcmV;040`jr8HyQ@B!5v!L_t(|+U=YPP!v}hfaP)%Tu5|LM3h4lb))83*MsOLq7q%O zTun)gD=A$QkFAvPSmTk>^{7>|Rt#3LRca-cS&zgUBZne#xN3+&Jdi_0ZiN9khBF_N+Z?|9`{Hjfp#o2Z|>X4<`1% z|KBtM;f3-XiVsRx6hD+6C_PaEnDk`d`LSbs*g0OTkEgEzfIEttgwuK8jU8Us;cU=ROmbU8y!Q((m8Z4^}%sm zJoQO^(>3T?l7H*E(O5bf98by5V^C62pt-pja1taUHS7Hb?G!8POSFGS*J0Nj<7iB3 zYmGbmITYov6bze4vkRa&lV)}eDJU94=+DQe1{^QR&x=q@3{0~EV4Q)nT@xEmV{$ZB zMd9G*3kW4qqA`MkP#lVV3^XQ`BpRclkR)&hqmsr6oF)S zd>BC{kQz(iKt~kG*m#4%Fi}?LZKsbHokm73al+7%#Xd&-0IgO#T^3EUcZizvPKSXb z3SbrZ7DFO!$MFN^RFN))WLHVFWAZtCN6{RiDhotiWveuaAmKdt($dn`U1DyM9LJZO z9rHP=!+){dy#QR+n)_PRN^_$*7>&mA+}zx*(mA#Z5cZqcQ5>>ps0KsgBrxCD-!8{p zUtfQc3gI>bva6rPV)>-Qz~Sn^m^KFt$KD2^;bwdK642D3qM~A1n@kN)prwXRCX*=y z;c)icLRCO!1DGzZ2i@M6fIGVgtQJ$d@+1m2dVjs1yK?2q%hEZw3J_||!H%Lm=7MiP zzkd+u{v86Ak_4CJNEG@t8qG0gY96gJE!3X3SV(VHJDgi8(rubUaP)^qf|b|0q;IOL zIgW$8yu1l5HZ{A`!kpoBM~GTNZ4MZ|4+q_z5Cjwo+=Z2x|Cn8xL{?Wb>hFRvuiJ-v%L| zAR8o8_Ig<=f6}6chKBlm`}XyIV)Cfd>3`-h?NKePn{Vv~!_k2V2*G?8bRW{efgn_8 z$+kR#K?yMAfBYmZazpbvu9|sK#JYP13@2U({UL%9^Z=6aOf)8nwX#Rt8CLo=v9YlMPR)z5N`L#h zvhp=n1!l-ov5W{rK)oMAB279J3PMwftkv|j3t4n_1gP`v+qYM+PfMmKbtHn#J?F3|VL{(K)#RCQm z@Nop_xuT+?O-e;D(O8L@@(9!re=sKbJB4H}JE+*LA{NPNmoH!5+Yun|n}0WNexU>) zf@AvWT`->V1LMgakAc)1xbyD;_rq)~Qe%Mo&kW!)rlHnN0b^*A)RE9lAJ(_XONDCV6FBKS0|1S0Bzm6^)-ip3JMCo zl+DBtj-W{bW5!@C8!)#y}ccgK)UNFfD+Dd$s{SM_!itE;QiuUoh76^DTG^78&E z7a*bWGMKWWPt56aEWU4Jh}m=}!|V9Nfp zEoyNYZ?p`O15M&G#(~&$OV%)7Sy@@)>+9Ri5uh&F+1a1EJW)i`vQ(!4U$74N{M9Hc zfxo^Ki_e8%y0!pJS3d;Pl^8Hxo(ZOllMqsOhmeeE!$7D#CwroZ$?`>H;p+&{^O>2M zbJe`HY%criQB69!E}Bs2=zZGxkb-rUU%-?sf&n+pp8{t z(kBKUX_#V@YIQ3rD%z`rnTcjCm~xk4#r_UL3df3lBIZm(5_t4$cUTn@SYv`!x)~nBq88b%H5+u_i ztLv6Nu40k882G$3AnHri*j#RlTGz1jlAtXV0EZ!@2cib8Oplu}tl{1_lPcR$5wG-0nx7L^Bqp-+`bx zqi8snZrmhyasB%Bl7N7Kp)|L7^X9ehkp%3(8$bMK&6*X3b()TBx2>U{ZueO3CMX`x z?SCPi#$HlVqQ`3CPc$bsxAwQ0GiTBYTknk>6;XzI8x`lgR6D=V8=CERjIDt|a+@;PW$x>c)Ik>>Ob3k&Ne=d<_jC_iajFkHh%ngdYU*8W$>W5znnjR z{wzg0@=vTic%wvnG>gt*Q9H+_YQUV=Hc(}-^Itrhu;6w2ZeTQ4Z+{Th71`J z84(dN12fsVA7fj-eEH(FYu7HtB<^opwrp8OLO*ZVuwm(n6)P6eF_=<(G;!j@8FVi7 z!L)_?45Dk$wVoC*j$WwLnSQ+>iD1#*zkVnKDf)SNdA)%$3}u9;r{|j}qnNx&-=X}T zj-g}OIsI54eyq>VPwfkr9`p7oZ?=1)8+*%C0Gl*9`CukN?7IMVOgDCp_f!2As@6L8 rPLIC3%!_G6XZExGU1siTI^6#PqN<;!7yvL-00000NkvXXu0mjf0mvxy 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 0cd6975e372b1dac3780a51d50453c42d96e5602..933b6c07c0d04d9c7f507bca429adf615e8982be 100644 GIT binary patch delta 942 zcmV;f15x~u2gC=EB!7!ZL_t(|+U=QJNK=kv3(eX*yPf;_&tJd)E=H}950G7I3t}9vuuvjc*+5jLjM5OSX0h*ecjG6$Dr-wlCx%3I3 z_{V{NehP@d=zkA@hymaR%peS1OsNM{1|U)6p<5e3o_eJ}0BO7fLhb8-?QQ_V&*%$4 z@s0v}zXrlLSA*beNqHDm1%U8g;QIDJ__h(kch-V3J*Xo9MF7EZ0>T|=-ev^u(LMz7 z=>z~LE9w1pU^|V#-YY|hG7v{wqRp%W00Q#Yer(t(V1FN!VEvb(%0c-)G_R#Z)&P{? zJK&z0fbA*<_F+jBf*;tM^yH-~01>@7-X8+4rwB8!>L-Laauxx+C||U(siJElO#u)Q zB=^u0*W|){bS>xd!-`$8bT%Y70RA(vC|79Bm%2KnPUt%0Du}cG7aH z2f|HhtAB(P#tHn3ZCLvi!1WjX9l~CW|7`+gW<+B>pl~34xD4X!qd3zZ24T1ngu!~8 z19rvBDGt$FiCMDGX(-JO08t{-VP-AHZ7a_ ztO1blN8lZeXnr>+-v-ilDv=!kY-stD6#)){{P{*&k5#g>l;Edv)p;66oT~^U=?_4j z>H*PxDWwrdbpRqVAWgIZVLcf+naenU!i<6vaAoXhF|z=;eI((D*sQEe0J^qMvw7_v z?tf-F17l-jt@I|XeBb~KhGAyRW^+m6Bh0@57TavLld>$+`+$O|6^Um{k_1ktvlG27 zNhSmN6%`d#!^6XNuh+}?{r(`*2k14MN<7o&^Dz#GqswG6ZKU3k{mw^8%d4xax75|u z?X0b>-H{Oeok{)vEcCFIdZC^$8HT($#3uq&0cx4bDu{bYDGVA>E;JiI07c#HJCe6!FGP1bAG?`JAcyBQkJrm{kOIWwGEY?WGOyuUVoS8fk0rl-|ug7yWJ+I z(|J9aQhb=2nriZTy+`ANy7tKXe7-BOSPUqo1lt(4Nm0CSvbeYi;c$4it*vcmA^_Vx z9#2agK=}_yrW7CI01M5{&H0G{?7(Sj)gpk=Xe?kFps}&BP#XXe50sx}6o5)VCOSc$ zf5##K1@iF;M1Kd*K};6d1CVE35b3A^;@R1Y-asf?-n&;d{lv z57lG%5QYG#48n*JA`eO+(q0T?vYVx46qD9_8^fj)0SYmM4gd}NSOK6Qe;x#`yBxTV z0*F`&L3q`mE~88U$RRiI{Z+tq>4EFa2kv1JNYl^QsDH$i4?y(AF&zCo;H-KTg6}&7 zH2PKh0F;D49IXf5mIGXG?oSBe%|)Q%JSv0=s;!dX+5(^illCf(b~f<#>}80aJp8;D zzpn=VaV7A*`!OHR13y@Vv7d#`X8i`ChSMWG)`TNKxoK^MkUaMiu9Y+Kv<4G=Tw^(a+hg+KCW!9KAUX{oj-3Tzv=#)%$rTWM{~nOP45>@3 z#*&z-@gJiiZWF{GJ54!?A$4bYCi-z1_1$Nu4#dbe5MH0aa8kl12hRZJgtySzC}cBz z5FOfwIZ+1U_yr8J2t!9oDGcIU14N(KU`;rq)_(@3&cyQEFhqxsV-laj>idbYL%qb| ziR&6Ve;Rk5@7cSRkV9j*gc|VBKEmL&3a&C_@)k(yTF>CUkPB`JzbA#1tyGk?@ z#kWM?`4rL;R0XPXm8$--R`*vC_a!53owgN~iP9xmnQ>n>{8p?5rA)K-9R;xwZlmNL QD*ylh07*qoM6N<$g53kC_5c6? diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png index 6a03f7628a85fa18c1fd02577770405293a72cf9..c2bf714ac2db5f5c56dac90c2b3dd50254dbedda 100644 GIT binary patch delta 1280 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 D6^Xuf delta 1913 zcmV-<2Zs2+4~P$tB!5pyL_t(|+U;6>OjTtV2LbV`qD?~-5YtRzE6g;j8Cm~0w^nOo ztum{zx~k5QZo!8On#i0O5)Sb`el03Xl)^y5IMld!K&K z;T(N|3ta9wo2~V3&$#!V^FHtId7t0&Jnsh~A^*4kUJHXnKz|}3GgOIGe+#>($cQLh z_&gJ`-s|-qkR++t?RHn&?RK-xX1ijwT5AUf2d|34zwtAE$LVxdb06-@I#`##F^mKr z3JDWFZ^ht^KA(^9R}-Hs%ichQ-xd0?G_p?Ctr?+xHUfN@@cC(gt`dMVAjv!2Xo@nX zFTPjt82-jK0)PAt0GEZq~>R|S_2-Gnw+sH$Ik}WrdhD?c|PyUp$6H^Je2wvDeA(il87G}Ru z$j!!pw}0OvN6BUyI+j4zlWR$K^iH`>@T9^EP5Jrx_m3L`SgULlX5XNob&|`xhpfjJ zk@eUja#nsElpgj1Vu4y(S~iVqfXn6j#c1xkt{oujiDhKXj3;Y$B6-?Ng00pHrmn88 zi&`vShAgn!|cbC>$flQOb%KnM>EsNVzF!+W5CeR(Dz2=ec9TA zpk0sIUqH5#3x|!!Sxi!2z1~G1S7>T&Z9Sq@XRU=|qfusv0Uj$ktKT8p82~>WgVZ@} zgny%O1D@G+8^C`%J3A|Yc| zeqbI^&}Qi|KpwnCj`Fo+zqk+{n5P;s*S`^`5D#Uq1N`lvDWn?k;0Oay#JYkpK(_yl zv|iUFkjZeWfQ4VdY0ID!gdssAduZyqA|jempW zZrTsoN3QFilFO2YnO-x(2z%j^Bz0fX9mJ@{H%C(_5}Std;3y<30X$k1T9vN6>xm0X zNa{SVD-&th+S=Nxm^GpS;mEB&7`K6u;gy4!@wj0+6~@Cu8GiS`!4$Ik`ubz)N#ET< zR##WIU0Z+aT~2UZI4d_GCYCASU4IR`l~t+UQwwg0RVpYb*g3iqha5e6bOma`pzg&S zFXH|-UdHcJ&x>cBCxkK=q;Y^z=2_#EUk}!HTp<_j1}jK+c-C!2c9- znl~a{b{lp0rC@4oY`g@l5BS>-gqN0-^HTthJR7ueVBY7 zmOGT2o4a%LI_OSYwQ5xyT+|fomQr?hVFR-p;J0AqS*v^PGkQyj?9-f_oSZPxdC-ia zqM}duEJoQ$PtglfS24hE8_xAQGmaR%!t8&>82xVQg`272pTCcDF1v5i;s(&3TSbZ&44ipRn?7u`C?_W;oiPP;d&38) zsi~>#q6L+el_uVUqD^=*Ejy9t-GfGh_woc57Z+zS7RD6tt&JKF?0>4oH8nMPswWhe z`Y&D{!)e1~R#a4+1%`(i%ecIs1kxofTNz<8!X=!P1 zG&D4r*&Cdp1Vg5J5Pz)QXez*27wfcGEaqLicD>1C@t9Ml%|w9>Wz*GdTw-Qs=I5=g ztxfD|)gwyNZdN9_V)Y8|D|BI9CX?w4=zfgH;IRz5W*vu8^P{4oR$x`Q9b7dvH8oYC z_+5kh>yfkTK(#t-`$h==#?Sa2>^b%v5!ThTMY|q3%zk)xb-HJONn=c}kU)>TikaJJD*N zh=0pJcxbby)eoN0*^v8GnXUd7AsmexGTZ+EeT=h5&j3Z)00000NkvXXu0mjfsY0$> diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png index 8356999498b45e3f8c09ad2e1d2d6d40dcd43889..0920d8054489e3459ad4cf21ce1577076ea941d5 100644 GIT binary patch delta 2052 zcmV+f2>bWC50Vg&B!AgSL_t(|+U=cbY!qb}$18^r@c_~m%FzN!DTm-u43w*qLIg!L zMTkL^l9b>Fz5umRqY?e0G4V(UBz}=g5L;`x%GDMq1uCR$5U2&A^rqdGc6aC8nb|%* z@9aQZ+m$8E%tH5hl7D7D?PUMId7ooub|xZ%f`WpAf`WpAf`5X7f`Wpgn*e~`#&#fT zBdQeTM7dEeV;fGo^P8Q97tE7^9lf#w!UR+~3fkJ*z~}Rk3^6}Y_UU-=|2;f>#QBjoXN5877U$G+}cc$RZ+UTh7BIb!A%Q93{ zRD5f;|Gn_b9e<24!%b#)uRGq<*VkWKv}n;2W&(H|zqr}hiI2<<2*Ag(L}O#)?aa)~ zShLK33^f3Ez!8Ap05ml<@$1&Di#NP`@brUvng9e3!0B{yt5>g1FuZ%*DMQoSHw+yt87Bmkk1e1GLgx z_nYt8{(r3H-46k{BSiq|^g2vEX#9>i9fCjo@C3k)yf0tgg8lwj;C9CO0ieX<4RkKZ zmSL+VANb#20PdGqRGc5euCbVYjt~ILi>~WB@CTFe=tuK+#omR$=S&ApY9#=cN_K;I zVman|JnDaq?F2zOvz|^zTPkcVWyeNrInn$*v44Kufv|_ApF;$|(qXG=FXsJGz-NsF z?zfShAn^NUfF?E(0L$`z%U>Yue;)Yk5vY+}AV?+a?Vmxy1%M_tfKZTvMRpjjfDv6G zWMlfNIYI!e8MZi(&aDAHcNlOCKsOMCyg4`#HxdBzi>?CRt3P6XN3-|F1cV@+&(LcG z0e>)i*s9M1{_r>i5aS2X9fX`Qpwu3vyCO{gaV{*n$7cY4U?}kWhjxL$8xVw}EdA6I z08@XM%mFc1)AJ~5Sy`ka_YsIU8*DiL4OWgO4U{nj*UP7ksut3{(lJj;y^t47Kp{~ zf>^W^KQ95X@NLv05c3y+aAY2)s0E{q!sV`W+2vAmn4}$&dB}xL*i+J44XBBY(c0 zif~ZFR>dX|3KKvm7=r+Y2Y?V2{7TqA9@ORw)CC1obk)W}ES}RrJU$5_j6(>c+aVmg z4+wkP3$wQ}%a+#kkq4l8%0Vi@uI0ol2;fBnLVREdhwlMl{|JyTZM6K3xSjz3dw1_Y zKY(<8IY{T0;o!9dVJt>10P*ZREPu$!*j~;+O~qoGh@A*vcxiN*9LsI3>UMI9G#C5R{Ig2vsXN!YRht$J(c z!rTFZSTF_DreZo3Vc8G$wt`slTG#G~K{ytNaCXwUAWKh6HyrBFqDHktIDZ-q-g2CD zH7^0M@`{-3Sk<9B8g_RjNRAI|ExKU|Ky5yQZ7Oy`$0v4zAf2777i#*Os^zDqKW?8B z3jGkoqN#dUME?`E{1(JZAfCaw;AB!egcC1;a_fLC_y31C0CtY(+IJwHdKHiO*>@p$ zE4GBJ=!VxdVeSS_$nPP5d4C3kIhc+zF)fMor~+FCugV>meinmxdLf9#^Fg|hu3syr zXGPd@QN96N&$Za;q#}ej^_8Hy%jjVp_T3M3P&ZvFS&G}``YCIAT8f>6*QHO;`1f@P zO7-rL-F6a|090oYNTq8)I=>3M*Ed^sL7f0}+j@FI{`(sQ@F8x$)_+e|(*v9Aye*~m zBFGmvV7vLb?dSFh0Q(2bjh`_8e+p{Lg@-op_uTt}_)3tke1RQLfo<1x2|&let0r65 z!(4QGEC5Yv0`JXj{+ny*sfl(2&_HcEqffu|*ve1!{1OND5`t&S%E~sYs>)u~q_F*v;r}^tsH$zu8;{2Wd3kwTnP(9uy}*He$&;z6 zsfpDXilXQcaHlF;47lU47W06;#)^5uym2@jwJ9kn)6lc0%zsKjYzg&84bRBPScWU1 z*5&g5(T&0%EbX}6ZYV7+ty{Zx?Q-VTRa;vtpm<{&PSSsKRaKRnd6AWswR`sL+4Gr480^ delta 1964 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 SdMAqj0000seb@&NhKq=od(X+^thLvLd(ZHn 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 VFUDYKu(L-8Ffq17R^Pny=s!@{HUj_v delta 3262 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 diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png index bfb2e1dc1f4bd44bffc91163402ca95678f3b444..724fd51bb3444f4be2dd7f3a3f601e9ef506d79e 100644 GIT binary patch literal 4940 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 vB85c-#zmmAhRfXwG^yG8AM5vVx#RxRN{<4 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 G{Qm&#l4lnH literal 4523 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 diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png index cff57973ec4e602dd3a9492ad6b77b3e13d34f2f..6c03ab8a890f1f94ff32f24c5bb3f2bf0b7039ba 100644 GIT binary patch literal 7020 zcmc&(c{H1Ozpv`{ww8vf+FKN@twtLy!gNZ4PMK6KwS)#$J5zfEoz4&?6jg?n8LC=A zL`#(iNK5Irh; zbl<*xqLvnBH}~xmssw*W4go7|))&t2+b5@QX?FEiJB2K$OeSpIdabzKzhO~eVp476m392|fsEs)&uBjQRaN!4 zh2#F)7W>a=M%;~U7}qM8i||%cegA&@`Fs6$SW3@ke&wt@H9~BKv)L07%W-Zv2pI7n z`3t4&n?Eg(hBxjLy4JYwfQXRr@e2n;j$b%_;rqtp7j_qggoT9vxdATzYXe+7AOfB~ zAhNgd{r?uTxAAXc{)hZMF?)*tO$;dike&9N<{R<-3Gp8e+$5N9HZzc#OI6a~|1{)S z&E*V4!)NF3^3J#)IrZb?%qCu5VI&t*L=H*l1}#%-Yrj)xYQ-^;{%v9IipdFZ$%;~% zUP0E04!nFequK3sgLp#x8TY@J)*rEt=@-qt98b!Zvw1Dh12kNv6PBH%fAjI4>!Y_L zb7BMgt%$=X0IdG#^d=hHH)Bj4(;QYxm6VhL?V;6Hvh5i}iXt&zt^^)cG<6L;Sno}= zDA;)y{Z{Ni*#({}@_P7ZS#TYb<>qu8_U>6o@K%R|&#K+}XWWrf`wzLkt_$)wv3yxj z8M%%sSi#1e0L_R{l)t-ObeYRGSv9)Xlk|X6sPd+xeiT zH{u6HgdPT#Ie31w_KR_RZ$p+_nguvn_HUNGX4=sS}hf-Gge* zF1pO&@mdJ06Eno@tg~68dz*8owR3gXql4?E@H%$g zmgJ=bxyrwuOT)ESC%nK=JnYczO3BZ&QQ)uH3BIx&3HHBt^p=pp?-rZ(BCMTwo^kJ}dxk&{d#a=gPQEoz8QgEdU?fjhS{y(8HO^ z9>m1d&Roqq2Lvyrul-I4;>m2x*Y!v|6par;g>Qp)pAyfysd}Ay>Nn??7YFaD*qfS= z4UPA95X*;H+p$CVtp`VuAmiJ8^-={=_zhB#_AU8=NJ&`w_$4?%C74? zjh(w4$A#o#X-6Zr7I%}9^2XswLH*gIeJ^K)@U#wpJyOWpsji2s zzUH(*ld~PVFwgrSIMC=?B8l z4qR~>N-_}O#*tIy4g`43@>~@8<;DGj9k|h-f4)_tUDdk((0({G>s?psUkWAgJHyit zh5V4TM-k5*1biS@52QRTUB*Bk>3rY~-Ek-OjZ^1o?wX!f1idC9(pJ1=Pepi2qbLL8v@ybzdiCaxGI#+%Z|j{#g`NT=y8@ zk@ig;v#M$R^+*NBrALl+lSUvx0R1Vbfwuf_AtzSaN{WoEeS>I$ObYhfW0*A1BU)UD z8bMUeM-h}iAw*%ni;((&d7RV=rIL?D9|2@~+#KbYJz2&&E0#;<`K3VQ&=S`jP)vaS z-#4C`V%bHX&4_BiSdh04lnp@Ym!@C&M*u_u_WI_t;B`Aeg^_bf_^{R_;lwg?h~^lE zwCiAtBb?~#DOZs;>6$5i$X{OhX$8oO)9xu(y;`p!$#eb2?&|W2mEmyz-2c8{Ervni zdPnZFBX9UttR^{z3^pS>H@1a9Ba1Fy(c+rXws-&-RGp{E7Ek`w9|mYBKOxy;Wd13Bw1bj zQ`ZzHSYbRJS4^NXz0ZKVZeE|CY4qd{9>yQqC-|bsIzd^} z)Os{cO;i`H50@bEODe~LBEU=sw2!slsWHeXR>DuhTDeM<_U5dfKUJQV^HGsNivWyI ziOy1S<*XZ{GG&FBp0wqh$-VWmXrN0AQYKl(id=bv&_<^)l1Dr)Yj(qAJGek88N6EC zK@dlTEXyFt+}akyi)e0&9-u#(H1#4zVh!jD!a^Re7=+qOR>yQxC(EY94*8owJ`q8+Vipz7%Vh16618OqR3Y3@nJT!s!Q}Op??5Y@$e{1Prn9< z;w!CG#ma|gRVUJoEINc6`lOKN=!4=g603j44xBHJk&+{f*a|TCY6IVP!eNJnnO9Qp4D3I?e6@7j z*==CdudvGFD(^w#diCbAM#F`2Qhvj^suJQydc$Dc4LVACAy?_rU`G(5Zf8Z=H7tO~ zMF17tP!BU;S{8H11gkKh?(TYu#3(`d@V(Z#9~PN>4lo;ywA8IAY>vm>_vr4RciD2{ zO5QK$_O3XP)_8a4gbBghXZ(hz`Shg{vyHB}UxR)*dEr1xY6{BI5(xk`Y3N^!aeA zqYu9oi%$l|n@}sSIUX`M;^q^@%cUf~Cc^(orsD+8QcJ*mqm#18pQFTsf>hKKVIR$^ zzLf#}$b;pX5rhfZ#BA&w!X&WF*LQo5cC2yxo~Uv80veVHGfKHXfhPrRkCMSJ4%RA zt%@?F!wHU~ilq9_CrH10!)K(@DuAIdMGTKBwxFYaM=)tIH)LIDaHAyroN)Z%B*#0A znj7jOJ6A|XHmPh*Ll1LhPq#Z*wpQcJefa$?-c&;f=?Wk<)`S%^XPI8Xx1ahw86@F1 z0@+yI>eyJ$Vb*lajm;GZ35gxr{A#InyBFi*(IEX8#9(^5()*g~b={QSYeDyZbeBAf zei(b^?zW13F6JsVBJW>d&tTIlc03h{ww(3PQ}U!D^<}AT%tu^DkJp~Be@2_v@Qsj8 z!Embe%1<=4FRIX~7a9%0_apy_HFE6dYpTb_{*=scGdvI25jDkKNk_YQ)O?qRU zwpcNPG6e+!M`dU54LHwFMjZF&qkrMT?n&g0&L%4yR)*gH`H8`eW7$xUa@WoiyYQav z%~6d#3b8cB#ap!0HDK4;Ny)}Ut70Zy?d1n41D@ok}1FGR8IVw-P z8dQCov&p-J*DrE7$w+8O^K3Vds@0KqrkxZqK$la8Le{>;S^M`aAV(>^%-uY{h%xu- zEKk?MModwN_GbQ$nM11{X+w_@NdeDjcW)%I@9z0?zlpv)ldiS>lVU|DJFNYP^2Wv) zHPRTD7Fz-#Z7Sr_fT_qb9meyp83rCWD^t5s&DsD7LQSxgk}D6Y_0UVk*3XREE)FK( z&UTv0AS`zpo)gI<}3ccPEUgMc3T%dOIrPDZ`ehk4&0{p8Yj*o9F? zoE0*P9#OH6{&Hh8j_FHO0K4O@B99jYlPmnpp=a&LF+-RO=;Q^s!R6(sw;`;{6|G5` z%AdbVf>0eu`DE<|PH{gR8<#W+cZ6Jbi0z>l?M`Sp)ad-w-d|p8Q-|~-X&Gl%lAPN2 zwu+P*l%3TTR+DCt`D?$3Z6_Xo_Lvy=l{@KBb4;C$L((iD5&mofFn z{TbN-b>MISA5hJZiu+r{F|PnE_*(`!THlcm&Zr&^jF5<_%_NT6I|H=%vr}11`T@1T zg-`pdwR#5%7C0xip=K<;hcaeET_*taPdk^2avh4y<^4IXKA2#s<$B+X_euirqUd0s z!=){#`+Ym43#FF2;+{?>Qr zk$)3ceDjAcsF{|4dtP_kg8%`N;^Zu$Qm?mIdTrBwj;{>$3WZ?4=CtKU_y_}8b&teu ziA(aFa9%{jBqCV-*OZ~v1(yE3mB8Ri`OY{0?E|2Yy$#(0P~B=f%#Nf4#N(br&1i=T zXc>rc04lKG%Dp6Z8%%$S#!!2Fqi7k;K_Ppxo7U{clolS@On)%kevG4p{R%O9EtsMm zv@K+_DNq?uJ*8s1{ixAlWX{LaCuj zrZQqfk~C(?>fVg*JE9x@>^LLStt(E@uc!h%c?HbV3CSwAe@3b%f0R>2U!$mRB&ev7 zrb(tLPBoo}c8~l-FsoT!1d7KT)AgE}{~wmDHZDM{IkReS3eOyV#V6ANF zYnq<1$c`&p<WEmkUb+dNL4)Uv|EFb8BIs_ zXNgYeP9^v1Bd8P@3(lI|Ie6Xd^(b;I5mFgV8ymNw>0CKQ5>g|rt$v(a8uqpYZ3qF< zQc13wCC(1UR?3jXMI=bq52p^X)8OT`%?aSUrl~)2;dRTo@W!XSSgII)X#4OLYx1|p zTpBwbwv+#AIkrD`_gFuXl7?W%r9VVdj|@}}GjJf!DV9FShV zm2B)%aLN#!IA(1e{4B@DcYs3hR|RdMb~p#(LpNtOw>FlN=g@o8M44b9}cd$g*#xCtf_ccBA3?3IekAet_#qm`5{ zq8W8T=H)xNH+C(kNB!28Pp%8u4sOJ)>nCY%2frW?Q=CEwFmT)OZ=yrC+15}AXZ>}o za(I+Jy5KSpM#1Ld*d^$3uuaDM$}+Z;pu!v8!e(U!Q?wm=#|C4f_t0)Pj$OK~uu!TA zMDFeZ$aWEsV}vop;OFnb7A(x(=k<|q`$AJdCMC#_{CR20=gqeh!9nJg8xfXg<5uu- zYW@9Pnu(Do@HF9Iu086*0Ufd)0D8PMKS;5>p^Yw;Xy*Ue(tkh-Ioi-O2EO-HU^#^N zy-15YCqC!~q;ISm2{1`hJYg3rI3nxakDcnJnt2G^HFH)UaxCT=))%Zy^CN3nOZdM4Wo>G1Lz%4PLmeZ9ni^F#tsTU$? zgE3cpi2;>9U~nZ8pteG$Qdd-hq{+-SHr~zS z`BVTZsfAo(f7&5{+-``C5nXoNWzro`mO;N}GMhs;5Dp)Rhjixise7()=P4=auvJrK z=k0+9DjPI|!eLHX_YXkS>WWbV8bMoeQDo|%3lFHy9N-BvagVs8eZ*i_&*bM3n7J#`T*HiGU=+@`m4(^7}XaMK1!!P|I7Q%HyigH_lSP(b=$m#nt#k45Fisj$GvJ*bs3n463N7V+3kFF2 z`K$PPr~EF4Fs#@1V!>*usi7|~49R%k2C6>bzyC+KsLCo))7LhrnSclkfX1QyP@$JZ zt20$&;yR|BJ|LE1{Vv1b19OEMZLJ#P#bd*xrUa=@>?+Z#;9|V*dy_CAn~X~V{wV>? ze(1mgonKP4wR7KeO>o0=CV2Jfbc=# zZQHgTxOlPal6;&}Xnv4}?rIt%Y1iYtZV!Yw*pwXm@H;TusF4Xj+PsN@ISo`$Mqb}H z?mX431o(fOHU;m<^lj@&2oA7dmyrrpz{&2p(@rvxdya+cqn(4Qj;vE9p-2FH;@iEt z5n6-aFlWxxI+Xh;AtU-Qi1DUUI!n1a_-y6D#^~m7SNzWXLifxELTzD=E2CrL(N!b1 zrGhUxv&5cNP~Eh*g`xc%i$n6hgfmO44RU1gqg-}*NVr5p+Co&YW}>Jy3lv7z9N$*1 zqPH?=Fls9uzL*++KsxE`9bh%=AW)+GFthMMsL-=OTKyPi48n zSQFFygE{DnGQP?)NqxiQ_P|NnP=us>smc^vuGgx&Mq6eMNk2~ z`Rmg#&BU^FxnF3si%6KLPXu4GUZO8 z6Qt}61UooKK#Prv0U>j-_45Ma+GrbOb2PV(D{%5BJPQcvfa1UT8*k>YTDU-+3)Wf9R}KX#Ah z!iXvO9iK|E4O-@7KcAOZFt4bIgYN?P@p9<82;tE|sB=)f4mX00c2Wh|oyRldEQ2Q= z-l*iYxZD?QOzQ}q*a3jJ7W; zmm&@v!PZ9)j{gi?&EERlLT%FygRXccT?Wf2_u-xeP40xUlUg=!Sd=2=t} zdHzeA#%QsRgBbPmspI*eqfvN{ZGzWukZ8Oe=`bRmEZLAIS*(wHPXV&w#HCb9S9L-y z(N!SI5`$ey4=0v}pg*4dC=KmuDSCBg9qoIQ{#v(%5kd4}Y41yT}67;)`0 zxXz7;Vij!tp21;2nx8{OX_n6e%}%2QZz3V^w(_rYFM;#%>(qNYC|d_(a00EKXurgc z>Angqag*Jh3r#*^c#(Q=Am}4Nc;w!=c3?1g_^CglR2&x`wTP)*S6)^qfW_Nu%~tCe zNSqKm;ShYQ6pxlregVqw5x|&{k?S(EaPSh^A(UyN9PP}>)ZhP#Y`;5WM*oPX%4%uq2uqiMoJ^OsG@rTZg{j#q!lz5hiy{w8ByGiY@ixXfX06)%t6 z?mDhr+a*_EWWucxQql_l7g#e?4Xeo5_@SO2I637A1uWZy4o^VE(o{09^E5Fy?4I5 zmYkf8p4=k*(pFplP(2Ej6)eYm5rdMajsTmja539J0x))UDRyo%@%a4AV>zIIBSOxc z5f%D^HRQ?@P5ZT2E{=EtuK!(0?y7GXoO zYv%pAsr%M6;uG;kJYMNR%Xp9v5^g^iT6d=va!QmahfdGKBZJ*{YG$rDI+vdqKJ>V4HPg%mqP?^ z`$Vr{3~G|9ovlOjSL){cQa=?HO)v+^%)YnNoKG%6PR`8)%XK6{;N}KHad60qo$)(t zwb!&vtrIPT5N~wkq^VxROu}WLHX|vI>ZVU;YTy@vrLYWn1J!q_89%Opm0w>uI#Saz zJ;YqNJ2lj7+$2wf{fazzJU@>aYE~Tb-e$S8T)EG%>()ZU>dafNhh7cqX>CK!w8N7d z9{w~#*<$q~S!?3brw_2S&KFDKFpR(5bHwwac_xsR)k+w@u+Ac9`dOf8e0>tku24!1 za*M4?6%l4_gM{Vj18RgjKF(OZ89S|+plViqDz@Vo?vlq;)+C9!tK}IXe3g@tyixA1 z1OB?>J-I1ehq_<$g-6bdYF5VuwQ_Uru z+bm&~C}Ml=Iy(KP22Oit_Z=7hFz}eFsr8V?eh7lLN!Gu08{;(^dYwvQTv<2IL0dz!k2I@Zwgk;M}ABP~WGh)S$U%-|0OI-kp zNbfCQdnYM&j}%XiVn`$FpIISGDum)}wA&VU{R+f}*0gL)`{8Q&ocCso%=#9H9c@I? z$69|dUIJy|gBvFq<<>KVoQ!eh?cs{5V?{;JGaBy4ety{Zyc!3#knzD)N+fQ|zUFol=t^9_+m@Kcv_Hz`?c|mk&XCQd*V-7LEy6XXB(?Ei1~_)| zjwQ_JEm#$poBO{aA2@~0`jlc^RWSGu`KS1V`8C71_QjJP$Pz8A^~M9Gz!4!KxS1Zp zlcN6Prw_arvQU`gTG`mw;YF&F7K?0l=EytBrTKL*`FKCiqV-G(%IWqO-E^{k_+t~V z+D}Q8Roh@EG^kK9zc<+8@s0Gf+NJJ$N`a<^5CmNxlG=Y2lB;&h2rQ2u%N1|n6Y#G7a`QA=HzY@ouyY)X7oH`1KcLL@zQr|a+Ha@QfLbKQnt z$Om}83(f;In!&a_?z6Nd{6zRkb}h%Mvej%M@vt%XH6)&uiufIy)z})>n{G=t1o6_} z+Z~yAD|vm>`N5bTMAnP(d-}oR_ZIvOP`lJANq%o%=2~ZkRlzZ?Bz1v@^14BSAg1qY zW2+H5^8rD8uq{Sb*p%q~%FZ5ov^~($f-%^$Z0_|YjkTe3_-J!D_bwV}wr-~M&Wva3 zjlTnY{H>*)Xv|$RGUhJUpz?y65=Y2x`@C;&=`j7Rpi;HaonkgzuF+C4Bu&i@MRD~Y zoM-bL3JEz}-ap|8G-2~oJBH$in0f{hR3l*fw(P0`9cp-QC(nPUknQXIWXvL3n(Dtw zW;uo`(PnEBsrT-)9{3b0l#!F=4dI>$(yRcswLfgM`{md@vld^=D_bC83qPs{%4{KF zw=daXh@DInP`P`vXv8az$HPly3VQ7JTQgcG^2qvuuOW!T^P0ydBu|JH@IEaYyLDN- zDqKW((B+b)=rTPcsY+opa1Z*6u?7u{=|VkF91gdPcM$S*syDr!S6^IsrlD=j<0>nq zk^-LJf6e!OE{fEe-C^nd#n!`0aXjm6>mPSsq;A*IuJ@Y>%hXe@pPSq#d%Q`lO;_7Y z_*-5{c8H_!_n!5(_>Sn4*hUd)>gR_(S%J1h5>UmyXr1`O+8|!lWMkxhRDg2#kQuM% z^nlbNlyC#A7-Hd`DR>;WGfLo&&AOK;-dvRL3j_e@DRwGn;7BL2hT?rC;&3xVZOe3bz`wK+M(a`wYAMg?yJ0^~mBtW!iD9bz%Zx zV0x=X`#OW;i~_Y3*%o&)8jfu=b}RcE`0aR-e$e?gj=ecT1)C`v%bGi%XiuByNXR|} zR(}Wo(3RdVDlK{yOhi4;g!}jjuy4bzcEbDAwZO!DH(;lEv~7sh7FD&r7 zQC_`%mIJ{l0pQ)%p;FMhB={f*b&qA1)rnDEl`sqU2R7BWEazr$JtbBjj$QB%$HAVw zDO`NhnIHRay9%|>7MR|m9XLFrFjB$a=r}<2q*@;(CvOcM%QQ*Y7a&MreW5D_u0{ZD zHqoN9IaTc>IA=fqXr%m^DuQCiFQRGm`f(Tp1+VpNT;rD~5uW_N)jaX*R< z_z|aKxK7uY1+Hgl9kb?YnDre}i{RzI?kT0cL8Yxix1M7WEl<4{i0yfp>hxC}Xhj;lP$(dxbi;sM$RF1i4CUE9b{~Gj_Ef?%(N6ByesUQkR;~3( zP;%QVNn}WcFNu*(*YK=>+S`Cd=4lY72bZKTkWzJ0xZuwQiumkH*prQbfMys}5=0K~ zICT4K$(sh?1a)9uT9#cSERgFbscvQR<8O zQBcdZc{5RD$c(0k!Kt&1K~fXhHoaO0&lZMCfY>obb?2_f8DxwsebulN6{DtS#4Y*1 zc&fhAoRgyMXaVy3bG4YCq|zp^@G#IKlb5Q*o5wKXOZm1?aS-5bX!5JVm9eISLL50N zPNYh_Z`l{My6j2O$E$<f_sPGt3KBh?%U{>Jo1T`+jCehPC8$>RoiY~1pNaEis7q2a$zW!b4IfojxFb>-x( zgj;;v@caSc48~*`QfOf@njoRx0zq%tiNamXZ2oNpNZ;~lss%5W)tCzT<65qF>NO$I z8y=SqG>KWk0}sY1dlaY|eE4YXt}3uhg#}_Nq)LuS>zgcsRn@G z0Y{}F5TzoIjW>3T-MZ#$Hs6~!U;4T3`Dwda>>kofB%ZA2_zPe(-)}&SHbXn%2z7aY z^H*A3T@!N+C)_tPTQjXl5W18kLGf9< zGz8oTh93K7LfuLt z!S_Vn3-pRPfm5=S_ap+_?2TXZ1}?+fk*K%$)TEK6_cuO@B(nAmC9bARLVp1ynD_u} zl<#mK+@DhiKrO@Y`ISpHN7Qa`L^6?`m} z>!moyS(Vb602=xIie+cqamPcT@YWpL7~l$pa^o*AqrCWr#`xuZ-QY{u#JBKi^uxPL zbsB~@k$DJopL?XT2q;LaZ5s@;ObXk@-D61%uv#4*i3B#>?fDs8TP(0K{6@!}2S8oB z&RFgIi8EkVJST8&iCAxIXsemx%X98V+}RY|UYWtoP66k5V?)b)vef30DfWBlE})Wg z76^`Ev>i-}lJ!c$MejpMTw4w(Wr|)#~oM11|3N?g;LG_Qd^PPv~1O<^O((|DXSR d03d+M+!Sr%Kq&BsO$i{MizepA`R82j{vS~?y6XS{ diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png index 887976ac97375c162efdc0670dcadfac00553f5b..165366b0cbebe37a56f3f761b4bb139fd604ae06 100644 GIT binary patch literal 11046 zcmZ`)1ha4byBS5r%eZIvs^OILJs#YWYe_D6C(zI!?}eeEktC{R4EbZvUtS#G~| zOq}3Uw-GP+Jm>1+-w2O~*g*3svWYWiU3TR^K*yK`z?E2lN)<3H}R2`Q9*Yoj}?Wz`{&ZL z8W-Op?a%uqVm`sSFW_1LYaL188ifO5FP;?t?w7>E%xe8N>6b(5&Z*NgLg_DXsH$)- zqO%&!`sty#o1%LxstgZ@TNlAtoM|4WJF|<&EDg-BA;0E$3_K>SFgq&F^W67d$W?4n z=E*g^^+-)^9qUIH7WXfjDZ{u#_6{oi{8O*N-ow{U8KD>tQZ%nZ4A+MT65bI{l#cOk&r35@Y>`juWXSw^7Nv4v6f?p}Bz1m^c9?-yI5%|I;qMbl=T32@+LCf58;FrfQ78Jf zCE9aSgOnw}Uxe!N(L!1NU)L_z2qZc~7I8Yx>B8;mFv45^TIJm3f9!%2qd1_| ze0Ck2pz_gTirtWUz~DDsYm;f;bqGec0Z;ZpEt^KFln6K%@K{+{nIV+GB4f#f-L(Fa zE(#O!PK5v;zmOI$8KBs105jyp(C5_gx>C_%=d;rObY|r2>%|7ku0Nk6!oW zxB7?pbyZN3l}|vxC4-sRf9zA$X0~|dWX!h$;!W)Nmg^@K2eF8h~@nJ{4tCC zX8s#SS08u0aDHb*TY7ai)Y3QKwSBc1KQ#mlXUGKM6;pFa->uw#PdoZCGl%ifqH+ve zIY(-0NtjXPxfB}3G))@Cl^(+oig(hp77D7lB}2^!A+48wwsb(LEs#>a@geA1@S2r1S1=fL_1lY+MoDW?D0)yG5X>735&PuQ1r2*h(>_-Bq~hG<5ZJv~PJnYaO1c8QEdpe3!QP3Km-WFfbgf6mzQd=FJ=9SFd)WZS_Db z=|BmRwgED?-hbN(N1rq=T4M0@Hsvu6%`ZZBF>#f#1c-$%#Sxr1>*qssM2e?jN))x!JC$m z`b+uMJCD&_YWwV5r&q5Yf7N_biM~L`j1Sf%wa~ufK&kmJT_<5)E8d=?H++WK#VvWp zoI<=NMn=B;?Ciro+&+=YKMpE?F@ufh`!qPs^0J-%c$%lbXr=0l?8vFd{XJ{Qn?E|L z?t6K#2xA+KEjO#vzw>60G;jWr;T*v?w{7N|s7XAtM~do3CER-z$i4(onHgDHa_eYn z29q{^C@x-~$p>vHh#`rb=f|QEeR7U;jQ7SXAV6G8Tl)vmFDEIF;-B{6e6xWW4wVsH3BUR_6mB?fj7~-0Uv{ zI~eZ=%EHwphxOc#_10OAwBH&EPt}4*D^#@|qC~9KKX-Q*0;n3Te}4R3GgQ_Mvum+p z9590sVD>DhfhXn?NN+;j@$3P3?MWxAi*hVG`2__N*}UcsfF%7jGiuUin4aEL_~yXR z!_$gagrV+631a@mRH*2+1k86_WX?XZJyYfco+W$&0%mGZsNB*UT9%p?21@*qAii_Q z<1Jktyr5$efa^)?|9-@2lZ0GP&?`b>j==Tc;6PJb`@6z$#mE*w`QF9FC2RmIYkskW ztY25p^Ti#B7)j&nM*G}Kg}FOr zB>hOVov1{IDU|&6c=B(AWHjb{gBql$<}mO$)?P|fRFtYg8h(WB zT8eKw*^0~cc716R%%YTCiC0m_CAf%du{_MPETX`^yCipznwnbX!~M0QQy?ug$u5Fr z<)&cvw!cZSlDg|>A19gR&j$)rahsO+Ph2n@W%vQwaO?3}-sX-Ro zXxYb0nwy(_km}CK02@GG_lNO?b=G-uCaeGAF|mU|A*&l(l#pt)4i1A{X`tiyR`S~7RyUo^e)->6(5|t=b3>-t}wc)bqr5MueNiTH860s%f zL+3vRCo+8gP!w-D>}f6wy`L4Oz2~J!bp7xs*0^F?qUPkXOa3}u)&TxB1F&syfDOsc zocdy6>n7GsI9P5BA=bp4BvwD{z4@DzYQv#qXP>3G@KkwxSi^cYYz{zqqQh7XBp-E} zkN~x$n%HTLkpk2XN=r+dTDN-SMXh|oAKf0fenc#E@5dZjoEI4Cc`{_!S!q|zmhaMp2A1SF)##OIPs{%bw3~BiaW9ZrTgaKMbIQ;T|AORv_xsQ@Y*UN=m zO$!SzFN5550P^fYQk+to1}2nMzfkKe#GmWy$F5w%E0v!5`}+mRN>5O?=kJsN3^Ta) zm^bw2@qEXItVGNhm^9@aQ37PT>8ee8V>c>v1zXd2a4vOr4vtR-c_Pjg-l?A_?w)2p zs@ft4`2Z3ZoQTtZ)jtx%=2dmz-ekbRKZNg92kx{WeHTDx^M;UKKS*IwkfrKnCRH1DAF6VEgfMR-j zdhKc=AYl)DAcO0LoP|J6i8Ii9jIsDTy=?qp9SM8`%fnw5tU09w3K_*VLy7p7%Xwz# z>gsmm(lBW^9@_h3<9fs!RqOua{xl~9+QaNQD5%1v7A+pv?{L+F3}}gFLOl2kO~+i@ z6#l-qoBgSMWDAfZ0uiM_%_lUIni86y9Vll$d~efnt)N6z(&{Y)lzH;SO8w(8T;3%O zu%R+sesz{+-C_#rA53Y19}dLebmeB^`IgR|KhM_A9>XmiTa=)VKDN^wIPs7M$ELBp zIKyW(fEA1zufyxj$pv0xZGv-#?giQYyfw$8z6N6=`ndjde6rVpXBm(kACkw)V)#t# zZwy>wg7+szkn04S5xYa~(`UC90hDT{rQE2W^){V&FxVOseN$!^a<~8ER;=z(Gw1m^BW?;yF#XMW!FK(N4x`&i(HUJa3Ch)c z5Eea9&}0a=)GztvIu2>Big)O!B?(?(7#uV1gztUaH0$@jq}Gah(PM75wzfx2&Oct! z6yQ_h!uQKFkSavUfVMPILsKS>CK_h`8!XXza?L4AE}=Ngu~D$vv82Qk4aYE#Sxmic z&uX*7NMcxu-rH6dKzBNYT{0OUO;{JuBVRN=Ez`!KM3PY&@f*tJyO%3COnQP$d(jeO z^2`7}IH=+|l`rn6%K~^jQ))0os`#n{V8mC^7#Bf^F#jbFRJwcC^aPq8Bfv$h3IhpQluabZKW@E|kK%Jv zFnr4QFc=Xk1|Wbxy?QQ}R2=aT5LP$=-0t-BF2QrKIW-n8X4lFJkvOfC~eJ*U0^$ z(YSuj@09T0roJn^whIh`e~1U1m6n!bQT$LRD=kq11S@wDMT<{i#p*<6j!)|W&i_*Y z=d!8MB{Nod{q|^CPKUIYmcp$Y9Y*95owW0oKJv8Z>uv#fzme zWEOSie5OB(XJjs#b`A#Q^OG&%%3IQkUucnlfHCH_ZBeNU>{rc-BZ4u!|XVS{OD zX;W#a$og+=OA`|l1>b}jcbi@NP0U~bnWC~USQ1h@@&`^&XI%` z_M^mDSypy-M#TNqCa{Bz8_1xyO8P!M9m&H1kfr(Y!k71n8A17?YX?t16nvWpaLpCN34zucEDucA|XJJ!BAlFb-%JlSfq(K&*LsSEIr3d?q?_faR z*b&9+W?^<3J&KSg2wgCvLB1%R~xYZF+?d_)i0vt&ev{}xQNX~jxkF-k1$Z?~D!|TVb zXI2@K`QSD^p{D2Pm90~ooJK3n3U1m`iM-Mdzg-84qo(lNvpj~eMydXBgn7o30pRIy z30o#c4w$Y~+?Z?{swV}OS5W9hC2$qzrsWpNhg}I7izvMTz5MxHHI8r~Ri+-j(ByR- zgSms|v~`bZMxe<~47_eDt$q#xNd8W(2XP7^{IpS%g@tAA^Ap)Olc%5ut8&^%hU+V8*A#!aSO@$S8jduHeW+il&W1-}^;C-YXP}vt{o_W&Qk|uM zSi;r{B?#%$Kba>gOfL57d}k^O@hZ|;WITPbFLQjs_7i5VI}IMf<$I=l-MqWQlYy0$ z)kBSG?FWci6?)lKDxUOMmE0K+fB%Z)dh(xR(fY@IQcaPv1W7KSi-Mm6SQnBwXkZ!k zEn$DAvr`7l#8iw+bE#TqG?`!b^qX=R_3)4Zu*Ji}W1g3E-k(kN#Fx?v8FlNd^-$hr zS26%_&JeQFIm;I)E^N>IulzNk6JC(4oT3(^v+U`&yg`sWpaJ@U%g@qO_7w(-)D1v1D#O#QYhf4hMq{G zwY^7tR0;yA0>BcSoT%N;e6@sp@E(rQ6Oy8=vFjzIG${% zGxO=BLD=))XZ6<=M@BNTQz~pmK8~7tWOk*^!xr-rOB9m9-lNFE$u03N*Z8sdy)s&u)8GUv z3!#FIjg8sfE0--WCAN|YoLWNq7eX~5!O=>rGZt!Mng0=v+jvBj?!qL{bn6UjczdPM z(PoMtw(1-cH$)@l4H21AL}wUH58y>Q9qsF7UNFGQ=QU*p7e5x54+xSg&%wNTI*21Q z+dt|=8Je4zq@z9NLNz{CPO^fX$w&Woz4_&3Y7C-{BH5tcr9Xe_8p8xj4arSU)1bvD zFaUL%s+E4hU}*Zy_|IhH9UI>K!h-eV<8@zOg2lz@sZY6e@O_^3V>53e5u*%6%u9m? zJTxfmR#P|p{w_q-OF`=e0NP?ApKNtNSt^>*Q0?d>gR|YV*3Zs_!>>N0{?5G{7#OIA z4$T@ZU9jnHUHu_*h!9ZF41h@Dak-~A7n}70fTQDC>V)vAX zY8S2f)8wRXQ^@(wHEGP_<72VRK)o97EGG^2=*xGXsYOV;l~}RaulBIS{^*sB-!iir zM5yURXXS9?*_N_fXm6XZZx(FPz^A_5Id1Z@vu}&odxY@PY`s#x&S1MH%KxeY;0Rgm3jqB zY*%PsVpq=q_RRwMdy_5e**Ox#>FnZCGQ=p&kJ`#RWFH?IG(T2nHMl2-KZ!GfyC-4w zkNjxBc=h6emzP)g{5{kh=9M_0{DCl1R$h2;Xb9sn=V`YD_9)ZN`RU;T_jP=yMBcdI z7a)kw%OJXWIlk!v@_Md;=xAsDG1mia`Wf|}Ps_TK`W+u1+g|+4d|Yd}YtupJ!4Oex8>Vk6r+j-7~y?a;Lg~1P*m=8{P9b zqDj<(wkAE->tVqwrht)^XGN0+X{4n#Hh`cl44pZ7J(-BR3tPD=EJvXA8R!NguQsir z1aBKyFJrgR$&$Qk(5}DzWT0bf%k&G4DP+Sx(enO*%yF&gT2hQHHoHB8O+C54vp*Qu z=y+msa&kZdub`U9e!=>ZyR7|;*wE>*B^xub)*4RJLfHIj`qtdsy!?WjLG;xm!!X6T zJM)||a~J=K*Jo)>vwdkD)cD9_n_0H_XH;@jr+Ot1aQ90q32--TTuZa zz{*;7mZ8BE0&Y|l-sTBiEiV_3wqqbo`b0WBcnsVdRk%O=CXR)L#o*RuOHG2Dxn3J; zlRroFwZ_a~3nTK)uN{xjJtzI%mqT$uq@onE$1?L{n*zK{M-`;UOSI^iJ6_ETMf69_ z%=XOnVD!Xc9#n<{6zd+PpAa$jDRqg!2nGT3y~Ol1Ox=K7FJf;KivXOq^wP*$V_jAzo0tqXbqRY5gonq^xg6Sfb$O5d+sqE zFdIR+w7lQ%EP5{X>nu|R)8|-6*$F+S3#G|pW_&^5W{a@Cbaf-b+Q*#mPGeKQROfKM z^wWu%nK6MG%>Gebd93=!rQAzlb^Moepc%KIpuoVLEg%f`bg%rM&7jIVQ=Actn;Kj! zBuvF5JA-de{OO>6Am&Tt?Z2EupRG~;Qf>p~>$F+!;7cCR-hVXzwt%=E&++v_Xhuhp zs0n;vRV|r->r_});+=n$UEEt^v`ri6Z z<_fnLy*WS|03SHHxN;m12&76|I~Si`5yG+oco%H#avWUjoA^ zg%SJv(nkVEF<&&$W1J9i8#sPSf6h#!PC(xa!uubHX{4)~u3W!i^wm`Td6|Po)QlF% z0?Vt}?7mmGXaDLG`cHWALq~2O6@q?^lj4l1WDqJMEznt4jLB>MHJrBOG_f|u>dVrF zQzFH0rkiqIi-H*GZ}N1yuy=8BW_Y}cJ=c!hRIv``iq;q~mpm2^Z#o_GsC~hni~0GL zl@*mjbmwi+amtTQjgcU9s_OcbsTIMdi}uqZAAY%%s7)y{9^d-oM@m|c-}rOO<4dIK zk6&OBP{}b+QU>5HIHLQ$W@#qLmR~nKC~aR1dmI0lQG5z_UhfV`+mgRRBKtYpd}Q|Z zxvX*edN1}ModZ!^!1m$S{?R*8wQ@n12d2?Is#oDiPcKi8p$|D|uW$>4@9)~$+U`~l zBU(iIlig?-5v~y3T)rtIdtWNfxwl-uA&;i=H`2VkN%qv-Y|1D2fu}U@D=OHV{C1}u zg9WR1O4Oax1a26Q@K8k=@H9O2WEz%q`<<$VhIklZPsUk&+AcMd(1l&d?T_?S=0I@B?+;Lh0YJu>>;RNzinaubQ z3|`C2#vDa?`J%($ZGt{?Woib0<^6no^0d0(5zuOVmfu7D8+drJ4z#dAOrpZdp^E8M zAe*qTA*cU)5wF>AwF(N&9K00r|BS63JI@5wz)# zr7Tr=>=xf%O(n+1$1}(YkfhlRoXMPHuk{|(I*ZT_C_JJG*!F6z6QFF>+7s=LZaI!rcF{&jqngP(ky0z-8x+G< z%=1|c$I|-#VMF zKxbE1SM0CQfPjF(NJn){(HQ1W#L<0?jTtjX%nIRBev37x?noxw&?kW-Zb)yL?u>mX z3GIy@dz6%_SfQJiEqFj%)D($re;s)~CAp!lp|LT%rbd(g(tcDfI>cXLnxl9w!H=Gn zHst)fIo~F=gVsYtne9AN%#-dsLk+o+= zM4l?10DIxZ8BP96WRS0KK1d*#>Jt09&bH^SuU~BpjWD$hjj7!aV)ZNC4$Lkg`69ShwH{W=fA7Q%$1*Xb*-yOhCr)kckyxk3)Z@%u5@METsLo9H>V z3A)%bL?}1WG1tdLs5!8%Obwxu0ScVtLe=S6SrrPwNc-<-yno~bFz-_B=DJ0k)+p-! zoE>F1ko=@QvaS?QgtB+ekL}C?1A7KN*attVz7v3pWl~d6;8rhKJA^nHIL&5DlOom! zvp8G%#>U2e!0z^|g7HzmqW=s?k93SkQ@uuyIb&2Pzen^uD7EYt4l_>@r{gP?coJ_) z^wtooTXdz5Q*L-sP*kMnO<$R=K&gG(s*MS}7&K%DoeKMXKsI=Xy_-ILCbR3Yc%ls6tJHa`n?VpTm77X$uoWW#4Mu-O37UZY{yIB5i$Zs# zs0eeb%}I4CtXXGQ@b_-RIlo@f&=0sQqsIK>B8zkwhqImc`-Nl5}+dPsABsX#eW<(mILJKQDQIB{2=Hlj?-oY-b7C`f6+K@Fx}7=Rnr$El7vz) z2jepVlher1WaZ@JfQUgHx&u=s>9vkBnC%k=(F%Ecy1F8q!Ne~q7dfB?=_eW6NY!Xf3AHC2Jp#!ab&@Ch=eBaf~b&bc{TZMb0x>qRENN8}9 zq1Fi{m5U}>{01a_W}uP6i=RtIaV>X)h|!T4yxDxm%sMnUn3(zgy>t5)l7ij_a!TXa zP+XQ|iQ!ps$AK@7U%V8>%>?w-Q48uyOikr z-A0dI3juBjQ9Zf10%GYyDDkU0-F^rOy#EKAjmXX29k#>7(+|Nu6mhqzSTqmX?x6kM zB&PUv8?BP+?M~dVT$N`D6VA2|Fa3F(&xJXoVs-H+O}BjLa~0 z`DTRL&cm+5_aD82f&vMCi7G(;Avt<7PieQmU^;;SqxXpXrO=dhS{W9DGSjIoFe(b5 zYzg7{iWi%Ew7*Y#v+7>YKV}-RJ6)tW6pvvY>QchV2 zY4VJsyKsJ&2pNVc0mi$O`A(f>cjLr(A*U&Ep|Zcf{{nsR!+QW5^!31c=U+|Euu=D+ zR?^1qff;zo+vvz9*A{B0X&M>op}jvsh~H9VvG$glC5b)JIk|+N6R`3s$VDf?U+S(q zJ39EGzbGgunyIoDcF=qDj#paTmxW)X7!*onfJAt3%w1+TKLOV9kq}8i+wL1{G~Doy z*IJ=uSXeeWQQe@RUUd7H5?I}I>P5mJ5 zmdA^8AHJ^R(n39-r{ets?u7&OKJ4dBuDDy)+onai+Dnm{%~rRMkbD~MkHWaE!+WfK zM-e?$2`LhF8c%<_zP?U!e}Ati5peLc%4I6Q#R*OCW}^5<>Q7y6U^lWiUCqA^Z8JRk zG^h{%y7#*ex(~SzyMJ0fR;Bigna30-rXfQ5zX#xYZy!dp6Jzw5IzugmiAe@w76I@?oe9w zMCTI5e1_8K2Q(?+2Jvu&yMFzXrk#vOkxZ_(ovSh+qc`?yFZcM#;1i4&9?lwZgm=+{ z+6%j%b@!nLMpE?be7q3di!T0h;>?BPQlWpaTJmixq6eg*Oc?P_YzlgG7M$qp4+LJKa1FJ$b6v?y-p-yuy ze>cdU-fR%Vr~9Yl7Rk!ke5L%As3J-O_b|5!k*^q@NYt{r>dm>_k?8%e04+6r=vNi{ G=>G$lsOf+J literal 10771 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 DLCkK3 From 239b8838850f0bcd4cb814b62f19978742ce098d Mon Sep 17 00:00:00 2001 From: TheMuellenator Date: Fri, 17 Jan 2020 19:42:43 +0000 Subject: [PATCH 7/9] Removing android.support dependencies Updating gradle wrapper to 5.4.1-all.zip Updating gradle build to 3.5.3 Adding AndroidX gradle properties --- android/app/build.gradle | 10 +-- android/build.gradle | 2 +- android/gradle.properties | 3 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- pubspec.lock | 75 +++++++++++++++---- pubspec.yaml | 2 +- 6 files changed, 70 insertions(+), 24 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 9c402d3..e8d2b49 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -9,7 +9,7 @@ if (localPropertiesFile.exists()) { def flutterRoot = localProperties.getProperty('flutter.sdk') if (flutterRoot == null) { - throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") + throw new FileNotFoundException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") } def flutterVersionCode = localProperties.getProperty('flutter.versionCode') @@ -26,7 +26,7 @@ apply plugin: 'com.android.application' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { - compileSdkVersion 28 + compileSdkVersion 29 lintOptions { disable 'InvalidPackage' @@ -36,10 +36,9 @@ android { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "co.appbrewery.flash_chat" minSdkVersion 16 - targetSdkVersion 28 + targetSdkVersion 29 versionCode flutterVersionCode.toInteger() versionName flutterVersionName - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" multiDexEnabled true } @@ -57,8 +56,5 @@ flutter { } dependencies { - testImplementation 'junit:junit:4.12' - androidTestImplementation 'androidx.test:runner:1.1.0-alpha4' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4' implementation 'androidx.multidex:multidex:2.0.0' } diff --git a/android/build.gradle b/android/build.gradle index bb8a303..6de3728 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -5,7 +5,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:3.2.1' + classpath 'com.android.tools.build:gradle:3.5.3' } } diff --git a/android/gradle.properties b/android/gradle.properties index 4d3226a..a673820 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -1,3 +1,4 @@ org.gradle.jvmargs=-Xmx1536M android.useAndroidX=true -android.enableJetifier=true \ No newline at end of file +android.enableJetifier=true +android.enableR8=true diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 2819f02..63ab3ae 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip diff --git a/pubspec.lock b/pubspec.lock index 795d74c..a48c6ef 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1,20 +1,34 @@ # Generated by pub -# See https://www.dartlang.org/tools/pub/glossary#lockfile +# See https://dart.dev/tools/pub/glossary#lockfile packages: + archive: + dependency: transitive + description: + name: archive + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.11" + args: + dependency: transitive + description: + name: args + url: "https://pub.dartlang.org" + source: hosted + version: "1.5.2" async: dependency: transitive description: name: async url: "https://pub.dartlang.org" source: hosted - version: "2.0.8" + version: "2.4.0" boolean_selector: dependency: transitive description: name: boolean_selector url: "https://pub.dartlang.org" source: hosted - version: "1.0.4" + version: "1.0.5" charcode: dependency: transitive description: @@ -29,6 +43,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.14.11" + convert: + dependency: transitive + description: + name: convert + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.1" + crypto: + dependency: transitive + description: + name: crypto + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.3" cupertino_icons: dependency: "direct main" description: @@ -46,41 +74,55 @@ packages: description: flutter source: sdk version: "0.0.0" + image: + dependency: transitive + description: + name: image + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.4" matcher: dependency: transitive description: name: matcher url: "https://pub.dartlang.org" source: hosted - version: "0.12.3+1" + version: "0.12.6" meta: dependency: transitive description: name: meta url: "https://pub.dartlang.org" source: hosted - version: "1.1.6" + version: "1.1.8" path: dependency: transitive description: name: path url: "https://pub.dartlang.org" source: hosted - version: "1.6.2" + version: "1.6.4" pedantic: dependency: transitive description: name: pedantic url: "https://pub.dartlang.org" source: hosted - version: "1.4.0" + version: "1.8.0+1" + petitparser: + dependency: transitive + description: + name: petitparser + url: "https://pub.dartlang.org" + source: hosted + version: "2.4.0" quiver: dependency: transitive description: name: quiver url: "https://pub.dartlang.org" source: hosted - version: "2.0.1" + version: "2.0.5" sky_engine: dependency: transitive description: flutter @@ -92,7 +134,7 @@ packages: name: source_span url: "https://pub.dartlang.org" source: hosted - version: "1.5.4" + version: "1.5.5" stack_trace: dependency: transitive description: @@ -106,14 +148,14 @@ packages: name: stream_channel url: "https://pub.dartlang.org" source: hosted - version: "1.6.8" + version: "2.0.0" string_scanner: dependency: transitive description: name: string_scanner url: "https://pub.dartlang.org" source: hosted - version: "1.0.4" + version: "1.0.5" term_glyph: dependency: transitive description: @@ -127,7 +169,7 @@ packages: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.2.2" + version: "0.2.11" typed_data: dependency: transitive description: @@ -142,5 +184,12 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.0.8" + xml: + dependency: transitive + description: + name: xml + url: "https://pub.dartlang.org" + source: hosted + version: "3.5.0" sdks: - dart: ">=2.1.0 <3.0.0" + dart: ">=2.4.0 <3.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index ade2e97..e6d5ae3 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -4,7 +4,7 @@ description: A new Flutter application. version: 1.0.0+1 environment: - sdk: ">=2.0.0-dev.68.0 <3.0.0" + sdk: ">=2.1.0<3.0.0" dependencies: flutter: From 78a01135fd93ed2f6c72c460e169a498e6e93123 Mon Sep 17 00:00:00 2001 From: George Anderson Date: Tue, 21 Jan 2020 07:47:21 -0500 Subject: [PATCH 8/9] fixes typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5d2772a..11fe08c 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ ## Our Goal -The objective of this tutorial is to learn how to incorporate Firebase into our Flutter apps. We'll be using Firebase Cloud Firestore as well as the Firebase authentication package to equip our app with a cloud based NoSQL database and secure authentication methods. +The objective of this tutorial is to learn how to incorporate Firebase into our Flutter apps. We'll be using Firebase Cloud Firestore as well as the Firebase authentication package to equip our app with a cloud-based NoSQL database and secure authentication methods. ## What you will create From d74b71b47d70bc2b43f16faeb7c9ccc4c3144f61 Mon Sep 17 00:00:00 2001 From: has12zen <57583693+has12zen@users.noreply.github.com> Date: Thu, 31 Dec 2020 23:08:08 +0530 Subject: [PATCH 9/9] Fixed: Firebase breaking changes --- .flutter-plugins-dependencies | 1 + android/app/build.gradle | 8 +- android/build.gradle | 3 +- ios/Flutter/flutter_export_environment.sh | 15 ++ lib/components/rounded_button.dart | 32 ++++ lib/constants.dart | 15 ++ lib/main.dart | 23 ++- lib/screens/chat_screen.dart | 122 +++++++++++++- lib/screens/login_screen.dart | 148 +++++++++-------- lib/screens/registration_screen.dart | 145 ++++++++--------- lib/screens/welcome_screen.dart | 100 +++++++----- pubspec.lock | 186 +++++++++++++++------- pubspec.yaml | 6 +- 13 files changed, 547 insertions(+), 257 deletions(-) create mode 100644 .flutter-plugins-dependencies create mode 100644 ios/Flutter/flutter_export_environment.sh create mode 100644 lib/components/rounded_button.dart diff --git a/.flutter-plugins-dependencies b/.flutter-plugins-dependencies new file mode 100644 index 0000000..694023e --- /dev/null +++ b/.flutter-plugins-dependencies @@ -0,0 +1 @@ +{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"cloud_firestore","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\cloud_firestore-0.14.4\\\\","dependencies":["firebase_core"]},{"name":"firebase_auth","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\firebase_auth-0.18.4+1\\\\","dependencies":["firebase_core"]},{"name":"firebase_core","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\firebase_core-0.5.3\\\\","dependencies":[]}],"android":[{"name":"cloud_firestore","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\cloud_firestore-0.14.4\\\\","dependencies":["firebase_core"]},{"name":"firebase_auth","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\firebase_auth-0.18.4+1\\\\","dependencies":["firebase_core"]},{"name":"firebase_core","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\firebase_core-0.5.3\\\\","dependencies":[]}],"macos":[{"name":"cloud_firestore","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\cloud_firestore-0.14.4\\\\","dependencies":["firebase_core"]},{"name":"firebase_auth","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\firebase_auth-0.18.4+1\\\\","dependencies":["firebase_core"]},{"name":"firebase_core","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\firebase_core-0.5.3\\\\","dependencies":[]}],"linux":[],"windows":[],"web":[{"name":"cloud_firestore_web","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\cloud_firestore_web-0.2.1+2\\\\","dependencies":["firebase_core_web"]},{"name":"firebase_auth_web","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\firebase_auth_web-0.3.2+3\\\\","dependencies":["firebase_core_web"]},{"name":"firebase_core_web","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\firebase_core_web-0.2.1+1\\\\","dependencies":[]}]},"dependencyGraph":[{"name":"cloud_firestore","dependencies":["firebase_core","cloud_firestore_web"]},{"name":"cloud_firestore_web","dependencies":["firebase_core","firebase_core_web"]},{"name":"firebase_auth","dependencies":["firebase_core","firebase_auth_web"]},{"name":"firebase_auth_web","dependencies":["firebase_core","firebase_core_web"]},{"name":"firebase_core","dependencies":["firebase_core_web"]},{"name":"firebase_core_web","dependencies":[]}],"date_created":"2020-12-31 22:08:20.829057","version":"1.22.5"} \ No newline at end of file diff --git a/android/app/build.gradle b/android/app/build.gradle index e8d2b49..c775d7a 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -6,7 +6,6 @@ if (localPropertiesFile.exists()) { } } - def flutterRoot = localProperties.getProperty('flutter.sdk') if (flutterRoot == null) { throw new FileNotFoundException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") @@ -39,6 +38,7 @@ android { targetSdkVersion 29 versionCode flutterVersionCode.toInteger() versionName flutterVersionName + multiDexEnabled true } @@ -56,5 +56,9 @@ flutter { } dependencies { - implementation 'androidx.multidex:multidex:2.0.0' + + implementation 'com.google.firebase:firebase-firestore:21.3.1' + } + +apply plugin: 'com.google.gms.google-services' \ No newline at end of file diff --git a/android/build.gradle b/android/build.gradle index 6de3728..24ef52d 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -6,6 +6,7 @@ buildscript { dependencies { classpath 'com.android.tools.build:gradle:3.5.3' + classpath 'com.google.gms:google-services:4.3.3' } } @@ -26,4 +27,4 @@ subprojects { task clean(type: Delete) { delete rootProject.buildDir -} +} \ No newline at end of file diff --git a/ios/Flutter/flutter_export_environment.sh b/ios/Flutter/flutter_export_environment.sh new file mode 100644 index 0000000..b35bebf --- /dev/null +++ b/ios/Flutter/flutter_export_environment.sh @@ -0,0 +1,15 @@ +#!/bin/sh +# This is a generated file; do not edit or check into version control. +export "FLUTTER_ROOT=C:\src\flutter" +export "FLUTTER_APPLICATION_PATH=C:\Users\harshit\AndroidStudioProjects\flash-chat-flutter" +export "FLUTTER_TARGET=lib\main.dart" +export "FLUTTER_BUILD_DIR=build" +export "SYMROOT=${SOURCE_ROOT}/../build\ios" +export "OTHER_LDFLAGS=$(inherited) -framework Flutter" +export "FLUTTER_FRAMEWORK_DIR=C:\src\flutter\bin\cache\artifacts\engine\ios" +export "FLUTTER_BUILD_NAME=1.0.0" +export "FLUTTER_BUILD_NUMBER=1" +export "DART_OBFUSCATION=false" +export "TRACK_WIDGET_CREATION=false" +export "TREE_SHAKE_ICONS=false" +export "PACKAGE_CONFIG=.packages" diff --git a/lib/components/rounded_button.dart b/lib/components/rounded_button.dart new file mode 100644 index 0000000..308c7b2 --- /dev/null +++ b/lib/components/rounded_button.dart @@ -0,0 +1,32 @@ +import 'package:flutter/material.dart'; + +class RoundedButton extends StatelessWidget { + final Color colour; + final String textToShow; + final Function onPress; + + const RoundedButton({@required this.onPress, this.textToShow, this.colour}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: EdgeInsets.symmetric(vertical: 16.0), + child: Material( + elevation: 5.0, + color: colour, //Colors.lightBlueAccent, + borderRadius: BorderRadius.circular(30.0), + child: MaterialButton( + onPressed: onPress, + minWidth: 200.0, + height: 42.0, + child: Text( + textToShow, //'Log In', + style: TextStyle( + color: Colors.white, + ), + ), + ), + ), + ); + } +} diff --git a/lib/constants.dart b/lib/constants.dart index 25e5f5c..4ce21f2 100644 --- a/lib/constants.dart +++ b/lib/constants.dart @@ -17,3 +17,18 @@ const kMessageContainerDecoration = BoxDecoration( top: BorderSide(color: Colors.lightBlueAccent, width: 2.0), ), ); +const kInputTextDecoration = InputDecoration( + hintText: 'Set hint text', + contentPadding: EdgeInsets.symmetric(vertical: 10.0, horizontal: 20.0), + border: OutlineInputBorder( + borderRadius: BorderRadius.all(Radius.circular(32.0)), + ), + enabledBorder: OutlineInputBorder( + borderSide: BorderSide(color: Colors.blueAccent, width: 1.0), + borderRadius: BorderRadius.all(Radius.circular(32.0)), + ), + focusedBorder: OutlineInputBorder( + borderSide: BorderSide(color: Colors.blueAccent, width: 2.0), + borderRadius: BorderRadius.all(Radius.circular(32.0)), + ), +); diff --git a/lib/main.dart b/lib/main.dart index 6ea23d0..c24b603 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -3,19 +3,28 @@ import 'package:flash_chat/screens/welcome_screen.dart'; import 'package:flash_chat/screens/login_screen.dart'; import 'package:flash_chat/screens/registration_screen.dart'; import 'package:flash_chat/screens/chat_screen.dart'; +import 'package:firebase_core/firebase_core.dart'; +import 'screens/chat_screen.dart'; +import 'screens/login_screen.dart'; +import 'screens/welcome_screen.dart'; -void main() => runApp(FlashChat()); +void main() async { + WidgetsFlutterBinding.ensureInitialized(); + await Firebase.initializeApp(); + runApp(FlashChat()); +} class FlashChat extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( - theme: ThemeData.dark().copyWith( - textTheme: TextTheme( - body1: TextStyle(color: Colors.black54), - ), - ), - home: WelcomeScreen(), + initialRoute: WelcomeScreen.id, + routes: { + WelcomeScreen.id: (context) => WelcomeScreen(), + LoginScreen.id: (context) => LoginScreen(), + RegistrationScreen.id: (context) => RegistrationScreen(), + ChatScreen.id: (context) => ChatScreen(), + }, ); } } diff --git a/lib/screens/chat_screen.dart b/lib/screens/chat_screen.dart index 42d8b67..8015b6c 100644 --- a/lib/screens/chat_screen.dart +++ b/lib/screens/chat_screen.dart @@ -1,12 +1,42 @@ +import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flash_chat/constants.dart'; +import 'package:firebase_auth/firebase_auth.dart'; +import 'package:cloud_firestore/cloud_firestore.dart'; + +final _firestore = FirebaseFirestore.instance; +User loggedInUser; class ChatScreen extends StatefulWidget { + static const String id = 'chat_screen'; @override _ChatScreenState createState() => _ChatScreenState(); } class _ChatScreenState extends State { + String messages; + final _auth = FirebaseAuth.instance; + + void getCurrentUser() async { + try { + final user = await _auth.currentUser; + if (user != null) { + loggedInUser = user; + print(loggedInUser.email); + } + } catch (e) { + print(e); + } + } + + final messageTextController = TextEditingController(); + + @override + void initState() { + super.initState(); + getCurrentUser(); + } + @override Widget build(BuildContext context) { return Scaffold( @@ -16,7 +46,8 @@ class _ChatScreenState extends State { IconButton( icon: Icon(Icons.close), onPressed: () { - //Implement logout functionality + _auth.signOut(); + Navigator.pop(context); }), ], title: Text('⚡️Chat'), @@ -27,6 +58,7 @@ class _ChatScreenState extends State { mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.stretch, children: [ + MessageStream(), Container( decoration: kMessageContainerDecoration, child: Row( @@ -34,8 +66,10 @@ class _ChatScreenState extends State { children: [ Expanded( child: TextField( + controller: messageTextController, onChanged: (value) { //Do something with the user input. + messages = value; }, decoration: kMessageTextFieldDecoration, ), @@ -43,6 +77,11 @@ class _ChatScreenState extends State { FlatButton( onPressed: () { //Implement send functionality. + messageTextController.clear(); + _firestore.collection('messages').add({ + 'text': messages, + 'sender': loggedInUser.email, + }); }, child: Text( 'Send', @@ -58,3 +97,84 @@ class _ChatScreenState extends State { ); } } + +class MessageStream extends StatelessWidget { + @override + Widget build(BuildContext context) { + return StreamBuilder( + stream: _firestore.collection('messages').snapshots(), + builder: (context, snapshot) { + List messageBubbles = []; + if (!snapshot.hasData) { + return Center( + child: CircularProgressIndicator( + backgroundColor: Colors.lightBlue, + ), + ); + } + + final messages = snapshot.data.docs.reversed; + for (var message in messages) { + final messageData = message.data(); + final messageText = messageData['text']; + final messageSender = messageData['sender']; + + final messageBubble = MessageBubble( + text: messageText, + sender: messageSender, + isMe: messageSender == loggedInUser.email, + ); + messageBubbles.add(messageBubble); + } + + return Expanded( + child: ListView( + reverse: true, + padding: EdgeInsets.symmetric(horizontal: 10, vertical: 20), + children: messageBubbles, + ), + ); + }, + ); + } +} + +class MessageBubble extends StatelessWidget { + final String text; + final String sender; + final bool isMe; + MessageBubble({this.text, this.sender, this.isMe}); + @override + Widget build(BuildContext context) { + return Padding( + padding: EdgeInsets.all(10), + child: Column( + crossAxisAlignment: + isMe ? CrossAxisAlignment.end : CrossAxisAlignment.start, + children: [ + Text( + sender, + style: TextStyle(fontSize: 12, color: Colors.black54), + ), + Material( + borderRadius: BorderRadius.only( + topLeft: isMe ? Radius.circular(30) : Radius.circular(0), + bottomLeft: Radius.circular(30), + bottomRight: Radius.circular(30), + topRight: isMe ? Radius.circular(0) : Radius.circular(30), + ), + color: isMe ? Colors.blueAccent : Colors.green, + child: Padding( + padding: EdgeInsets.symmetric(horizontal: 20, vertical: 10), + child: Text( + '$text', + style: TextStyle( + fontSize: 15, color: isMe ? Colors.white : Colors.black), + ), + ), + ), + ], + ), + ); + } +} diff --git a/lib/screens/login_screen.dart b/lib/screens/login_screen.dart index 852e116..d6ac298 100644 --- a/lib/screens/login_screen.dart +++ b/lib/screens/login_screen.dart @@ -1,99 +1,95 @@ import 'package:flutter/material.dart'; +import 'package:flash_chat/components/rounded_button.dart'; +import 'package:flash_chat/constants.dart'; +import 'package:firebase_auth/firebase_auth.dart'; +import 'package:modal_progress_hud/modal_progress_hud.dart'; +import 'chat_screen.dart'; class LoginScreen extends StatefulWidget { + static const String id = 'login_screen'; @override _LoginScreenState createState() => _LoginScreenState(); } class _LoginScreenState extends State { + final _auth = FirebaseAuth.instance; + bool showModalProgress = false; + String email; + String password; + void logInUser() async { + setState(() { + showModalProgress = true; + }); + try { + final user = await _auth.signInWithEmailAndPassword( + email: email, password: password); + if (user != null) { + await Navigator.pushNamed(context, ChatScreen.id); + } + showModalProgress = false; + } catch (e) { + print(e); + } + } + @override Widget build(BuildContext context) { return Scaffold( backgroundColor: Colors.white, - body: Padding( - padding: EdgeInsets.symmetric(horizontal: 24.0), - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - Container( - height: 200.0, - child: Image.asset('images/logo.png'), - ), - SizedBox( - height: 48.0, - ), - TextField( - onChanged: (value) { - //Do something with the user input. - }, - decoration: InputDecoration( - hintText: 'Enter your email', - contentPadding: - EdgeInsets.symmetric(vertical: 10.0, horizontal: 20.0), - border: OutlineInputBorder( - borderRadius: BorderRadius.all(Radius.circular(32.0)), - ), - enabledBorder: OutlineInputBorder( - borderSide: - BorderSide(color: Colors.lightBlueAccent, width: 1.0), - borderRadius: BorderRadius.all(Radius.circular(32.0)), + body: ModalProgressHUD( + inAsyncCall: showModalProgress, + child: SafeArea( + child: Padding( + padding: EdgeInsets.symmetric(horizontal: 24.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + Flexible( + child: Hero( + tag: 'logo', + child: Container( + height: 200.0, + child: Image.asset('images/logo.png'), + ), + ), ), - focusedBorder: OutlineInputBorder( - borderSide: - BorderSide(color: Colors.lightBlueAccent, width: 2.0), - borderRadius: BorderRadius.all(Radius.circular(32.0)), + SizedBox( + height: 48.0, ), - ), - ), - SizedBox( - height: 8.0, - ), - TextField( - onChanged: (value) { - //Do something with the user input. - }, - decoration: InputDecoration( - hintText: 'Enter your password.', - contentPadding: - EdgeInsets.symmetric(vertical: 10.0, horizontal: 20.0), - border: OutlineInputBorder( - borderRadius: BorderRadius.all(Radius.circular(32.0)), + TextField( + textAlign: TextAlign.center, + keyboardType: TextInputType.emailAddress, + onChanged: (value) { + email = value; + }, + decoration: kInputTextDecoration.copyWith( + hintText: 'Enter your Email')), + SizedBox( + height: 8.0, ), - enabledBorder: OutlineInputBorder( - borderSide: - BorderSide(color: Colors.lightBlueAccent, width: 1.0), - borderRadius: BorderRadius.all(Radius.circular(32.0)), + TextField( + textAlign: TextAlign.center, + obscureText: true, + onChanged: (value) { + password = value; + }, + decoration: kInputTextDecoration.copyWith( + hintText: 'Enter your password'), ), - focusedBorder: OutlineInputBorder( - borderSide: - BorderSide(color: Colors.lightBlueAccent, width: 2.0), - borderRadius: BorderRadius.all(Radius.circular(32.0)), + SizedBox( + height: 24.0, ), - ), - ), - SizedBox( - height: 24.0, - ), - Padding( - padding: EdgeInsets.symmetric(vertical: 16.0), - child: Material( - color: Colors.lightBlueAccent, - borderRadius: BorderRadius.all(Radius.circular(30.0)), - elevation: 5.0, - child: MaterialButton( - onPressed: () { - //Implement login functionality. + RoundedButton( + onPress: () { + logInUser(); }, - minWidth: 200.0, - height: 42.0, - child: Text( - 'Log In', - ), + colour: Colors.blueAccent, + textToShow: 'Log In', ), - ), + ], ), - ], + ), ), ), ); diff --git a/lib/screens/registration_screen.dart b/lib/screens/registration_screen.dart index bbc0d51..bcf6286 100644 --- a/lib/screens/registration_screen.dart +++ b/lib/screens/registration_screen.dart @@ -1,96 +1,97 @@ import 'package:flutter/material.dart'; +import 'package:flash_chat/components/rounded_button.dart'; +import 'package:flash_chat/constants.dart'; +import 'package:firebase_auth/firebase_auth.dart'; +import 'chat_screen.dart'; +import 'package:modal_progress_hud/modal_progress_hud.dart'; class RegistrationScreen extends StatefulWidget { + static const String id = 'registration_screen'; @override _RegistrationScreenState createState() => _RegistrationScreenState(); } class _RegistrationScreenState extends State { + final _auth = FirebaseAuth.instance; + bool showModalprogress = false; + String email; + String password; @override Widget build(BuildContext context) { return Scaffold( backgroundColor: Colors.white, - body: Padding( - padding: EdgeInsets.symmetric(horizontal: 24.0), - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - Container( - height: 200.0, - child: Image.asset('images/logo.png'), - ), - SizedBox( - height: 48.0, - ), - TextField( - onChanged: (value) { - //Do something with the user input. - }, - decoration: InputDecoration( - hintText: 'Enter your email', - contentPadding: - EdgeInsets.symmetric(vertical: 10.0, horizontal: 20.0), - border: OutlineInputBorder( - borderRadius: BorderRadius.all(Radius.circular(32.0)), + body: ModalProgressHUD( + inAsyncCall: showModalprogress, + child: SafeArea( + child: Padding( + padding: EdgeInsets.symmetric(horizontal: 24.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + Flexible( + child: Hero( + tag: 'logo', + child: Container( + height: 200.0, + child: Image.asset('images/logo.png'), + ), + ), ), - enabledBorder: OutlineInputBorder( - borderSide: BorderSide(color: Colors.blueAccent, width: 1.0), - borderRadius: BorderRadius.all(Radius.circular(32.0)), + SizedBox( + height: 48.0, ), - focusedBorder: OutlineInputBorder( - borderSide: BorderSide(color: Colors.blueAccent, width: 2.0), - borderRadius: BorderRadius.all(Radius.circular(32.0)), + TextField( + textAlign: TextAlign.center, + keyboardType: TextInputType.emailAddress, + onChanged: (value) { + email = value; + }, + decoration: kInputTextDecoration.copyWith( + hintText: 'Enter your email'), ), - ), - ), - SizedBox( - height: 8.0, - ), - TextField( - onChanged: (value) { - //Do something with the user input. - }, - decoration: InputDecoration( - hintText: 'Enter your password', - contentPadding: - EdgeInsets.symmetric(vertical: 10.0, horizontal: 20.0), - border: OutlineInputBorder( - borderRadius: BorderRadius.all(Radius.circular(32.0)), + SizedBox( + height: 8.0, ), - enabledBorder: OutlineInputBorder( - borderSide: BorderSide(color: Colors.blueAccent, width: 1.0), - borderRadius: BorderRadius.all(Radius.circular(32.0)), + TextField( + textAlign: TextAlign.center, + obscureText: true, + onChanged: (value) { + password = value; + }, + decoration: kInputTextDecoration.copyWith( + hintText: 'Enter your password'), ), - focusedBorder: OutlineInputBorder( - borderSide: BorderSide(color: Colors.blueAccent, width: 2.0), - borderRadius: BorderRadius.all(Radius.circular(32.0)), + SizedBox( + height: 24.0, ), - ), - ), - SizedBox( - height: 24.0, - ), - Padding( - padding: EdgeInsets.symmetric(vertical: 16.0), - child: Material( - color: Colors.blueAccent, - borderRadius: BorderRadius.all(Radius.circular(30.0)), - elevation: 5.0, - child: MaterialButton( - onPressed: () { - //Implement registration functionality. + RoundedButton( + onPress: () async { + setState(() { + showModalprogress = true; + }); + try { + final newUser = + await _auth.createUserWithEmailAndPassword( + email: email, password: password); + if (newUser != null) { + print('registeration success'); + print(newUser); + Navigator.pushNamed(context, ChatScreen.id); + } + setState(() { + showModalprogress = false; + }); + } catch (e) { + print(e); + } }, - minWidth: 200.0, - height: 42.0, - child: Text( - 'Register', - style: TextStyle(color: Colors.white), - ), + textToShow: 'Register', + colour: Colors.blueAccent, ), - ), + ], ), - ], + ), ), ), ); diff --git a/lib/screens/welcome_screen.dart b/lib/screens/welcome_screen.dart index 6270ccf..f8f0e14 100644 --- a/lib/screens/welcome_screen.dart +++ b/lib/screens/welcome_screen.dart @@ -1,15 +1,48 @@ import 'package:flutter/material.dart'; +import 'registration_screen.dart'; +import 'login_screen.dart'; +import 'package:animated_text_kit/animated_text_kit.dart'; +import 'package:flash_chat/components/rounded_button.dart'; class WelcomeScreen extends StatefulWidget { + static const String id = 'welcome_screen'; @override _WelcomeScreenState createState() => _WelcomeScreenState(); } -class _WelcomeScreenState extends State { +class _WelcomeScreenState extends State + with SingleTickerProviderStateMixin { + AnimationController controller; + Animation animation; + @override + void initState() { + super.initState(); + controller = AnimationController( + duration: Duration(seconds: 1), + vsync: this, + ); + animation = ColorTween(begin: Colors.blueGrey, end: Colors.white) + .animate(controller); + controller.forward(); + controller.addListener( + () { + setState( + () {}, + ); + }, + ); + } + + @override + void dispose() { + controller.dispose(); + super.dispose(); + } + @override Widget build(BuildContext context) { return Scaffold( - backgroundColor: Colors.white, + backgroundColor: animation.value, body: Padding( padding: EdgeInsets.symmetric(horizontal: 24.0), child: Column( @@ -18,14 +51,19 @@ class _WelcomeScreenState extends State { children: [ Row( children: [ - Container( - child: Image.asset('images/logo.png'), - height: 60.0, + Hero( + tag: 'logo', + child: Container( + child: Image.asset('images/logo.png'), + height: 60, + ), ), - Text( - 'Flash Chat', - style: TextStyle( + TypewriterAnimatedTextKit( + text: ['Flash Chat'], + speed: Duration(seconds: 1), + textStyle: TextStyle( fontSize: 45.0, + color: Colors.black, fontWeight: FontWeight.w900, ), ), @@ -34,41 +72,19 @@ class _WelcomeScreenState extends State { SizedBox( height: 48.0, ), - Padding( - padding: EdgeInsets.symmetric(vertical: 16.0), - child: Material( - elevation: 5.0, - color: Colors.lightBlueAccent, - borderRadius: BorderRadius.circular(30.0), - child: MaterialButton( - onPressed: () { - //Go to login screen. - }, - minWidth: 200.0, - height: 42.0, - child: Text( - 'Log In', - ), - ), - ), + RoundedButton( + onPress: () { + Navigator.pushNamed(context, LoginScreen.id); + }, + colour: Colors.lightBlueAccent, + textToShow: 'Log In', ), - Padding( - padding: EdgeInsets.symmetric(vertical: 16.0), - child: Material( - color: Colors.blueAccent, - borderRadius: BorderRadius.circular(30.0), - elevation: 5.0, - child: MaterialButton( - onPressed: () { - //Go to registration screen. - }, - minWidth: 200.0, - height: 42.0, - child: Text( - 'Register', - ), - ), - ), + RoundedButton( + onPress: () { + Navigator.pushNamed(context, RegistrationScreen.id); + }, + textToShow: 'Register', + colour: Colors.blueAccent, ), ], ), diff --git a/pubspec.lock b/pubspec.lock index a48c6ef..fb00415 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1,62 +1,76 @@ # Generated by pub # See https://dart.dev/tools/pub/glossary#lockfile packages: - archive: - dependency: transitive - description: - name: archive - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.11" - args: - dependency: transitive + animated_text_kit: + dependency: "direct main" description: - name: args + name: animated_text_kit url: "https://pub.dartlang.org" source: hosted - version: "1.5.2" + version: "3.1.0" async: dependency: transitive description: name: async url: "https://pub.dartlang.org" source: hosted - version: "2.4.0" + version: "2.5.0-nullsafety.1" boolean_selector: dependency: transitive description: name: boolean_selector url: "https://pub.dartlang.org" source: hosted - version: "1.0.5" + version: "2.1.0-nullsafety.1" + characters: + dependency: transitive + description: + name: characters + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0-nullsafety.3" charcode: dependency: transitive description: name: charcode url: "https://pub.dartlang.org" source: hosted - version: "1.1.2" - collection: + version: "1.2.0-nullsafety.1" + clock: dependency: transitive description: - name: collection + name: clock url: "https://pub.dartlang.org" source: hosted - version: "1.14.11" - convert: + version: "1.1.0-nullsafety.1" + cloud_firestore: + dependency: "direct main" + description: + name: cloud_firestore + url: "https://pub.dartlang.org" + source: hosted + version: "0.14.4" + cloud_firestore_platform_interface: dependency: transitive description: - name: convert + name: cloud_firestore_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "2.1.1" - crypto: + version: "2.2.1" + cloud_firestore_web: dependency: transitive description: - name: crypto + name: cloud_firestore_web url: "https://pub.dartlang.org" source: hosted - version: "2.1.3" + version: "0.2.1+2" + collection: + dependency: transitive + description: + name: collection + url: "https://pub.dartlang.org" + source: hosted + version: "1.15.0-nullsafety.3" cupertino_icons: dependency: "direct main" description: @@ -64,6 +78,55 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.1.2" + fake_async: + dependency: transitive + description: + name: fake_async + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0-nullsafety.1" + firebase_auth: + dependency: "direct main" + description: + name: firebase_auth + url: "https://pub.dartlang.org" + source: hosted + version: "0.18.4+1" + firebase_auth_platform_interface: + dependency: transitive + description: + name: firebase_auth_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.4" + firebase_auth_web: + dependency: transitive + description: + name: firebase_auth_web + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.2+3" + firebase_core: + dependency: "direct main" + description: + name: firebase_core + url: "https://pub.dartlang.org" + source: hosted + version: "0.5.3" + firebase_core_platform_interface: + dependency: transitive + description: + name: firebase_core_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + firebase_core_web: + dependency: transitive + description: + name: firebase_core_web + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.1+1" flutter: dependency: "direct main" description: flutter @@ -74,55 +137,74 @@ packages: description: flutter source: sdk version: "0.0.0" - image: + flutter_web_plugins: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + http_parser: dependency: transitive description: - name: image + name: http_parser url: "https://pub.dartlang.org" source: hosted - version: "2.1.4" + version: "3.1.4" + intl: + dependency: transitive + description: + name: intl + url: "https://pub.dartlang.org" + source: hosted + version: "0.16.1" + js: + dependency: transitive + description: + name: js + url: "https://pub.dartlang.org" + source: hosted + version: "0.6.2" matcher: dependency: transitive description: name: matcher url: "https://pub.dartlang.org" source: hosted - version: "0.12.6" + version: "0.12.10-nullsafety.1" meta: dependency: transitive description: name: meta url: "https://pub.dartlang.org" source: hosted - version: "1.1.8" - path: - dependency: transitive + version: "1.3.0-nullsafety.3" + modal_progress_hud: + dependency: "direct main" description: - name: path + name: modal_progress_hud url: "https://pub.dartlang.org" source: hosted - version: "1.6.4" - pedantic: + version: "0.1.3" + path: dependency: transitive description: - name: pedantic + name: path url: "https://pub.dartlang.org" source: hosted - version: "1.8.0+1" - petitparser: + version: "1.8.0-nullsafety.1" + plugin_platform_interface: dependency: transitive description: - name: petitparser + name: plugin_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "2.4.0" + version: "1.0.3" quiver: dependency: transitive description: name: quiver url: "https://pub.dartlang.org" source: hosted - version: "2.0.5" + version: "2.1.5" sky_engine: dependency: transitive description: flutter @@ -134,62 +216,56 @@ packages: name: source_span url: "https://pub.dartlang.org" source: hosted - version: "1.5.5" + version: "1.8.0-nullsafety.2" stack_trace: dependency: transitive description: name: stack_trace url: "https://pub.dartlang.org" source: hosted - version: "1.9.3" + version: "1.10.0-nullsafety.1" stream_channel: dependency: transitive description: name: stream_channel url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.1.0-nullsafety.1" string_scanner: dependency: transitive description: name: string_scanner url: "https://pub.dartlang.org" source: hosted - version: "1.0.5" + version: "1.1.0-nullsafety.1" term_glyph: dependency: transitive description: name: term_glyph url: "https://pub.dartlang.org" source: hosted - version: "1.1.0" + version: "1.2.0-nullsafety.1" test_api: dependency: transitive description: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.2.11" + version: "0.2.19-nullsafety.2" typed_data: dependency: transitive description: name: typed_data url: "https://pub.dartlang.org" source: hosted - version: "1.1.6" + version: "1.3.0-nullsafety.3" vector_math: dependency: transitive description: name: vector_math url: "https://pub.dartlang.org" source: hosted - version: "2.0.8" - xml: - dependency: transitive - description: - name: xml - url: "https://pub.dartlang.org" - source: hosted - version: "3.5.0" + version: "2.1.0-nullsafety.3" sdks: - dart: ">=2.4.0 <3.0.0" + dart: ">=2.10.0 <2.11.0" + flutter: ">=1.22.0 <2.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index e6d5ae3..a4c4cf8 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -9,8 +9,12 @@ environment: dependencies: flutter: sdk: flutter - + animated_text_kit: ^3.1.0 cupertino_icons: ^0.1.2 + firebase_core: ^0.5.3 + firebase_auth: ^0.18.4+1 + modal_progress_hud: ^0.1.3 + cloud_firestore: ^0.14.4 dev_dependencies: flutter_test: