From b6f87305ca60675d4c93fc1115921ffacdbc9f73 Mon Sep 17 00:00:00 2001 From: Sandip Kakadiya Date: Fri, 17 Jan 2020 14:31:10 +0530 Subject: [PATCH 1/3] changelog updated --- CHANGELOG.md | 5 +++++ README.md | 3 +++ example/pubspec.lock | 2 +- lib/getflutter.dart | 12 ++++++++++++ pubspec.yaml | 2 +- 5 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 lib/getflutter.dart diff --git a/CHANGELOG.md b/CHANGELOG.md index 3b6ff8dc..a8d51f54 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## 0.0.1-dev.9 - 2020-01-17 + +### Added +* Added library exports for commonly used files. + ## 1.0.0-dev.8 - 2020-01-16 diff --git a/README.md b/README.md index 743a18a2..6a2edae8 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,6 @@ +[![pub package](https://img.shields.io/pub/v/getflutter.svg)](https://pub.dartlang.org/packages/getflutter) + +

Get Flutter diff --git a/example/pubspec.lock b/example/pubspec.lock index cbece1ef..ab141a5a 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -80,7 +80,7 @@ packages: path: ".." relative: true source: path - version: "1.0.0-dev.8" + version: "1.0.0-dev.9" image: dependency: transitive description: diff --git a/lib/getflutter.dart b/lib/getflutter.dart new file mode 100644 index 00000000..9470df53 --- /dev/null +++ b/lib/getflutter.dart @@ -0,0 +1,12 @@ +library getflutter; + +export 'colors/gf_color.dart'; +export 'position/gf_position.dart'; +export 'shape/gf_avatar_shape.dart'; +export 'shape/gf_badge_shape.dart'; +export 'shape/gf_button_shape.dart'; +export 'shape/gf_icon_button_shape.dart'; +export 'size/gf_size.dart'; +export 'types/gf_toggle_type.dart'; +export 'types/gf_type.dart'; +export 'types/gf_typography_type.dart'; diff --git a/pubspec.yaml b/pubspec.yaml index 18a05613..a5f124d3 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: getflutter description: GetFlutter is open source libraries that come with pre-build 1000+ UI components. It makes development faster & more enjoyable. You can customize the component as per your need. -version: 1.0.0-dev.8 +version: 1.0.0-dev.9 #author: GetFlutter homepage: https://github.com/ionicfirebaseapp/getflutter From 2e3f2f22db66ba1fd7b78b876f0f90e313422fff Mon Sep 17 00:00:00 2001 From: Sandip Kakadiya Date: Mon, 20 Jan 2020 19:00:27 +0530 Subject: [PATCH 2/3] reviewed button, badge and avatar component --- CHANGELOG.md | 2 +- .../android/app/src/main/AndroidManifest.xml | 2 +- .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 544 -> 2056 bytes .../src/main/res/mipmap-hdpi/launch_image.png | Bin 0 -> 5472 bytes .../src/main/res/mipmap-ldpi/ic_launcher.png | Bin 0 -> 1161 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 442 -> 1485 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 721 -> 2858 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 1031 -> 4129 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 1443 -> 5472 bytes .../app/src/main/res/playstore-icon.png | Bin 0 -> 11163 bytes .../app/src/main/res/values/colors.xml | 4 + .../ios/Runner/Assets.xcassets/Contents.json | 23 +++ .../Runner/Assets.xcassets/LaunchImage.png | Bin 0 -> 68 bytes .../Runner/Assets.xcassets/LaunchImage@2x.png | Bin 0 -> 68 bytes .../Runner/Assets.xcassets/LaunchImage@3x.png | Bin 0 -> 68 bytes example/ios/Runner/Assets.xcassets/README.md | 5 + example/ios/Runner/Info.plist | 2 +- example/lib/main.dart | 49 +++--- example/pubspec.yaml | 2 +- lib/colors/gf_color.dart | 116 ++++++------- lib/components/avatar/gf_avatar.dart | 10 +- lib/components/badge/gf_badge.dart | 38 ++--- lib/components/badge/gf_button_badge.dart | 19 +-- lib/components/badge/gf_icon_badge.dart | 12 +- lib/components/button/gf_button.dart | 119 +++++++------- lib/components/button/gf_icon_button.dart | 152 +++++++++--------- lib/components/button/gf_social_button.dart | 17 +- lib/components/card/gf_card.dart | 1 - lib/components/list_tile/gf_list_tile.dart | 4 +- lib/components/tabs/gf_segment_tabs.dart | 13 +- lib/components/tabs/gf_tabBar.dart | 2 +- lib/components/tabs/gf_tabs.dart | 3 +- lib/components/toast/gf_toast.dart | 2 +- lib/components/toggle/gf_toggle.dart | 3 +- lib/components/typography/gf_typography.dart | 5 +- lib/getflutter.dart | 2 +- lib/size/gf_size.dart | 45 +++--- .../{gf_type.dart => gf_button_type.dart} | 2 +- 38 files changed, 342 insertions(+), 312 deletions(-) create mode 100644 example/android/app/src/main/res/mipmap-hdpi/launch_image.png create mode 100644 example/android/app/src/main/res/mipmap-ldpi/ic_launcher.png create mode 100644 example/android/app/src/main/res/playstore-icon.png create mode 100644 example/android/app/src/main/res/values/colors.xml create mode 100644 example/ios/Runner/Assets.xcassets/Contents.json create mode 100644 example/ios/Runner/Assets.xcassets/LaunchImage.png create mode 100644 example/ios/Runner/Assets.xcassets/LaunchImage@2x.png create mode 100644 example/ios/Runner/Assets.xcassets/LaunchImage@3x.png create mode 100644 example/ios/Runner/Assets.xcassets/README.md rename lib/types/{gf_type.dart => gf_button_type.dart} (96%) diff --git a/CHANGELOG.md b/CHANGELOG.md index a8d51f54..11406620 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## 0.0.1-dev.9 - 2020-01-17 +## 1.0.0-dev.9 - 2020-01-17 ### Added * Added library exports for commonly used files. diff --git a/example/android/app/src/main/AndroidManifest.xml b/example/android/app/src/main/AndroidManifest.xml index 15c1ba65..334d1b95 100644 --- a/example/android/app/src/main/AndroidManifest.xml +++ b/example/android/app/src/main/AndroidManifest.xml @@ -7,7 +7,7 @@ FlutterApplication and put your custom class here. --> SP+1c(rj8Gi-<0033(vqt~`2hT}FK~#90?VMk1Q`a5GKfiPCO&rIG15^;Y z_5}%5LY=0nEQLvoG0{dObaa21_BL(ZB(#TZ+QZhqz(7J`(xjq^hiO8a`UHYbj16^~ zprfUug|I#iHZ*CgG=cad=n~tB6Z@X?+k<11q(NTodt;LLD}P-nv7Phhli#27JNNns zy3Zi{egDYNS0pq)!0~BRdr%dYlSCAeJeI%dr2EC~&42tYCw5x_SaWH|k8OAOGwHP8 z6pcK{^5TOk5*V<8PC2v?y?Sf&n}=le$nckfls%0BorvC6_%%-M1DMEJ0E}o$2cMLD z#Y*JwE+sockVnH zp1kqKrQ+JtJJYweote#pw06_;8zfB;n02xb)k zq4Cw%=gCaV$8zRM=b8HwOWpCS4XBRVfa<6XsE*oz>ZlEh!fh-7O9&NKr9)k3=lU=;O5@1r3CczSl?en14me#9GmbSInrV^PeTsmx=^;B7C>0 z^__&`cQJwTr$VB~1Ei$!m%Ijw&vlU>&d_r@PtTvm(GIEflK`YdVvv*+nbO&SVjR4v z;=2r^FZU5W9-I?5U0qfQW(l$|Le)Vk;i8Qe7#0K znST~6i%ChFwjvD$-z}KQ>4q$roG1TchOQ5agg2s!yTxd&$pX?!52oN*_4AJ~1!a1x zx3T6d6gQ^G@9KFFa~$|y!}yjoD_);=wM7G{Duv*_!{mIW$0jDwc`S#SR7SsbIo`Hv~=J%^MlaZRSQ@^j4DzNLVSF*JJL z?XlMjvn^2|vWl9;7^EMfd_Ir&4Mx>DH>L!kJKfzd@Q0~ofJB7B!9mjLG^*P0#DA)P z8$}TpFJ7crEMiQ2Rcs3Y3924zEqnLwW#!71v9-Ko#|{dG0@hko%u5Ae+s` zVnM}XF*YbO)lxvsOsE>*tAOHktC?ykplmjawN2C>3!r2G&0Q4EV<@W1@#Dwo>+5UC zl7@$e>Fw=pa-j8<2q5i{2UT@g`G0-JyNC$hdk!By+;Ey77#N_px3{VI_5Ub-KnlUF z2#KaQ%mOgue%>N7o6R=d%|f|mynv*#k+u5B=G)_h9D#R|DR z-fL~oMnp(=r(<=6MF~h%G1l;fZQDqtQnOaMBUeT!m&zDp8lGGgurY?Nu79ps?>Xmi z&ON%NMm6vTHsIjFgREGwqV`@CMGOuOa=&=Lsr8D8aQE(AhK7dd@9&=ldTeZrd_Et0 zY)Zt%#>dCWX0v$jF~(3R6o{e-=Uh`3RWf1^;1Mkd?Hxmi6n` z$I@06fQV2omkGm=vuDq8;lc$nnM~u`Cl66F3&k0xKlim}RJF(|gfI-be*HT8_wT2( zvvctjt25oJsyMStH4vXWca8%G4v@>`NTpJ-TMr}zs9Y{nE|+631Am-zfQVMwQ$>;OjyLS&&rKhI{RZR>IBw#_R%FUZM z6Nv}aeVZlE< zj@p3gs12x&<^i-s&wuG?P#^nRIQTIZ?3)mejzmO3bHEH1^H`9#@|IMzYygRf7ZE|s zc>r6I8kbtB;REXcQcs2_OaChUFbuZ5)0ym1MYqbZ!Vwj+w7TcvF9O90oQ zzDnppEoRiC$R#dK4m>yTRp;EPAP7Da$4=m*s_9KV>zwYp#)sT^)%Yuf|? zFd>2TsF*B*K5=4q*T|KVA3pWs=eA_-l)nppJFq5!ucfqD3dns#-kt20U;X{UmD_87 zzcYPH&P@2rzAp#^bb_Mvj|{zM`#Lwd(W#5K&7Ci@@q==!hu%`1-x{pVR1R43qovC; zj_4A6vHUJhj(#F~7q4PVVx09l^DK)crRp3z)MG?ZU5%0Nm~^lOg=jK*sdC8M`@=u6 z-S&{AW*qXi)I6%LW*qW1>2TxGt9LfPc}S|q1g^d^w95wOM>w9w`^KM3SY literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ diff --git a/example/android/app/src/main/res/mipmap-hdpi/launch_image.png b/example/android/app/src/main/res/mipmap-hdpi/launch_image.png new file mode 100644 index 0000000000000000000000000000000000000000..a1e819c362989a4741cf5ba29113070a86598dd2 GIT binary patch literal 5472 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 literal 442 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 diff --git a/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index d5f1c8d34e7a88e3f88bea192c3a370d44689c3c..ad9916f560e950b24407ac8b24dd027773b2c4f8 100644 GIT binary patch literal 4129 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 diff --git a/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index 4d6372eebdb28e45604e46eeda8dd24651419bc0..a1e819c362989a4741cf5ba29113070a86598dd2 100644 GIT binary patch literal 5472 zcmb_gX*|?l`~D7-UB;T-*q7{N9XnY=_*sS+y9SM=?8_iSvL;!QHIXbSgUT?rDUvN) zh(Y$kL}Y*F_q_i9-#stRIWNxVKA-DeKKHrq>w&eUF(Vx}9RL7~rY43qKHXhR&MqPj4wPSV&AHHb+9vV(-8(C39LVN>s z&4+JIc`w$3UV{u(6PqZAE8sC(ZHH8KJc4q>6ms09M)moF)KSpz#^J^K6d*QnS0-w9 zYR;(a5e~UOrVz4?h^Y>{D;K zx$ldSswRx%y5s}L0V(!$YNnF*z;G^Vjo7&v z9_1i4J82Gau@Op2N=0uDrLmcr0l-=|pNnMI+8|E2Hv2yQj8bFk;!5qLhsU>48E-A` z+QrIdj|;-iE2Hxy7>6TTxqy*9CNQOTcz>b8U#rA<+5P+c>r4UDK98Gy)JWfuH~JRU zj?$YU?*eXGL6)k{T1ukBHriWDQj#K4hcQJkZ$h`Y7CP< z;Dt-(q&=$RXw|-I{EJ~T3qGXEE{xb>SCSj_K&p(wosxK0ZDs$f&_! zOp48>h7d(gdR*_IUws#eKq;g#H98ucS{N=>)p1KUpE~#)IX;f-n!$23=SS*fl7bNB zCOwHDq0E*&=|j%;V(B5PxCi)jJXDRIXp?(ub91x8=B1a0hK9DGp=i~(hEO7w!)3XG zTB2830^TiBHSQq1S17%MLS3wu8>F1G-wc$rxb}12o&u;zkH;jHnHj1>OBkG~ z3i6}DW2mcERQOFBqo-`0x3I_w4xwZ5daNSB(Z?sPD3+bCb01jxt)S%WF9S$a%|Gk+ zIBcCTjwd2cUA*x0htXE#pJJAH-zA`>JuhO8AI*UK{#ot>ZWkjd>2pw@Ng9%zpd!PCC+}a-n%qUxwo$H`#>7#yG-mJDv%s< z_F%&wT5-6ut0a#>c1HB2vgS#*DY!3^aH2oRKFsNvXA_S@PSo-+Px;}j8cq^OBPp61 z8Y)s%lboJ)4AH$X-N8ZlR=Ulm5->6`@y}uI)@9w8Z^G+=zuWRJu5{aCt4AMgN-!`M(on$jEc}B zQfEQ_(wl&c&bn7Q4OfBwxVS1i!6T;({$hxO&6nc4!NSA2!RM_uumOoEe?hegsl_<5}q}2T!?Z5EckX3?UAv6T6dNUk`5f#oXIJ(&wRr zP_h9g2in&{PQlqA%#IXdw1c$2Q8abT zc=lRw6V*>!Mkm}h)H7Z0#8$$S^u@Ne)!YO?DgXkG&G8J$Yu6F>;)jKwMWWRFa zaI`&Jd#}y!D!&Xws2MP%$Cc3@m1fEmQz0-Sz!eX?53NcghtJkWbodOSpD86<)1_-e z$1Ra~Y;h)7=4T}F_ZdU&)bXcNDU(0XrxR`uF-ZR~l{Z%HnoiVT%?CA{uYDakb3Ze( z7(HydluV@3;nuH;;D>@tgsBj~5NkUqsp=w9<-Kv)ynbeQmi@x7>JELIxTs7eK$SV9 z(Jng@%krJsekXf~!u@GxRA#aYLjW2K{Y7I9B3DQIIX{%2s*r<8h4zM7iXIEP*%Qr9 zywC{v*`UVb#&o-49aHp}oJ3v9<2vNI%qZwAnx#nubmOlVRypGHAW% z>XM}B6v(Cfn!sC98(TJ@c3+F)MEQ(g@Vc^!3F(KbASeg~Lg<##=?PN4C@}?wc0|n- zXmw}$Ug;v!n||_CbKe=AP&39|H%l>K0UYGZuKQZ|NxF&U0BwfDM0Lr)BUTn5|9N|X zuh0r#F(hA13omUW75nP}R&t(}nigN@?vtLLj<#(MM5ktd@v-Ilc^{16kXH(M$E%^K zS&p?dqDiG8aPn$Ju~k-9z9iQxQIVOsc0#J*-75Fp@bI3)vv=ChomjyjZPEiP;&hXz z9};P{5@bRl|1c4XUW-KdSmT}!t(O1z+aqsbgbI^nK|2{5vL<(CQvw#+`O4;Nc*|6c z|F6MJfqZhX9FsGV(Sp+Tvs|(%V8jy$GlvXZS&rV#rI-v=R}v-5^GJa$|s{$P>NajNF+j4Q1h^o z5)QDv-Y31yz%>gPHJ15=N=={`MT9mk1HiSxGODQ+C%q`Z__;PPqEs+7U^vaS!Gvae z+XjAj8Cv}0m|s_NV%Ph^%edO4liau>A~*>Jn3CMjE7|>CHmnr>GH<>~!y231!Z|TC ziGbP5@l$6Pi3t$GXD)mp*7044_bncL9d-o1e6&_-?B*u$=G)K2i$3wEi}rPn2{GCW zBcZP*q@?o9YE_4-v;iiaQ~5jZH(p>$4kw*ai+K*NdbYNjQ77ha&?c%R2e3#e6u%SX<|jwXj}es0qa)WMf9(EE z*uk_XBhKUA?=~ghA>!_0&nGWM`t5}>W)`%hU;SbvKWx}JsNT)lna94-HRHxpl|{0n zm(UnE$xAd~p(FNhpIjU{E^?qCqmZ7zPh^~T`>oKyHjgjIVSP{V1FEG%^-+#+RfRHXK6IKbbwC{?FirURBJr(&=uLA`Yuqeq*PiCe1 z%!M*DCqi|@!&U3Bta2|O`H*2rk580-&S^fkf|0;vtC6|6;^RqyAfg7kz*UiSb~GHH zxxKv|dAQ{2@Cb|#?(b{L$zgtMCR(gx3FuN9h9y;*=W95e zqU$Ks%fp;horGdHUsk`4Jqc?k5qK2G9Wt;ce*Ulvj_XJ z7wP*@AP5SWZnb91-I>_x-n!Di)*pT4=X4Y0hp=DWySwsq$=$s#bn?js*0E#tGb3D& z6T`{J*Y_@TE$H-b@V}s|tEn4t2iyb#A$xf3ne)cG$9B}{)Lm?2Y~WI@&rIVs#yu5@ zOFF{c5tYlc+v9 zoQ#2>f*kW`|BtUx{B91wz=|Rz8rzapn6iv2*;bunp?`!uUgK%p)ctk z&PSsJln$k;3JO<}5Bp-e44?PN^E#Mm(HEndt8EV(;UooxOM2Z#L4U%$@m zA>gd&k~I(wx0auv52X@MJ=Qn`uJt%3TOAJbfaEmZ7*YIA65Q1LOYBN=YhQWd+_4im?+ZFjut7S#xwVuS3aJpp z239MG$rJX0zl5$N>I)tqt#7H%`8@EJ?n^MM9Xw`?O9cA~;V0z5zh4k+a~tW|6Rh{P zyuDGu14Xec`tw_55GgpXUOm+Tbb32F`sB~#3={KBYINSQ7YWtennHVB9lpf2gI|q-g@e#{Q9;+iOT)bzRxAzbvf_mFMJ7C|uC*3;5X? zdT36RP1cHLn{2>NQ;okJrCBdJx=pXpfA`NMyUa9E0;H-)mRCB0!l@PKEhUgfcvkF< zjzrp@2vOc!H-OhmRT*xRkr(t~eje#yN1p+thbJ{dO8m9g$Avq$M)z1fIIw>L{ubCE zHE&N4*n6x=0Y%@e-!}fT{v&XLn#Jbf%T}~_W|c>;{&;0?mqGq7=--N3UG>9*!{nS! z0YmEPu`;^pvfHv&H&drM5wT;>6TK0e_wAXatm>04sTH^k?_xdtsc=&D8o?jGq9ASN z31%(zzGnslhn*=S+>Z9FTUNX`lqGhUX^1%xhIGm|9g?f8LKGp74*{wOk@U^n?B>(| zia{?}V6dRs?VZFAcKi8OY}fdupXQyYoYupO&eF85ILcGz-ih^M{Ze6S(0@-xfys#q zPXep+4^ZCxYz4+nJFEu$**Qkd9<4lI9d-y|Nj&4x$x1($V#c$30yeCYX`Rmk!XSGr z6Q@^Fuja{kH?P)|bWX?54#k@wV}B=sEErN;+t&mKh+FUbKV*KCQBzhq4+BGPL1+Y5 zQ)-A@Y+3)n>LscX*T10ZXfJ$-E#DW69P;(=dR{@l+}=$4I(od6GW$4xR=@1ak5}xw zYzR)?nf0PV$XV6wZ}5(X(D_N(?!*n3`|_r0Hc?=PQw&*vnU?QTFY zB_MsH|!j$PP;I}?dppoE_gA(4uc!jV&0!l7_;&p2^pxNo>PEcNJv za5_RT$o2Mf!<+r?&EbHH6nMoTsDOa;mN(wv8RNsHpG)`^ymG-S5By8=l9iVXzN_eG%Xg2@Xeq76tTZ*dGh~Lo9vl;Zfs+W#BydUw zCkZ$o1LqWQO$FC9aKlLl*7x9^0q%0}$OMlp@Kk_jHXOjofdePND+j!A{q!8~Jn+s3 z?~~w@4?egS02}8NuulUA=L~QQfm;MzCGd)XhiftT;+zFO&JVyp2mBww?;QByS_1w! zrQlx%{^cMj0|Bo1FjwY@Q8?Hx0cIPF*@-ZRFpPc#bBw{5@tD(5%sClzIfl8WU~V#u zm5Q;_F!wa$BSpqhN>W@2De?TKWR*!ujY;Yylk_X5#~V!L*Gw~;$%4Q8~Mad z@`-kG?yb$a9cHIApZDVZ^U6Xkp<*4rU82O7%}0jjHlK{id@?-wpN*fCHXyXh(bLt* zPc}H-x0e4E&nQ>y%B-(EL=9}RyC%MyX=upHuFhAk&MLbsF0LP-q`XnH78@fT+pKPW zu72MW`|?8ht^tz$iC}ZwLp4tB;Q49K!QCF3@!iB1qOI=?w z7In!}F~ij(18UYUjnbmC!qKhPo%24?8U1x{7o(+?^Zu0Hx81|FuS?bJ0jgBhEMzf< zCgUq7r2OCB(`XkKcN-TL>u5y#dD6D!)5W?`O5)V^>jb)P)GBdy%t$uUMpf$SNV31$ zb||OojAbvMP?T@$h_ZiFLFVHDmbyMhJF|-_)HX3%m=CDI+ID$0^C>kzxprBW)hw(v zr!Gmda);ICoQyhV_oP5+C%?jcG8v+D@9f?Dk*!BxY}dazmrT@64UrP3hlslANK)bq z$67n83eh}OeW&SV@HG95P|bjfqJ7gw$e+`Hxo!4cx`jdK1bJ>YDSpGKLPZ^1cv$ek zIB?0S<#tX?SJCLWdMd{-ME?$hc7A$zBOdIJ)4!KcAwb=VMov)nK;9z>x~rfT1>dS+ zZ6#`2v@`jgbqq)P22H)Tx2CpmM^o1$B+xT6`(v%5xJ(?j#>Q$+rx_R|7TzDZe{J6q zG1*EcU%tE?!kO%^M;3aM6JN*LAKUVb^xz8-Pxo#jR5(-KBeLJvA@-gxNHx0M-ZJLl z;#JwQoh~9V?`UVo#}{6ka@II>++D@%KqGpMdlQ}?9E*wFcf5(#XQnP$Dk5~%iX^>f z%$y;?M0BLp{O3a(-4A?ewryHrrD%cx#Q^%KY1H zNre$ve+vceSLZcNY4U(RBX&)oZn*Py()h)XkE?PL$!bNb{N5FVI2Y%LKEm%yvpyTP z(1P?z~7YxD~Rf<(a@_y` diff --git a/example/android/app/src/main/res/playstore-icon.png b/example/android/app/src/main/res/playstore-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..230e3f73dd7c7764aaaf4aa3cea4418ecd50861a GIT binary patch literal 11163 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 + + #19CA4B + \ No newline at end of file diff --git a/example/ios/Runner/Assets.xcassets/Contents.json b/example/ios/Runner/Assets.xcassets/Contents.json new file mode 100644 index 00000000..0bedcf2f --- /dev/null +++ b/example/ios/Runner/Assets.xcassets/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "LaunchImage.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/example/ios/Runner/Assets.xcassets/LaunchImage.png b/example/ios/Runner/Assets.xcassets/LaunchImage.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/example/ios/Runner/Assets.xcassets/LaunchImage@2x.png b/example/ios/Runner/Assets.xcassets/LaunchImage@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/example/ios/Runner/Assets.xcassets/LaunchImage@3x.png b/example/ios/Runner/Assets.xcassets/LaunchImage@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/example/ios/Runner/Assets.xcassets/README.md b/example/ios/Runner/Assets.xcassets/README.md new file mode 100644 index 00000000..89c2725b --- /dev/null +++ b/example/ios/Runner/Assets.xcassets/README.md @@ -0,0 +1,5 @@ +# Launch Screen Assets + +You can customize the launch screen with your own desired assets by replacing the image files in this directory. + +You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/example/ios/Runner/Info.plist b/example/ios/Runner/Info.plist index 2ea12e65..2fcbb3fb 100644 --- a/example/ios/Runner/Info.plist +++ b/example/ios/Runner/Info.plist @@ -11,7 +11,7 @@ CFBundleInfoDictionaryVersion 6.0 CFBundleName - getflutter_example + GetFlutter CFBundlePackageType APPL CFBundleShortVersionString diff --git a/example/lib/main.dart b/example/lib/main.dart index 4cfbcf93..27bac5cb 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -7,7 +7,7 @@ import 'package:getflutter/components/badge/gf_badge.dart'; // import 'package:getflutter/components/list/gf_list.dart'; import 'package:getflutter/components/tabs/gf_segment_tabs.dart'; import 'package:getflutter/size/gf_size.dart'; -import 'package:getflutter/types/gf_type.dart'; +import 'package:getflutter/types/gf_button_type.dart'; import 'package:getflutter/shape/gf_button_shape.dart'; import 'package:getflutter/shape/gf_badge_shape.dart'; import 'package:flutter/cupertino.dart'; @@ -181,7 +181,20 @@ class _MyHomePageState extends State type: GFTypographyType.typo6, ), SizedBox( - height: 10, + height: 20, + ), + GFButtonBar( + children: [ + GFButton(), + GFButton(), + GFButton(), + GFButton(), + GFButton(), + GFButton(), + ], + ), + SizedBox( + height: 20, ), GFToast( text: 'Happy New Year', @@ -190,7 +203,7 @@ class _MyHomePageState extends State print("dfr"); }, text: 'OK', - type: GFType.outline, + type: GFButtonType.outline, color: GFColor.warning, ), ), @@ -216,7 +229,7 @@ class _MyHomePageState extends State print("df"); }, text: 'OK', - type: GFType.outline, + type: GFButtonType.outline, color: GFColor.warning, ), ) @@ -233,7 +246,7 @@ class _MyHomePageState extends State }); }, text: 'Click to View the toast', - type: GFType.outline, + type: GFButtonType.outline, color: GFColor.warning, ), ) @@ -492,7 +505,7 @@ class _MyHomePageState extends State // showDivider: false, // icon: GFIconButton( // onPressed: null, -// type: GFType.transparent, +// type: GFButtonType.transparent, // icon: Icon(Icons.favorite_border), // ), // ), @@ -562,7 +575,7 @@ class _MyHomePageState extends State //// color: GFColor.success, //// textColor: GFColor.dark, //// shape: GFButtonShape.pills, -//// type: GFType.outline2x, +//// type: GFButtonType.outline2x, //// size: GFSize.small, // icon: GFBadge( // child: Text("12"), @@ -588,7 +601,7 @@ class _MyHomePageState extends State ////// textColor: GFColor.white, ////// textStyle: TextStyle(fontWeight: FontWeight.w500, fontSize: 8.0), //// ), -// type: GFType.outline2x, +// type: GFButtonType.outline2x, // shape: GFButtonShape.pills, //// blockButton: true, // fullWidthButton: true, @@ -612,7 +625,7 @@ class _MyHomePageState extends State // hoverColor: GFColor.dark, color: GFColor.secondary, // focusColor: GFColor.danger, - type: GFType.solid, + type: GFButtonType.solid, shape: GFButtonShape.pills, buttonBoxShadow: true, // boxShadow: BoxShadow( @@ -636,7 +649,7 @@ class _MyHomePageState extends State // onPressed: null, // icon: Icon(Icons.ac_unit,), //// iconSize: 12.0, -// type: GFType.solid, +// type: GFButtonType.solid, //// shape: GFButtonShape.pills, //// size: GFSize.large, // buttonBoxShadow: true, @@ -824,7 +837,7 @@ class _MyHomePageState extends State // icon: GFIconButton( // onPressed: null, // icon: Icon(Icons.favorite_border), -// type: GFType.transparent, +// type: GFButtonType.transparent, // ), // ), // content: Text( @@ -839,13 +852,13 @@ class _MyHomePageState extends State //// onPressed: null, //// child: Text("favorite"), //// icon: Icon(Icons.favorite_border), -//// type: GFType.transparent, +//// type: GFButtonType.transparent, //// ), //// GFButton( //// onPressed: null, //// child: Text("share"), //// icon: Icon(Icons.share), -//// type: GFType.outline, +//// type: GFButtonType.outline, //// ), //// ], //// ), @@ -858,7 +871,7 @@ class _MyHomePageState extends State // onPressed: null, // child: Text("like"), // icon: Icon(Icons.favorite_border), -// type: GFType.transparent, +// type: GFButtonType.transparent, // ), // GFButton( // onPressed: null, @@ -869,7 +882,7 @@ class _MyHomePageState extends State // onPressed: (){}, // child: Text("share"), // icon: Icon(Icons.share), -// type: GFType.outline, +// type: GFButtonType.outline, // ), // ], // ), @@ -883,7 +896,7 @@ class _MyHomePageState extends State // subTitle: Text('subtitle'), // icon: GFIconButton( // onPressed: null, -// type: GFType.transparent, +// type: GFButtonType.transparent, // icon: Icon(Icons.favorite_border), // ), // ), @@ -1021,7 +1034,7 @@ class _MyHomePageState extends State // onPressed: (){}, // icon: Icon(Icons.ac_unit), //// iconSize: 12.0, -//// type: GFType.solid, +//// type: GFButtonType.solid, //// shape: GFIconButtonShape.pills, //// size: GFSize.large, //// buttonBoxShadow: true, @@ -1047,7 +1060,7 @@ class _MyHomePageState extends State // ), // // GFButton( -// type: GFType.outline, +// type: GFButtonType.outline, // shape: GFButtonShape.pills, // text: 'goodies', // icon: Icon(Icons.share), diff --git a/example/pubspec.yaml b/example/pubspec.yaml index c4708b13..d940393a 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -1,5 +1,5 @@ name: example -description: A new Flutter project. +description: GetFlutter Demo app version: 1.0.0+1 diff --git a/lib/colors/gf_color.dart b/lib/colors/gf_color.dart index ba9d651c..8b77a3f1 100644 --- a/lib/colors/gf_color.dart +++ b/lib/colors/gf_color.dart @@ -15,64 +15,66 @@ enum GFColor { transparent } -const PRIMARY = Color(0xff3880FF); -const SECONDARY = Color(0xffAA66CC); -const SUCCESS = Color(0xff10DC60); -const INFO = Color(0xff33B5E5); -const WARNING = Color(0xffFFBB33); -const DANGER = Color(0xffF04141); -const LIGHT = Color(0xffE0E0E0); -const DARK = Color(0xff222428); -const WHITE = Color(0xffffffff); -const FOCUS = Color(0xff434054); -const ALT = Color(0xff794c8a); -const TRANSPARENT = Colors.transparent; +class GFColors { + static const Color PRIMARY = Color(0xff3880FF); + static const Color SECONDARY = Color(0xffAA66CC); + static const Color SUCCESS = Color(0xff10DC60); + static const Color INFO = Color(0xff33B5E5); + static const Color WARNING = Color(0xffFFBB33); + static const Color DANGER = Color(0xffF04141); + static const Color LIGHT = Color(0xffE0E0E0); + static const Color DARK = Color(0xff222428); + static const Color WHITE = Color(0xffffffff); + static const Color FOCUS = Color(0xff434054); + static const Color ALT = Color(0xff794c8a); + static const Color TRANSPARENT = Colors.transparent; -/// Pass [GFColor] or [Color] -Color getGFColor(dynamic color) { - if (color is Color) { - return color; - } else { - switch (color) { - case GFColor.primary: - return PRIMARY; - break; - case GFColor.secondary: - return SECONDARY; - break; - case GFColor.success: - return SUCCESS; - break; - case GFColor.warning: - return WARNING; - break; - case GFColor.info: - return INFO; - break; - case GFColor.danger: - return DANGER; - break; - case GFColor.focus: - return FOCUS; - break; - case GFColor.alt: - return ALT; - break; - case GFColor.light: - return LIGHT; - break; - case GFColor.dark: - return DARK; - break; - case GFColor.white: - return WHITE; - break; - case GFColor.transparent: - return TRANSPARENT; - break; - default: - return null; - break; + /// Pass [GFColor] or [Color] + static Color getGFColor(dynamic color) { + if (color is Color) { + return color; + } else { + switch (color) { + case GFColor.primary: + return PRIMARY; + break; + case GFColor.secondary: + return SECONDARY; + break; + case GFColor.success: + return SUCCESS; + break; + case GFColor.warning: + return WARNING; + break; + case GFColor.info: + return INFO; + break; + case GFColor.danger: + return DANGER; + break; + case GFColor.focus: + return FOCUS; + break; + case GFColor.alt: + return ALT; + break; + case GFColor.light: + return LIGHT; + break; + case GFColor.dark: + return DARK; + break; + case GFColor.white: + return WHITE; + break; + case GFColor.transparent: + return TRANSPARENT; + break; + default: + return null; + break; + } } } } diff --git a/lib/components/avatar/gf_avatar.dart b/lib/components/avatar/gf_avatar.dart index 1b969e3d..9a9c0bec 100644 --- a/lib/components/avatar/gf_avatar.dart +++ b/lib/components/avatar/gf_avatar.dart @@ -28,7 +28,7 @@ class GFAvatar extends StatelessWidget { /// The maximum size of the avatar, expressed as the radius (half the diameter). final double maxRadius; - /// size of avatar like [GFSize] i.e, 1.2, small, medium, large etc. + /// size of avatar. use [GFSize] or [double] i.e, 1.2, small, medium, large etc. final dynamic size; /// shape of avatar [GFAvatarShape] i.e, standard, circle, square @@ -59,7 +59,7 @@ class GFAvatar extends StatelessWidget { double get _minDiameter { if (radius == null && minRadius == null && maxRadius == null) { - return 1.5 * getGFSize(size); + return 1.5 * GFSizesClass.getGFSize(size); } else { return 2.0 * (radius ?? minRadius ?? 0); } @@ -67,7 +67,7 @@ class GFAvatar extends StatelessWidget { double get _maxDiameter { if (radius == null && minRadius == null && maxRadius == null) { - return 1.5 * getGFSize(size); + return 1.5 * GFSizesClass.getGFSize(size); } else { return 2.0 * (radius ?? maxRadius ?? 0); } @@ -87,8 +87,8 @@ class GFAvatar extends StatelessWidget { @override Widget build(BuildContext context) { - Color backgroundColor = getGFColor(this.backgroundColor); - Color foregroundColor = getGFColor(this.foregroundColor); + Color backgroundColor = GFColors.getGFColor(this.backgroundColor); + Color foregroundColor = GFColors.getGFColor(this.foregroundColor); assert(debugCheckHasMediaQuery(context)); final ThemeData theme = Theme.of(context); TextStyle textStyle = diff --git a/lib/components/badge/gf_badge.dart b/lib/components/badge/gf_badge.dart index 3802d2e9..8f573cc7 100644 --- a/lib/components/badge/gf_badge.dart +++ b/lib/components/badge/gf_badge.dart @@ -2,9 +2,6 @@ import 'package:flutter/material.dart'; import 'package:getflutter/shape/gf_badge_shape.dart'; import 'package:getflutter/size/gf_size.dart'; import 'package:getflutter/colors/gf_color.dart'; -export 'package:getflutter/shape/gf_badge_shape.dart'; -export 'package:getflutter/size/gf_size.dart'; -export 'package:getflutter/colors/gf_color.dart'; class GFBadge extends StatefulWidget { /// The border side for the badge's [Material]. @@ -20,7 +17,7 @@ class GFBadge extends StatefulWidget { final dynamic color; /// size of [double] or [GFSize] i.e, 1.2, small, medium, large etc. - final GFSize size; + final dynamic size; /// child of type [Widget] is alternative to child. text will get priority over child final Widget child; @@ -58,18 +55,18 @@ class _GFBadgeState extends State { Color textColor; Widget child; GFBadgeShape counterShape; - GFSize size; + double size; double height; double width; double fontSize; @override void initState() { - this.color = getGFColor(widget.color); - this.textColor = getGFColor(widget.textColor); + this.color = GFColors.getGFColor(widget.color); + this.textColor = GFColors.getGFColor(widget.textColor); this.child = widget.text != null ? Text(widget.text ?? '') : widget.child; this.counterShape = widget.shape; - this.size = widget.size; + this.size = GFSizesClass.getGFSize(widget.size); super.initState(); } @@ -102,22 +99,21 @@ class _GFBadgeState extends State { } if (this.size == GFSize.small) { - this.height = getGFSize(this.size) * 0.56; - this.width = getGFSize(this.size) * 0.75; - this.fontSize = getGFSize(this.size) * 0.31; + this.height = GFSizesClass.getGFSize(this.size) * 0.56; + this.width = GFSizesClass.getGFSize(this.size) * 0.73; + this.fontSize = GFSizesClass.getGFSize(this.size) * 0.31; } else if (this.size == GFSize.medium) { - this.height = getGFSize(this.size) * 0.5; - this.width = getGFSize(this.size) * 0.65; - this.fontSize = getGFSize(this.size) * 0.3; - this.fontSize = 12.0; + this.height = GFSizesClass.getGFSize(this.size) * 0.58; + this.width = GFSizesClass.getGFSize(this.size) * 0.76; + this.fontSize = GFSizesClass.getGFSize(this.size) * 0.34; } else if (this.size == GFSize.large) { - this.height = getGFSize(this.size) * 0.428; - this.width = getGFSize(this.size) * 0.535; - this.fontSize = getGFSize(this.size) * 0.214; + this.height = GFSizesClass.getGFSize(this.size) * 0.6; + this.width = GFSizesClass.getGFSize(this.size) * 0.79; + this.fontSize = GFSizesClass.getGFSize(this.size) * 0.37; } else { - this.height = getGFSize(this.size) * 0.56; - this.width = getGFSize(this.size) * 0.75; - this.fontSize = getGFSize(this.size) * 0.31; + this.height = GFSizesClass.getGFSize(this.size) * 0.58; + this.width = GFSizesClass.getGFSize(this.size) * 0.76; + this.fontSize = GFSizesClass.getGFSize(this.size) * 0.34; } return Container( diff --git a/lib/components/badge/gf_button_badge.dart b/lib/components/badge/gf_button_badge.dart index 49de906f..107cb5e6 100644 --- a/lib/components/badge/gf_button_badge.dart +++ b/lib/components/badge/gf_button_badge.dart @@ -5,14 +5,9 @@ import 'package:flutter/material.dart'; import 'package:getflutter/components/button/gf_button.dart'; import 'package:getflutter/shape/gf_button_shape.dart'; import 'package:getflutter/size/gf_size.dart'; -import 'package:getflutter/types/gf_type.dart'; +import 'package:getflutter/types/gf_button_type.dart'; import 'package:getflutter/position/gf_position.dart'; import 'package:getflutter/colors/gf_color.dart'; -export 'package:getflutter/position/gf_position.dart'; -export 'package:getflutter/shape/gf_button_shape.dart'; -export 'package:getflutter/size/gf_size.dart'; -export 'package:getflutter/types/gf_type.dart'; -export 'package:getflutter/colors/gf_color.dart'; class GFButtonBadge extends GFButton { /// Called when the button is tapped or otherwise activated. @@ -84,8 +79,8 @@ class GFButtonBadge extends GFButton { /// {@macro flutter.widgets.Clip} final Clip clipBehavior; - /// Button type of [GFType] i.e, solid, outline, outline2x, transparent - final GFType type; + /// Button type of [GFButtonType] i.e, solid, outline, outline2x, transparent + final GFButtonType type; /// Button type of [GFButtonBadgeShape] i.e, standard, pills, square, shadow, icons final GFButtonShape shape; @@ -128,7 +123,7 @@ class GFButtonBadge extends GFButton { /// text of type [String] is alternative to child. text will get priority over child final String text; - /// icon type of [GFIconPosition] i.e, start, end + /// icon type of [GFPosition] i.e, start, end final GFPosition position; /// on true state blockButton gives block size badge @@ -199,7 +194,7 @@ class GFButtonBadge extends GFButton { this.focusNode, this.autofocus = false, MaterialTapTargetSize materialTapTargetSize, - this.type = GFType.solid, + this.type = GFButtonType.solid, this.shape = GFButtonShape.standard, this.color = GFColor.primary, this.textColor, @@ -232,7 +227,7 @@ class GFButtonBadge extends GFButton { return ConstrainedBox( constraints: BoxConstraints(minHeight: 26.0, minWidth: 98.0), child: Container( - height: getGFSize(size), + height: GFSizesClass.getGFSize(size), child: GFButton( onPressed: onPressed, onHighlightChanged: onHighlightChanged, @@ -260,7 +255,7 @@ class GFButtonBadge extends GFButton { color: color, textColor: textColor, position: position, - size: getGFSize(size), + size: GFSizesClass.getGFSize(size), borderSide: borderSide, text: text, icon: icon, diff --git a/lib/components/badge/gf_icon_badge.dart b/lib/components/badge/gf_icon_badge.dart index a7575555..b194e7fc 100644 --- a/lib/components/badge/gf_icon_badge.dart +++ b/lib/components/badge/gf_icon_badge.dart @@ -1,9 +1,10 @@ import 'package:flutter/material.dart'; import 'package:getflutter/components/button/gf_icon_button.dart'; +import 'package:getflutter/getflutter.dart'; class GFIconBadge extends StatefulWidget { - /// child of type [GFIconButton] is used to show icon. - /// Use [Icon] widget for compatibility. + /// child of type [Widget] is used to show icon. + /// Use [GFIconButton] widget for compatibility. final Widget child; /// widget of type [Widget] is used to show counter to the top right corner of child. @@ -27,16 +28,11 @@ class GFIconBadge extends StatefulWidget { } class _GFIconBadgeState extends State { - @override - void initState() { - super.initState(); - } + double size; @override Widget build(BuildContext context) { return Container( - height: 60.0, - width: 60.0, padding: widget.padding, child: Stack( children: [ diff --git a/lib/components/button/gf_button.dart b/lib/components/button/gf_button.dart index d96f9e25..399e0e12 100644 --- a/lib/components/button/gf_button.dart +++ b/lib/components/button/gf_button.dart @@ -6,14 +6,9 @@ import 'package:flutter/widgets.dart'; import 'package:flutter/material.dart'; import 'package:getflutter/shape/gf_button_shape.dart'; import 'package:getflutter/size/gf_size.dart'; -import 'package:getflutter/types/gf_type.dart'; +import 'package:getflutter/types/gf_button_type.dart'; import 'package:getflutter/position/gf_position.dart'; import 'package:getflutter/colors/gf_color.dart'; -export 'package:getflutter/position/gf_position.dart'; -export 'package:getflutter/shape/gf_button_shape.dart'; -export 'package:getflutter/size/gf_size.dart'; -export 'package:getflutter/types/gf_type.dart'; -export 'package:getflutter/colors/gf_color.dart'; class GFButton extends StatefulWidget { /// Called when the button is tapped or otherwise activated. @@ -88,8 +83,8 @@ class GFButton extends StatefulWidget { /// {@macro flutter.widgets.Clip} final Clip clipBehavior; - /// Button type of [GFType] i.e, solid, outline, outline2x, transparent - final GFType type; + /// Button type of [GFButtonType] i.e, solid, outline, outline2x, transparent + final GFButtonType type; /// Button type of [GFButtonShape] i.e, standard, pills, square, shadow, icons final GFButtonShape shape; @@ -135,7 +130,7 @@ class GFButton extends StatefulWidget { /// icon of type [Widget] final Widget icon; - /// icon type of [GFIconPosition] i.e, start, end + /// icon type of [GFPosition] i.e, start, end final GFPosition position; /// on true state blockButton gives block size button @@ -204,7 +199,7 @@ class GFButton extends StatefulWidget { this.autofocus = false, MaterialTapTargetSize materialTapTargetSize, this.child, - this.type = GFType.solid, + this.type = GFButtonType.solid, this.shape = GFButtonShape.standard, this.color = GFColor.primary, this.textColor, @@ -246,7 +241,7 @@ class _GFButtonState extends State { Widget child; Widget icon; Function onPressed; - GFType type; + GFButtonType type; GFButtonShape shape; double size; GFPosition position; @@ -256,17 +251,17 @@ class _GFButtonState extends State { @override void initState() { - this.color = getGFColor(widget.color); - this.textColor = getGFColor(widget.textColor); + this.color = GFColors.getGFColor(widget.color); + this.textColor = GFColors.getGFColor(widget.textColor); this.child = widget.text != null ? Text(widget.text) : widget.child; this.icon = widget.icon; this.onPressed = widget.onPressed; this.type = widget.type; this.shape = widget.shape; - this.size = getGFSize(widget.size); + this.size = GFSizesClass.getGFSize(widget.size); this.position = widget.position; - this.disabledColor = getGFColor(widget.disabledColor); - this.disabledTextColor = getGFColor(widget.disabledTextColor); + this.disabledColor = GFColors.getGFColor(widget.disabledColor); + this.disabledTextColor = GFColors.getGFColor(widget.disabledTextColor); _updateState(MaterialState.disabled, !widget.enabled); super.initState(); @@ -355,8 +350,9 @@ class _GFButtonState extends State { Color getBorderColor() { if (widget.enabled) { - final Color fillColor = - this.color == null ? getGFColor(GFColor.primary) : this.color; + final Color fillColor = this.color == null + ? GFColors.getGFColor(GFColor.primary) + : this.color; if (fillColor != null) return fillColor; } else { if (this.disabledColor != null) @@ -365,13 +361,15 @@ class _GFButtonState extends State { return this.color.withOpacity(0.48); } } - return this.color == null ? getGFColor(GFColor.primary) : this.color; + return this.color == null + ? GFColors.getGFColor(GFColor.primary) + : this.color; } Color getDisabledFillColor() { - if (widget.type == GFType.transparent || - widget.type == GFType.outline || - widget.type == GFType.outline2x) return Colors.transparent; + if (widget.type == GFButtonType.transparent || + widget.type == GFButtonType.outline || + widget.type == GFButtonType.outline2x) return Colors.transparent; if (this.disabledColor != null) return this.disabledColor; else { @@ -380,43 +378,44 @@ class _GFButtonState extends State { } Color getColor() { - if (widget.type == GFType.transparent || - widget.type == GFType.outline || - widget.type == GFType.outline2x) return Colors.transparent; - final Color fillColor = - this.color == null ? getGFColor(GFColor.primary) : this.color; + if (widget.type == GFButtonType.transparent || + widget.type == GFButtonType.outline || + widget.type == GFButtonType.outline2x) return Colors.transparent; + final Color fillColor = this.color == null + ? GFColors.getGFColor(GFColor.primary) + : this.color; return fillColor; } Color getDisabledTextColor() { if (this.disabledTextColor != null) return this.disabledTextColor; - else if (widget.type == GFType.outline || - widget.type == GFType.outline2x || - widget.type == GFType.transparent) { + else if (widget.type == GFButtonType.outline || + widget.type == GFButtonType.outline2x || + widget.type == GFButtonType.transparent) { return this.color; } else { - return getGFColor(GFColor.dark); + return GFColors.getGFColor(GFColor.dark); } } Color getTextColor() { - if (widget.type == GFType.outline || - widget.type == GFType.outline2x || - widget.type == GFType.transparent) { + if (widget.type == GFButtonType.outline || + widget.type == GFButtonType.outline2x || + widget.type == GFButtonType.transparent) { return widget.enabled ? this.textColor == null - ? this.color == getGFColor(GFColor.transparent) - ? getGFColor(GFColor.dark) + ? this.color == GFColors.getGFColor(GFColor.transparent) + ? GFColors.getGFColor(GFColor.dark) : this.color : this.textColor : getDisabledTextColor(); } if (this.textColor == null) { - if (this.color == getGFColor(GFColor.transparent)) { - return getGFColor(GFColor.dark); + if (this.color == GFColors.getGFColor(GFColor.transparent)) { + return GFColors.getGFColor(GFColor.dark); } else { - return getGFColor(GFColor.white); + return GFColors.getGFColor(GFColor.white); } } else { return this.textColor; @@ -434,7 +433,7 @@ class _GFButtonState extends State { ? getBorderColor() : widget.borderSide.color, width: widget.borderSide?.width == null - ? widget.type == GFType.outline2x ? 2.0 : 1.0 + ? widget.type == GFButtonType.outline2x ? 2.0 : 1.0 : widget.borderSide?.width, ); @@ -451,15 +450,15 @@ class _GFButtonState extends State { break; } - final BorderSide shapeBorder = - widget.type == GFType.outline || widget.type == GFType.outline2x - ? outlineBorder - : widget.borderSide != null - ? widget.borderSide - : BorderSide( - color: this.color == null ? themeColor : getBorderColor(), - width: 0.0, - ); + final BorderSide shapeBorder = widget.type == GFButtonType.outline || + widget.type == GFButtonType.outline2x + ? outlineBorder + : widget.borderSide != null + ? widget.borderSide + : BorderSide( + color: this.color == null ? themeColor : getBorderColor(), + width: 0.0, + ); if (this.shape == GFButtonShape.pills) { shape = RoundedRectangleBorder( @@ -476,14 +475,14 @@ class _GFButtonState extends State { } BoxDecoration getBoxShadow() { - if (widget.type != GFType.transparent) { + if (widget.type != GFButtonType.transparent) { if (widget.boxShadow == null && widget.buttonBoxShadow != true) { return null; } else { return BoxDecoration( - color: widget.type == GFType.transparent || - widget.type == GFType.outline || - widget.type == GFType.outline2x + color: widget.type == GFButtonType.transparent || + widget.type == GFButtonType.outline || + widget.type == GFButtonType.outline2x ? Colors.transparent : this.color, borderRadius: widget.shape == GFButtonShape.pills @@ -539,11 +538,11 @@ class _GFButtonState extends State { constraints: this.icon == null ? BoxConstraints(minWidth: 80.0) : BoxConstraints(minWidth: 90.0), - decoration: widget.type == GFType.solid ? getBoxShadow() : null, + decoration: widget.type == GFButtonType.solid ? getBoxShadow() : null, child: Material( elevation: _effectiveElevation, textStyle: widget.textStyle == null ? getTextStyle() : widget.textStyle, - shape: widget.type == GFType.transparent + shape: widget.type == GFButtonType.transparent ? null : widget.borderShape == null ? shape : widget.borderShape, color: widget.enabled ? getColor() : getDisabledFillColor(), @@ -562,11 +561,11 @@ class _GFButtonState extends State { onTap: widget.onPressed, onLongPress: widget.onLongPress, enableFeedback: widget.enableFeedback, - splashColor: getGFColor(widget.splashColor), - highlightColor: getGFColor(widget.highlightColor), - focusColor: getGFColor(widget.focusColor), - hoverColor: getGFColor(widget.hoverColor), - customBorder: widget.type == GFType.transparent + splashColor: GFColors.getGFColor(widget.splashColor), + highlightColor: GFColors.getGFColor(widget.highlightColor), + focusColor: GFColors.getGFColor(widget.focusColor), + hoverColor: GFColors.getGFColor(widget.hoverColor), + customBorder: widget.type == GFButtonType.transparent ? null : widget.borderShape == null ? shape : widget.borderShape, child: IconTheme.merge( diff --git a/lib/components/button/gf_icon_button.dart b/lib/components/button/gf_icon_button.dart index 559f0e30..ef8b2fab 100644 --- a/lib/components/button/gf_icon_button.dart +++ b/lib/components/button/gf_icon_button.dart @@ -4,12 +4,8 @@ import 'package:flutter/widgets.dart'; import 'package:flutter/material.dart'; import 'package:getflutter/shape/gf_icon_button_shape.dart'; import 'package:getflutter/size/gf_size.dart'; -import 'package:getflutter/types/gf_type.dart'; +import 'package:getflutter/types/gf_button_type.dart'; import 'package:getflutter/colors/gf_color.dart'; -export 'package:getflutter/shape/gf_icon_button_shape.dart'; -export 'package:getflutter/size/gf_size.dart'; -export 'package:getflutter/types/gf_type.dart'; -export 'package:getflutter/colors/gf_color.dart'; class GFIconButton extends StatefulWidget { /// The size of the icon inside the button. @@ -30,8 +26,8 @@ class GFIconButton extends StatefulWidget { /// The color for the button's icon when a pointer is hovering over it. final Color hoverColor; - /// Button type of [GFType] i.e, solid, outline, outline2x transparent - final GFType type; + /// Button type of [GFButtonType] i.e, solid, outline, outline2x transparent + final GFButtonType type; /// Button type of [GFIconButtonShape] i.e, standard, pills, square, shadow, icons final GFIconButtonShape shape; @@ -91,7 +87,7 @@ class GFIconButton extends StatefulWidget { this.focusNode, this.autofocus = false, this.tooltip, - this.type = GFType.solid, + this.type = GFButtonType.solid, this.shape = GFIconButtonShape.standard, this.color = GFColor.primary, this.borderShape, @@ -113,7 +109,7 @@ class GFIconButton extends StatefulWidget { class _GFIconButtonState extends State { Color color; Function onPressed; - GFType type; + GFButtonType type; GFIconButtonShape shape; BoxShadow boxShadow; double height; @@ -122,49 +118,67 @@ class _GFIconButtonState extends State { @override void initState() { - this.color = getGFColor(widget.color); + this.color = GFColors.getGFColor(widget.color); this.onPressed = widget.onPressed; this.type = widget.type; this.shape = widget.shape; super.initState(); } - @override - Widget build(BuildContext context) { - assert(debugCheckHasMaterial(context)); - - Color getBorderColor() { - if (widget.onPressed != null) { - return this.color; - } else { - if (widget.disabledColor != null) - return widget.disabledColor; - else { - return this.color.withOpacity(0.48); - } - } - } - - Color getDisabledFillColor() { - if (widget.type == GFType.transparent || - widget.type == GFType.outline || - widget.type == GFType.outline2x) return Colors.transparent; + Color getBorderColor() { + if (widget.onPressed != null) { + return this.color; + } else { if (widget.disabledColor != null) return widget.disabledColor; else { return this.color.withOpacity(0.48); } } + } - Color getColor() { - if (widget.type == GFType.transparent || - widget.type == GFType.outline || - widget.type == GFType.outline2x) - return Colors.transparent; - else { - return this.color; - } + Color getDisabledFillColor() { + if (widget.type == GFButtonType.transparent || + widget.type == GFButtonType.outline || + widget.type == GFButtonType.outline2x) return Colors.transparent; + if (widget.disabledColor != null) + return widget.disabledColor; + else { + return this.color.withOpacity(0.48); + } + } + + Color getColor() { + if (widget.type == GFButtonType.transparent || + widget.type == GFButtonType.outline || + widget.type == GFButtonType.outline2x) + return Colors.transparent; + else { + return this.color; } + } + + Color getIconColor() { + if (widget.type == GFButtonType.transparent || + widget.type == GFButtonType.outline || + widget.type == GFButtonType.outline2x) + return widget.onPressed != null + ? this.color == GFColors.getGFColor(GFColor.transparent) + ? GFColors.getGFColor(GFColor.dark) + : this.color + : this.color.withOpacity(0.48); + else if (this.color == GFColors.getGFColor(GFColor.transparent)) { + return widget.onPressed != null + ? GFColors.getGFColor(GFColor.dark) + : GFColors.getGFColor(GFColor.white); + } else { + return GFColors.getGFColor(GFColor.white); + } + } + + @override + Widget build(BuildContext context) { + assert(debugCheckHasMaterial(context)); final Color themeColor = Theme.of(context).colorScheme.onSurface.withOpacity(0.12); @@ -173,19 +187,19 @@ class _GFIconButtonState extends State { ? getBorderColor() : widget.borderSide.color, width: widget.borderSide?.width == null - ? widget.type == GFType.outline2x ? 2.0 : 1.0 + ? widget.type == GFButtonType.outline2x ? 2.0 : 1.0 : widget.borderSide?.width, ); - final BorderSide shapeBorder = - widget.type == GFType.outline || widget.type == GFType.outline2x - ? outlineBorder - : widget.borderSide != null - ? widget.borderSide - : BorderSide( - color: this.color, - width: 0.0, - ); + final BorderSide shapeBorder = widget.type == GFButtonType.outline || + widget.type == GFButtonType.outline2x + ? outlineBorder + : widget.borderSide != null + ? widget.borderSide + : BorderSide( + color: this.color, + width: 0.0, + ); ShapeBorder shape; @@ -212,32 +226,19 @@ class _GFIconButtonState extends State { this.width = 35.0; this.iconPixel = 18.0; } else if (widget.size == GFSize.large) { + print('her'); this.height = 40.0; this.width = 40.0; this.iconPixel = 18.0; - } - - getIconColor() { - if (widget.type == GFType.transparent || - widget.type == GFType.outline || - widget.type == GFType.outline2x) - return widget.onPressed != null - ? this.color == getGFColor(GFColor.transparent) - ? getGFColor(GFColor.dark) - : this.color - : this.color.withOpacity(0.48); - else if (this.color == getGFColor(GFColor.transparent)) { - return widget.onPressed != null - ? getGFColor(GFColor.dark) - : getGFColor(GFColor.white); - } else { - return getGFColor(GFColor.white); - } + } else { + this.height = 35.0; + this.width = 35.0; + this.iconPixel = 18.0; } Widget result = Container( height: widget.shape == GFIconButtonShape.circle - ? this.height + 6 + ? this.height + 6.0 : this.height, width: widget.shape == GFIconButtonShape.pills ? this.width + 10 @@ -262,7 +263,7 @@ class _GFIconButtonState extends State { } BoxDecoration getBoxShadow() { - if (widget.type != GFType.transparent) { + if (widget.type != GFButtonType.transparent) { if (widget.boxShadow == null && widget.buttonBoxShadow != true) { return null; } else { @@ -316,31 +317,32 @@ class _GFIconButtonState extends State { : widget.shape == GFIconButtonShape.circle ? this.height + 6 : this.width, - decoration: widget.type == GFType.solid ? getBoxShadow() : null, + decoration: + widget.type == GFButtonType.solid ? getBoxShadow() : null, child: Material( - shape: widget.type == GFType.transparent + shape: widget.type == GFButtonType.transparent ? null : widget.borderShape == null ? shape : widget.borderShape, color: widget.onPressed != null ? getColor() : getDisabledFillColor(), - type: widget.type == GFType.transparent + type: widget.type == GFButtonType.transparent ? MaterialType.transparency : MaterialType.button, child: InkResponse( onTap: widget.onPressed, child: result, focusColor: widget.focusColor != null - ? getGFColor(widget.focusColor) + ? GFColors.getGFColor(widget.focusColor) : Theme.of(context).focusColor, hoverColor: widget.hoverColor != null - ? getGFColor(widget.hoverColor) + ? GFColors.getGFColor(widget.hoverColor) : Theme.of(context).hoverColor, highlightColor: widget.highlightColor != null - ? getGFColor(widget.highlightColor) + ? GFColors.getGFColor(widget.highlightColor) : Theme.of(context).highlightColor, splashColor: widget.splashColor != null - ? getGFColor(widget.splashColor) + ? GFColors.getGFColor(widget.splashColor) : Theme.of(context).splashColor, radius: math.max( Material.defaultSplashRadius, diff --git a/lib/components/button/gf_social_button.dart b/lib/components/button/gf_social_button.dart index 80c00461..bef48e38 100644 --- a/lib/components/button/gf_social_button.dart +++ b/lib/components/button/gf_social_button.dart @@ -5,14 +5,9 @@ import 'package:flutter/material.dart'; import 'package:getflutter/components/button/gf_button.dart'; import 'package:getflutter/shape/gf_button_shape.dart'; import 'package:getflutter/size/gf_size.dart'; -import 'package:getflutter/types/gf_type.dart'; +import 'package:getflutter/types/gf_button_type.dart'; import 'package:getflutter/position/gf_position.dart'; import 'package:getflutter/colors/gf_color.dart'; -export 'package:getflutter/position/gf_position.dart'; -export 'package:getflutter/shape/gf_button_shape.dart'; -export 'package:getflutter/size/gf_size.dart'; -export 'package:getflutter/types/gf_type.dart'; -export 'package:getflutter/colors/gf_color.dart'; class GFSocialButton extends GFButton { /// Called when the button is tapped or otherwise activated. @@ -87,8 +82,8 @@ class GFSocialButton extends GFButton { /// {@macro flutter.widgets.Clip} final Clip clipBehavior; - /// Button type of [GFType] i.e, solid, outline, outline2x, transparent - final GFType type; + /// Button type of [GFButtonType] i.e, solid, outline, outline2x, transparent + final GFButtonType type; /// Button type of [GFSocialButtonShape] i.e, standard, pills, square, shadow, icons final GFButtonShape shape; @@ -134,7 +129,7 @@ class GFSocialButton extends GFButton { /// icon of type [Widget] final Widget icon; - /// icon type of [GFIconPosition] i.e, start, end + /// icon type of [GFPosition] i.e, start, end final GFPosition position; /// on true state blockButton gives block size button @@ -203,7 +198,7 @@ class GFSocialButton extends GFButton { this.autofocus = false, MaterialTapTargetSize materialTapTargetSize, this.child, - this.type = GFType.solid, + this.type = GFButtonType.solid, this.shape = GFButtonShape.standard, this.color = GFColor.primary, this.textColor, @@ -255,7 +250,7 @@ class GFSocialButton extends GFButton { focusNode: focusNode, autofocus: autofocus, child: child, - type: GFType.solid, + type: GFButtonType.solid, shape: GFButtonShape.standard, color: GFColor.primary, textColor: textColor, diff --git a/lib/components/card/gf_card.dart b/lib/components/card/gf_card.dart index b4a2fb75..3957bd07 100644 --- a/lib/components/card/gf_card.dart +++ b/lib/components/card/gf_card.dart @@ -4,7 +4,6 @@ import 'package:getflutter/components/button/gf_button_bar.dart'; import 'package:getflutter/components/list_tile/gf_list_tile.dart'; import 'package:getflutter/components/image/gf_image_overlay.dart'; import 'package:getflutter/position/gf_position.dart'; -export 'package:getflutter/position/gf_position.dart'; /// A material design card. A card has slightly rounded corners and a shadow. /// diff --git a/lib/components/list_tile/gf_list_tile.dart b/lib/components/list_tile/gf_list_tile.dart index 19258c96..9e41fd2e 100644 --- a/lib/components/list_tile/gf_list_tile.dart +++ b/lib/components/list_tile/gf_list_tile.dart @@ -10,7 +10,7 @@ class GFListTile extends StatelessWidget { ///type of [String] used to pass text, alternative to subtitle property and gets higher priority than subtitle final String subtitleText; - /// The GFListTile's background color. Can be given [Colors] or [GFColor] + /// The GFListTile's background color. Can be given [Color] or [GFColor] final dynamic color; /// type of [Widget] or [GFAvatar] used to create rounded user profile @@ -69,7 +69,7 @@ class GFListTile extends StatelessWidget { style: TextStyle( fontSize: 17, fontWeight: FontWeight.w500, - color: getGFColor(GFColor.dark)), + color: GFColors.getGFColor(GFColor.dark)), ) : title ?? Container(), subtitleText != null diff --git a/lib/components/tabs/gf_segment_tabs.dart b/lib/components/tabs/gf_segment_tabs.dart index cd33898d..2b798bf0 100644 --- a/lib/components/tabs/gf_segment_tabs.dart +++ b/lib/components/tabs/gf_segment_tabs.dart @@ -175,7 +175,8 @@ class _GFSegmentTabsState extends State { width: widget.width == null ? 240.0 : widget.width, decoration: BoxDecoration( border: widget.border == null - ? Border.all(color: getGFColor(GFColor.primary), width: 1.0) + ? Border.all( + color: GFColors.getGFColor(GFColor.primary), width: 1.0) : widget.border, borderRadius: widget.borderRadius == null ? BorderRadius.circular(2.0) @@ -192,20 +193,20 @@ class _GFSegmentTabsState extends State { color: widget.tabBarColor ?? Colors.transparent, child: TabBar( controller: widget.tabController, - labelColor: widget.labelColor ?? getGFColor(GFColor.white), - unselectedLabelColor: - widget.unselectedLabelColor ?? getGFColor(GFColor.primary), + labelColor: widget.labelColor ?? GFColors.getGFColor(GFColor.white), + unselectedLabelColor: widget.unselectedLabelColor ?? + GFColors.getGFColor(GFColor.primary), labelStyle: widget.labelStyle ?? TextStyle(fontSize: 12.0), unselectedLabelStyle: widget.unselectedLabelStyle ?? TextStyle(fontSize: 12.0), indicatorColor: widget.indicatorColor == null - ? getGFColor(GFColor.primary) + ? GFColors.getGFColor(GFColor.primary) : widget.indicatorColor, indicatorSize: widget.indicatorSize, indicator: widget.indicator == null ? BoxDecoration( color: widget.indicatorColor == null - ? getGFColor(GFColor.primary) + ? GFColors.getGFColor(GFColor.primary) : widget.indicatorColor, border: Border.all( color: widget.indicatorColor == null diff --git a/lib/components/tabs/gf_tabBar.dart b/lib/components/tabs/gf_tabBar.dart index bf9cda40..75eee5ad 100644 --- a/lib/components/tabs/gf_tabBar.dart +++ b/lib/components/tabs/gf_tabBar.dart @@ -168,7 +168,7 @@ class _GFTabBarState extends State { : widget.tabBarHeight, child: Material( type: MaterialType.button, - color: widget.tabBarColor ?? getGFColor(GFColor.primary), + color: widget.tabBarColor ?? GFColors.getGFColor(GFColor.primary), child: TabBar( controller: widget.controller, labelColor: widget.labelColor, diff --git a/lib/components/tabs/gf_tabs.dart b/lib/components/tabs/gf_tabs.dart index a8756c30..439bd556 100644 --- a/lib/components/tabs/gf_tabs.dart +++ b/lib/components/tabs/gf_tabs.dart @@ -192,7 +192,8 @@ class _GFTabsState extends State { length: widget.length, initialIndex: widget.initialIndex, tabBarHeight: widget.tabBarHeight, - tabBarColor: widget.tabBarColor ?? getGFColor(GFColor.primary), + tabBarColor: + widget.tabBarColor ?? GFColors.getGFColor(GFColor.primary), controller: widget.controller, labelColor: widget.labelColor, unselectedLabelColor: widget.unselectedLabelColor, diff --git a/lib/components/toast/gf_toast.dart b/lib/components/toast/gf_toast.dart index 3fc3843c..45a7f13c 100644 --- a/lib/components/toast/gf_toast.dart +++ b/lib/components/toast/gf_toast.dart @@ -83,7 +83,7 @@ class _GFToastState extends State with TickerProviderStateMixin { decoration: BoxDecoration( borderRadius: BorderRadius.all(Radius.circular(3)), color: widget.backgroundColor != null - ? getGFColor(widget.backgroundColor) + ? GFColors.getGFColor(widget.backgroundColor) : Color(0xff323232), ), child: Row( diff --git a/lib/components/toggle/gf_toggle.dart b/lib/components/toggle/gf_toggle.dart index 3afe42eb..1d397cf5 100644 --- a/lib/components/toggle/gf_toggle.dart +++ b/lib/components/toggle/gf_toggle.dart @@ -1,7 +1,6 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import '../../types/gf_toggle_type.dart'; -export '../../types/gf_toggle_type.dart'; +import 'package:getflutter/types/gf_toggle_type.dart'; /// A toggle button allows the user to change a setting between two states. /// diff --git a/lib/components/typography/gf_typography.dart b/lib/components/typography/gf_typography.dart index d510bfc1..98b480f4 100644 --- a/lib/components/typography/gf_typography.dart +++ b/lib/components/typography/gf_typography.dart @@ -1,7 +1,6 @@ import 'package:flutter/material.dart'; import 'package:getflutter/colors/gf_color.dart'; import 'package:getflutter/types/gf_typography_type.dart'; -export 'package:getflutter/types/gf_typography_type.dart'; class GFTypography extends StatelessWidget { /// Creates simple title with underline. Style of title can be changed using [GFTypographyType] @@ -104,7 +103,7 @@ class GFTypography extends StatelessWidget { text, style: TextStyle( color: textColor != null - ? getGFColor(textColor) + ? GFColors.getGFColor(textColor) : backgroundImage != null ? Colors.white : Colors.black, @@ -124,7 +123,7 @@ class GFTypography extends StatelessWidget { height: fontSize / 5, decoration: BoxDecoration( color: dividerColor != null - ? getGFColor(dividerColor) + ? GFColors.getGFColor(dividerColor) : backgroundImage != null ? Colors.white : Colors.black, diff --git a/lib/getflutter.dart b/lib/getflutter.dart index 9470df53..bf278aab 100644 --- a/lib/getflutter.dart +++ b/lib/getflutter.dart @@ -8,5 +8,5 @@ export 'shape/gf_button_shape.dart'; export 'shape/gf_icon_button_shape.dart'; export 'size/gf_size.dart'; export 'types/gf_toggle_type.dart'; -export 'types/gf_type.dart'; +export 'types/gf_button_type.dart'; export 'types/gf_typography_type.dart'; diff --git a/lib/size/gf_size.dart b/lib/size/gf_size.dart index fba39977..96d2bcde 100644 --- a/lib/size/gf_size.dart +++ b/lib/size/gf_size.dart @@ -10,29 +10,30 @@ enum GFSize { large, } -const double SMALL = 30.0; -const double MEDIUM = 35.0; -const double LARGE = 40.0; -//const double BLOCK = 40.0; +class GFSizesClass { + static const double SMALL = 30.0; + static const double MEDIUM = 35.0; + static const double LARGE = 40.0; -/// Pass [GFSize] or [double] -double getGFSize(dynamic size) { - if (size is double) { - return size; - } else { - switch (size) { - case GFSize.small: - return SMALL; - break; - case GFSize.medium: - return MEDIUM; - break; - case GFSize.large: - return LARGE; - break; - default: - return MEDIUM; - break; + /// Pass [GFSize] or [double] + static double getGFSize(dynamic size) { + if (size is double || size is int) { + return double.parse(size.toString()); + } else { + switch (size) { + case GFSize.small: + return SMALL; + break; + case GFSize.medium: + return MEDIUM; + break; + case GFSize.large: + return LARGE; + break; + default: + return MEDIUM; + break; + } } } } diff --git a/lib/types/gf_type.dart b/lib/types/gf_button_type.dart similarity index 96% rename from lib/types/gf_type.dart rename to lib/types/gf_button_type.dart index 88475acf..b634213b 100644 --- a/lib/types/gf_type.dart +++ b/lib/types/gf_button_type.dart @@ -1,5 +1,5 @@ /// [GFType] is used to change the type of widgets -enum GFType { +enum GFButtonType { /// Default type is [GFType.solid], used to fill with color for widget solid, From af7a53543ed6b682529e2e20ae7072f6a7d30d0a Mon Sep 17 00:00:00 2001 From: Sandip Kakadiya Date: Mon, 20 Jan 2020 19:16:43 +0530 Subject: [PATCH 3/3] first stable release --- CHANGELOG.md | 22 ++++++++++++++++++ example/pubspec.lock | 2 +- lib/components/badge/gf_badge.dart | 30 ++++++++++++------------- lib/components/badge/gf_icon_badge.dart | 1 - pubspec.yaml | 2 +- 5 files changed, 39 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 11406620..76fd3434 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,27 @@ # Changelog + +## 1.0.0 - 2020-01-20 + +### Added +* Stable version release +* code refectoring +* this release includes following stable components + - GFAvatar + - GFButton + - GFIconButton + - GFButtonBar + - GFBadge + - GFButtonBadge + - GFIconBadge + - GFCard + - GFCarousel + - GFImageOverlay + - GFListTile + - GFTabs + - GFTypography + + ## 1.0.0-dev.9 - 2020-01-17 ### Added diff --git a/example/pubspec.lock b/example/pubspec.lock index ab141a5a..c583984a 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -80,7 +80,7 @@ packages: path: ".." relative: true source: path - version: "1.0.0-dev.9" + version: "1.0.0" image: dependency: transitive description: diff --git a/lib/components/badge/gf_badge.dart b/lib/components/badge/gf_badge.dart index 8f573cc7..1c27b5b6 100644 --- a/lib/components/badge/gf_badge.dart +++ b/lib/components/badge/gf_badge.dart @@ -98,22 +98,22 @@ class _GFBadgeState extends State { borderRadius: BorderRadius.circular(5.0), side: shapeBorder); } - if (this.size == GFSize.small) { - this.height = GFSizesClass.getGFSize(this.size) * 0.56; - this.width = GFSizesClass.getGFSize(this.size) * 0.73; - this.fontSize = GFSizesClass.getGFSize(this.size) * 0.31; - } else if (this.size == GFSize.medium) { - this.height = GFSizesClass.getGFSize(this.size) * 0.58; - this.width = GFSizesClass.getGFSize(this.size) * 0.76; - this.fontSize = GFSizesClass.getGFSize(this.size) * 0.34; - } else if (this.size == GFSize.large) { - this.height = GFSizesClass.getGFSize(this.size) * 0.6; - this.width = GFSizesClass.getGFSize(this.size) * 0.79; - this.fontSize = GFSizesClass.getGFSize(this.size) * 0.37; + if (widget.size == GFSize.small) { + this.height = this.size * 0.56; + this.width = this.size * 0.73; + this.fontSize = this.size * 0.31; + } else if (widget.size == GFSize.medium) { + this.height = this.size * 0.58; + this.width = this.size * 0.76; + this.fontSize = this.size * 0.34; + } else if (widget.size == GFSize.large) { + this.height = this.size * 0.6; + this.width = this.size * 0.79; + this.fontSize = this.size * 0.37; } else { - this.height = GFSizesClass.getGFSize(this.size) * 0.58; - this.width = GFSizesClass.getGFSize(this.size) * 0.76; - this.fontSize = GFSizesClass.getGFSize(this.size) * 0.34; + this.height = this.size * 0.58; + this.width = this.size * 0.76; + this.fontSize = this.size * 0.34; } return Container( diff --git a/lib/components/badge/gf_icon_badge.dart b/lib/components/badge/gf_icon_badge.dart index b194e7fc..96640b4a 100644 --- a/lib/components/badge/gf_icon_badge.dart +++ b/lib/components/badge/gf_icon_badge.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; import 'package:getflutter/components/button/gf_icon_button.dart'; -import 'package:getflutter/getflutter.dart'; class GFIconBadge extends StatefulWidget { /// child of type [Widget] is used to show icon. diff --git a/pubspec.yaml b/pubspec.yaml index a5f124d3..6fb701da 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: getflutter description: GetFlutter is open source libraries that come with pre-build 1000+ UI components. It makes development faster & more enjoyable. You can customize the component as per your need. -version: 1.0.0-dev.9 +version: 1.0.0 #author: GetFlutter homepage: https://github.com/ionicfirebaseapp/getflutter