From d43ace521936007aa9ebfb7afa53aa3f01ae0ba1 Mon Sep 17 00:00:00 2001 From: Hugo Pointcheval Date: Fri, 20 Jan 2023 11:50:14 +0100 Subject: [PATCH] feat: update feature brick --- .../wyatt_feature_brick/analysis_options.yaml | 2 +- apps/wyatt_feature_brick/android/.gitignore | 13 --- .../android/app/build.gradle | 71 ------------- .../android/app/src/debug/AndroidManifest.xml | 8 -- .../android/app/src/main/AndroidManifest.xml | 34 ------- .../wyatt_feature_brick/MainActivity.kt | 6 -- .../res/drawable-v21/launch_background.xml | 12 --- .../main/res/drawable/launch_background.xml | 12 --- .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 544 -> 0 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 442 -> 0 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 721 -> 0 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 1031 -> 0 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 1443 -> 0 bytes .../app/src/main/res/values-night/styles.xml | 18 ---- .../app/src/main/res/values/styles.xml | 18 ---- .../app/src/profile/AndroidManifest.xml | 8 -- apps/wyatt_feature_brick/android/build.gradle | 31 ------ .../android/gradle.properties | 3 - .../gradle/wrapper/gradle-wrapper.properties | 6 -- .../android/settings.gradle | 11 -- apps/wyatt_feature_brick/brick_config.yaml | 25 ++--- .../feature_name_bloc}/feature_name_bloc.dart | 10 +- .../feature_name_event.dart | 4 + .../feature_name_state.dart | 0 .../feature_name_cubit.dart | 10 +- .../feature_name_state.dart | 0 .../lib/feature_name/feature_name.dart | 3 +- .../screens/feature_name_parent.dart | 15 +++ .../screens/feature_name_provider.dart | 22 ++++ .../screens/feature_name_screen.dart | 33 ++++++ .../widgets/feature_name_consumer_widget.dart | 18 ++++ .../feature_name_state_management.dart | 25 ----- .../feature_name_wrapper_widget.dart | 14 --- .../widgets/feature_name_widget.dart | 8 -- .../stateless/feature_name_widget.dart | 12 +++ apps/wyatt_feature_brick/pubspec.yaml | 96 +++--------------- .../wyatt_feature_brick/test/widget_test.dart | 30 ------ bricks/wyatt_feature_brick/CHANGELOG.md | 3 - bricks/wyatt_feature_brick/LICENSE | 1 - bricks/wyatt_feature_brick/README.md | 30 +++--- .../{{feature_name.snakeCase()}}_bloc.dart | 10 +- .../{{feature_name.snakeCase()}}_event.dart | 4 + .../{{feature_name.snakeCase()}}_state.dart | 0 .../{{feature_name.snakeCase()}}_cubit.dart | 10 +- .../{{feature_name.snakeCase()}}_state.dart | 0 ...re_name.snakeCase()}}_consumer_widget.dart | 18 ++++ .../{{feature_name.snakeCase()}}_parent.dart | 15 +++ ...{{feature_name.snakeCase()}}_provider.dart | 22 ++++ .../{{feature_name.snakeCase()}}_screen.dart | 33 ++++++ .../{{feature_name.snakeCase()}}_widget.dart | 8 -- ...e_name.snakeCase()}}_state_management.dart | 25 ----- ...ure_name.snakeCase()}}_wrapper_widget.dart | 14 --- .../{{feature_name.snakeCase()}}_widget.dart | 12 +++ .../{{feature_name.snakeCase()}}.dart | 3 +- bricks/wyatt_feature_brick/brick.yaml | 2 +- 55 files changed, 288 insertions(+), 500 deletions(-) delete mode 100644 apps/wyatt_feature_brick/android/.gitignore delete mode 100644 apps/wyatt_feature_brick/android/app/build.gradle delete mode 100644 apps/wyatt_feature_brick/android/app/src/debug/AndroidManifest.xml delete mode 100644 apps/wyatt_feature_brick/android/app/src/main/AndroidManifest.xml delete mode 100644 apps/wyatt_feature_brick/android/app/src/main/kotlin/com/example/wyatt_feature_brick/MainActivity.kt delete mode 100644 apps/wyatt_feature_brick/android/app/src/main/res/drawable-v21/launch_background.xml delete mode 100644 apps/wyatt_feature_brick/android/app/src/main/res/drawable/launch_background.xml delete mode 100644 apps/wyatt_feature_brick/android/app/src/main/res/mipmap-hdpi/ic_launcher.png delete mode 100644 apps/wyatt_feature_brick/android/app/src/main/res/mipmap-mdpi/ic_launcher.png delete mode 100644 apps/wyatt_feature_brick/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png delete mode 100644 apps/wyatt_feature_brick/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png delete mode 100644 apps/wyatt_feature_brick/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png delete mode 100644 apps/wyatt_feature_brick/android/app/src/main/res/values-night/styles.xml delete mode 100644 apps/wyatt_feature_brick/android/app/src/main/res/values/styles.xml delete mode 100644 apps/wyatt_feature_brick/android/app/src/profile/AndroidManifest.xml delete mode 100644 apps/wyatt_feature_brick/android/build.gradle delete mode 100644 apps/wyatt_feature_brick/android/gradle.properties delete mode 100644 apps/wyatt_feature_brick/android/gradle/wrapper/gradle-wrapper.properties delete mode 100644 apps/wyatt_feature_brick/android/settings.gradle rename apps/wyatt_feature_brick/lib/feature_name/{bloc => blocs/feature_name_bloc}/feature_name_bloc.dart (70%) rename apps/wyatt_feature_brick/lib/feature_name/{bloc => blocs/feature_name_bloc}/feature_name_event.dart (76%) rename apps/wyatt_feature_brick/lib/feature_name/{bloc => blocs/feature_name_bloc}/feature_name_state.dart (100%) rename apps/wyatt_feature_brick/lib/feature_name/{cubit => blocs/feature_name_cubit}/feature_name_cubit.dart (56%) rename apps/wyatt_feature_brick/lib/feature_name/{cubit => blocs/feature_name_cubit}/feature_name_state.dart (100%) create mode 100644 apps/wyatt_feature_brick/lib/feature_name/screens/feature_name_parent.dart create mode 100644 apps/wyatt_feature_brick/lib/feature_name/screens/feature_name_provider.dart create mode 100644 apps/wyatt_feature_brick/lib/feature_name/screens/feature_name_screen.dart create mode 100644 apps/wyatt_feature_brick/lib/feature_name/screens/widgets/feature_name_consumer_widget.dart delete mode 100644 apps/wyatt_feature_brick/lib/feature_name/state_management/feature_name_state_management.dart delete mode 100644 apps/wyatt_feature_brick/lib/feature_name/state_management/feature_name_wrapper_widget.dart delete mode 100644 apps/wyatt_feature_brick/lib/feature_name/state_management/widgets/feature_name_widget.dart create mode 100644 apps/wyatt_feature_brick/lib/feature_name/stateless/feature_name_widget.dart delete mode 100644 apps/wyatt_feature_brick/test/widget_test.dart delete mode 100644 bricks/wyatt_feature_brick/CHANGELOG.md delete mode 100644 bricks/wyatt_feature_brick/LICENSE rename bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/{bloc => blocs/{{feature_name.snakeCase()}}_bloc}/{{feature_name.snakeCase()}}_bloc.dart (75%) rename bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/{bloc => blocs/{{feature_name.snakeCase()}}_bloc}/{{feature_name.snakeCase()}}_event.dart (75%) rename bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/{bloc => blocs/{{feature_name.snakeCase()}}_bloc}/{{feature_name.snakeCase()}}_state.dart (100%) rename bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/{cubit => blocs/{{feature_name.snakeCase()}}_cubit}/{{feature_name.snakeCase()}}_cubit.dart (58%) rename bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/{cubit => blocs/{{feature_name.snakeCase()}}_cubit}/{{feature_name.snakeCase()}}_state.dart (100%) create mode 100644 bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/screens/widgets/{{feature_name.snakeCase()}}_consumer_widget.dart create mode 100644 bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/screens/{{feature_name.snakeCase()}}_parent.dart create mode 100644 bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/screens/{{feature_name.snakeCase()}}_provider.dart create mode 100644 bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/screens/{{feature_name.snakeCase()}}_screen.dart delete mode 100644 bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/state_management/widgets/{{feature_name.snakeCase()}}_widget.dart delete mode 100644 bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/state_management/{{feature_name.snakeCase()}}_state_management.dart delete mode 100644 bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/state_management/{{feature_name.snakeCase()}}_wrapper_widget.dart create mode 100644 bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/stateless/{{feature_name.snakeCase()}}_widget.dart diff --git a/apps/wyatt_feature_brick/analysis_options.yaml b/apps/wyatt_feature_brick/analysis_options.yaml index abfedf0..8c9daa4 100644 --- a/apps/wyatt_feature_brick/analysis_options.yaml +++ b/apps/wyatt_feature_brick/analysis_options.yaml @@ -1 +1 @@ -include: package:wyatt_analysis/analysis_options.flutter.experimental.yaml +include: package:wyatt_analysis/analysis_options.flutter.yaml diff --git a/apps/wyatt_feature_brick/android/.gitignore b/apps/wyatt_feature_brick/android/.gitignore deleted file mode 100644 index 6f56801..0000000 --- a/apps/wyatt_feature_brick/android/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -gradle-wrapper.jar -/.gradle -/captures/ -/gradlew -/gradlew.bat -/local.properties -GeneratedPluginRegistrant.java - -# Remember to never publicly share your keystore. -# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app -key.properties -**/*.keystore -**/*.jks diff --git a/apps/wyatt_feature_brick/android/app/build.gradle b/apps/wyatt_feature_brick/android/app/build.gradle deleted file mode 100644 index 9a12ea4..0000000 --- a/apps/wyatt_feature_brick/android/app/build.gradle +++ /dev/null @@ -1,71 +0,0 @@ -def localProperties = new Properties() -def localPropertiesFile = rootProject.file('local.properties') -if (localPropertiesFile.exists()) { - localPropertiesFile.withReader('UTF-8') { reader -> - localProperties.load(reader) - } -} - -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.") -} - -def flutterVersionCode = localProperties.getProperty('flutter.versionCode') -if (flutterVersionCode == null) { - flutterVersionCode = '1' -} - -def flutterVersionName = localProperties.getProperty('flutter.versionName') -if (flutterVersionName == null) { - flutterVersionName = '1.0' -} - -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' -apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" - -android { - compileSdkVersion flutter.compileSdkVersion - ndkVersion flutter.ndkVersion - - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - - kotlinOptions { - jvmTarget = '1.8' - } - - sourceSets { - main.java.srcDirs += 'src/main/kotlin' - } - - defaultConfig { - // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). - applicationId "com.example.wyatt_feature_brick" - // You can update the following values to match your application needs. - // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration. - minSdkVersion flutter.minSdkVersion - targetSdkVersion flutter.targetSdkVersion - versionCode flutterVersionCode.toInteger() - versionName flutterVersionName - } - - buildTypes { - release { - // TODO: Add your own signing config for the release build. - // Signing with the debug keys for now, so `flutter run --release` works. - signingConfig signingConfigs.debug - } - } -} - -flutter { - source '../..' -} - -dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" -} diff --git a/apps/wyatt_feature_brick/android/app/src/debug/AndroidManifest.xml b/apps/wyatt_feature_brick/android/app/src/debug/AndroidManifest.xml deleted file mode 100644 index 4de5ed0..0000000 --- a/apps/wyatt_feature_brick/android/app/src/debug/AndroidManifest.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - diff --git a/apps/wyatt_feature_brick/android/app/src/main/AndroidManifest.xml b/apps/wyatt_feature_brick/android/app/src/main/AndroidManifest.xml deleted file mode 100644 index 92ac70e..0000000 --- a/apps/wyatt_feature_brick/android/app/src/main/AndroidManifest.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - diff --git a/apps/wyatt_feature_brick/android/app/src/main/kotlin/com/example/wyatt_feature_brick/MainActivity.kt b/apps/wyatt_feature_brick/android/app/src/main/kotlin/com/example/wyatt_feature_brick/MainActivity.kt deleted file mode 100644 index c68250d..0000000 --- a/apps/wyatt_feature_brick/android/app/src/main/kotlin/com/example/wyatt_feature_brick/MainActivity.kt +++ /dev/null @@ -1,6 +0,0 @@ -package com.example.wyatt_feature_brick - -import io.flutter.embedding.android.FlutterActivity - -class MainActivity: FlutterActivity() { -} diff --git a/apps/wyatt_feature_brick/android/app/src/main/res/drawable-v21/launch_background.xml b/apps/wyatt_feature_brick/android/app/src/main/res/drawable-v21/launch_background.xml deleted file mode 100644 index f74085f..0000000 --- a/apps/wyatt_feature_brick/android/app/src/main/res/drawable-v21/launch_background.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/apps/wyatt_feature_brick/android/app/src/main/res/drawable/launch_background.xml b/apps/wyatt_feature_brick/android/app/src/main/res/drawable/launch_background.xml deleted file mode 100644 index 304732f..0000000 --- a/apps/wyatt_feature_brick/android/app/src/main/res/drawable/launch_background.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/apps/wyatt_feature_brick/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/apps/wyatt_feature_brick/android/app/src/main/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index db77bb4b7b0906d62b1847e87f15cdcacf6a4f29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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/apps/wyatt_feature_brick/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/apps/wyatt_feature_brick/android/app/src/main/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index 17987b79bb8a35cc66c3c1fd44f5a5526c1b78be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 442 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xx&nMcT!A!W`0S9QKQy;}1Cl^CgaH=;G9cpY;r$Q>i*pfB zP2drbID<_#qf;rPZx^FqH)F_D#*k@@q03KywUtLX8Ua?`H+NMzkczFPK3lFz@i_kW%1NOn0|D2I9n9wzH8m|-tHjsw|9>@K=iMBhxvkv6m8Y-l zytQ?X=U+MF$@3 zt`~i=@j|6y)RWMK--}M|=T`o&^Ni>IoWKHEbBXz7?A@mgWoL>!*SXo`SZH-*HSdS+ yn*9;$7;m`l>wYBC5bq;=U}IMqLzqbYCidGC!)_gkIk_C@Uy!y&wkt5C($~2D>~)O*cj@FGjOCM)M>_ixfudOh)?xMu#Fs z#}Y=@YDTwOM)x{K_j*Q;dPdJ?Mz0n|pLRx{4n|)f>SXlmV)XB04CrSJn#dS5nK2lM zrZ9#~WelCp7&e13Y$jvaEXHskn$2V!!DN-nWS__6T*l;H&Fopn?A6HZ-6WRLFP=R` zqG+CE#d4|IbyAI+rJJ`&x9*T`+a=p|0O(+s{UBcyZdkhj=yS1>AirP+0R;mf2uMgM zC}@~JfByORAh4SyRgi&!(cja>F(l*O+nd+@4m$|6K6KDn_&uvCpV23&>G9HJp{xgg zoq1^2_p9@|WEo z*X_Uko@K)qYYv~>43eQGMdbiGbo>E~Q& zrYBH{QP^@Sti!`2)uG{irBBq@y*$B zi#&(U-*=fp74j)RyIw49+0MRPMRU)+a2r*PJ$L5roHt2$UjExCTZSbq%V!HeS7J$N zdG@vOZB4v_lF7Plrx+hxo7(fCV&}fHq)$ diff --git a/apps/wyatt_feature_brick/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/apps/wyatt_feature_brick/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index d5f1c8d34e7a88e3f88bea192c3a370d44689c3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof diff --git a/apps/wyatt_feature_brick/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/apps/wyatt_feature_brick/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index 4d6372eebdb28e45604e46eeda8dd24651419bc0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1443 zcmb`G{WsKk6vsdJTdFg%tJav9_E4vzrOaqkWF|A724Nly!y+?N9`YV6wZ}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/apps/wyatt_feature_brick/android/app/src/main/res/values-night/styles.xml b/apps/wyatt_feature_brick/android/app/src/main/res/values-night/styles.xml deleted file mode 100644 index 06952be..0000000 --- a/apps/wyatt_feature_brick/android/app/src/main/res/values-night/styles.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - diff --git a/apps/wyatt_feature_brick/android/app/src/main/res/values/styles.xml b/apps/wyatt_feature_brick/android/app/src/main/res/values/styles.xml deleted file mode 100644 index cb1ef88..0000000 --- a/apps/wyatt_feature_brick/android/app/src/main/res/values/styles.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - diff --git a/apps/wyatt_feature_brick/android/app/src/profile/AndroidManifest.xml b/apps/wyatt_feature_brick/android/app/src/profile/AndroidManifest.xml deleted file mode 100644 index 4de5ed0..0000000 --- a/apps/wyatt_feature_brick/android/app/src/profile/AndroidManifest.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - diff --git a/apps/wyatt_feature_brick/android/build.gradle b/apps/wyatt_feature_brick/android/build.gradle deleted file mode 100644 index 83ae220..0000000 --- a/apps/wyatt_feature_brick/android/build.gradle +++ /dev/null @@ -1,31 +0,0 @@ -buildscript { - ext.kotlin_version = '1.6.10' - repositories { - google() - mavenCentral() - } - - dependencies { - classpath 'com.android.tools.build:gradle:7.1.2' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - -allprojects { - repositories { - google() - mavenCentral() - } -} - -rootProject.buildDir = '../build' -subprojects { - project.buildDir = "${rootProject.buildDir}/${project.name}" -} -subprojects { - project.evaluationDependsOn(':app') -} - -task clean(type: Delete) { - delete rootProject.buildDir -} diff --git a/apps/wyatt_feature_brick/android/gradle.properties b/apps/wyatt_feature_brick/android/gradle.properties deleted file mode 100644 index 94adc3a..0000000 --- a/apps/wyatt_feature_brick/android/gradle.properties +++ /dev/null @@ -1,3 +0,0 @@ -org.gradle.jvmargs=-Xmx1536M -android.useAndroidX=true -android.enableJetifier=true diff --git a/apps/wyatt_feature_brick/android/gradle/wrapper/gradle-wrapper.properties b/apps/wyatt_feature_brick/android/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index cc5527d..0000000 --- a/apps/wyatt_feature_brick/android/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,6 +0,0 @@ -#Fri Jun 23 08:50:38 CEST 2017 -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip diff --git a/apps/wyatt_feature_brick/android/settings.gradle b/apps/wyatt_feature_brick/android/settings.gradle deleted file mode 100644 index 44e62bc..0000000 --- a/apps/wyatt_feature_brick/android/settings.gradle +++ /dev/null @@ -1,11 +0,0 @@ -include ':app' - -def localPropertiesFile = new File(rootProject.projectDir, "local.properties") -def properties = new Properties() - -assert localPropertiesFile.exists() -localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } - -def flutterSdkPath = properties.getProperty("flutter.sdk") -assert flutterSdkPath != null, "flutter.sdk not set in local.properties" -apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" diff --git a/apps/wyatt_feature_brick/brick_config.yaml b/apps/wyatt_feature_brick/brick_config.yaml index 9b0e733..08597d8 100644 --- a/apps/wyatt_feature_brick/brick_config.yaml +++ b/apps/wyatt_feature_brick/brick_config.yaml @@ -1,20 +1,13 @@ -brick_name: wyatt_feature_brick - +name: wyatt_feature_brick +description: New feature brick including state mananement path_to_brickify: lib/feature_name -variables: +version: 0.1.1 + +vars: feature_name: - variable_name: feature_name type: string - syntax: - camel_case: featureName - constant_case: FEATURE_NAME - dot_case: feature.name - header_case: Feature-Name - lower_case: feature name - pascal_case: FeatureName - param_case: feature-name - sentence_case: Feature name - title_case: Feature Name - upper_case: FEATURE NAME - snake_case: feature_name + name: feature_name + description: Name of the feature + default: Dash + prompt: What is the name of your new feature \ No newline at end of file diff --git a/apps/wyatt_feature_brick/lib/feature_name/bloc/feature_name_bloc.dart b/apps/wyatt_feature_brick/lib/feature_name/blocs/feature_name_bloc/feature_name_bloc.dart similarity index 70% rename from apps/wyatt_feature_brick/lib/feature_name/bloc/feature_name_bloc.dart rename to apps/wyatt_feature_brick/lib/feature_name/blocs/feature_name_bloc/feature_name_bloc.dart index cc58fd7..21f587a 100644 --- a/apps/wyatt_feature_brick/lib/feature_name/bloc/feature_name_bloc.dart +++ b/apps/wyatt_feature_brick/lib/feature_name/blocs/feature_name_bloc/feature_name_bloc.dart @@ -6,7 +6,11 @@ import 'package:flutter_bloc/flutter_bloc.dart'; part 'feature_name_event.dart'; part 'feature_name_state.dart'; +/// {@template feature_name_bloc} +/// FeatureNameBloc description +/// {@endtemplate} class FeatureNameBloc extends Bloc { + /// {@macro feature_name_bloc} FeatureNameBloc() : super(const FeatureNameInitial()) { on(_onCustomFeatureNameEvent); } @@ -14,7 +18,9 @@ class FeatureNameBloc extends Bloc { FutureOr _onCustomFeatureNameEvent( CustomFeatureNameEvent event, Emitter emit, - ) { - // TODO(wyattstudio): Add Logic + ) async { + // TODO(wyatt): Add custom UI logic + const _ = 1 + 1; + return; } } diff --git a/apps/wyatt_feature_brick/lib/feature_name/bloc/feature_name_event.dart b/apps/wyatt_feature_brick/lib/feature_name/blocs/feature_name_bloc/feature_name_event.dart similarity index 76% rename from apps/wyatt_feature_brick/lib/feature_name/bloc/feature_name_event.dart rename to apps/wyatt_feature_brick/lib/feature_name/blocs/feature_name_bloc/feature_name_event.dart index 3d866ae..f0b263e 100644 --- a/apps/wyatt_feature_brick/lib/feature_name/bloc/feature_name_event.dart +++ b/apps/wyatt_feature_brick/lib/feature_name/blocs/feature_name_bloc/feature_name_event.dart @@ -1,6 +1,10 @@ part of 'feature_name_bloc.dart'; +/// {@template feature_name_event} +/// FeatureNameEvent description +/// {@endtemplate} abstract class FeatureNameEvent extends Equatable { + /// {@macro feature_name_event} const FeatureNameEvent(); } diff --git a/apps/wyatt_feature_brick/lib/feature_name/bloc/feature_name_state.dart b/apps/wyatt_feature_brick/lib/feature_name/blocs/feature_name_bloc/feature_name_state.dart similarity index 100% rename from apps/wyatt_feature_brick/lib/feature_name/bloc/feature_name_state.dart rename to apps/wyatt_feature_brick/lib/feature_name/blocs/feature_name_bloc/feature_name_state.dart diff --git a/apps/wyatt_feature_brick/lib/feature_name/cubit/feature_name_cubit.dart b/apps/wyatt_feature_brick/lib/feature_name/blocs/feature_name_cubit/feature_name_cubit.dart similarity index 56% rename from apps/wyatt_feature_brick/lib/feature_name/cubit/feature_name_cubit.dart rename to apps/wyatt_feature_brick/lib/feature_name/blocs/feature_name_cubit/feature_name_cubit.dart index 37e3d54..4cd8374 100644 --- a/apps/wyatt_feature_brick/lib/feature_name/cubit/feature_name_cubit.dart +++ b/apps/wyatt_feature_brick/lib/feature_name/blocs/feature_name_cubit/feature_name_cubit.dart @@ -5,11 +5,17 @@ import 'package:flutter_bloc/flutter_bloc.dart'; part 'feature_name_state.dart'; +/// {@template feature_name_cubit} +/// FeatureNameCubit description +/// {@endtemplate} class FeatureNameCubit extends Cubit { + /// {@macro feature_name_cubit} FeatureNameCubit() : super(const FeatureNameInitial()); /// A description for yourCustomFunction - FutureOr yourCustomFunction() { - // TODO(wyattstudio): Add Logic + FutureOr yourCustomFunction() async { + // TODO(wyatt): Add custom UI logic + const _ = 1 + 1; + return; } } diff --git a/apps/wyatt_feature_brick/lib/feature_name/cubit/feature_name_state.dart b/apps/wyatt_feature_brick/lib/feature_name/blocs/feature_name_cubit/feature_name_state.dart similarity index 100% rename from apps/wyatt_feature_brick/lib/feature_name/cubit/feature_name_state.dart rename to apps/wyatt_feature_brick/lib/feature_name/blocs/feature_name_cubit/feature_name_state.dart diff --git a/apps/wyatt_feature_brick/lib/feature_name/feature_name.dart b/apps/wyatt_feature_brick/lib/feature_name/feature_name.dart index a071f26..ee71b07 100644 --- a/apps/wyatt_feature_brick/lib/feature_name/feature_name.dart +++ b/apps/wyatt_feature_brick/lib/feature_name/feature_name.dart @@ -1 +1,2 @@ -export './state_management/feature_name_state_management.dart'; +export 'screens/feature_name_provider.dart'; +export 'screens/feature_name_screen.dart'; diff --git a/apps/wyatt_feature_brick/lib/feature_name/screens/feature_name_parent.dart b/apps/wyatt_feature_brick/lib/feature_name/screens/feature_name_parent.dart new file mode 100644 index 0000000..977c5f3 --- /dev/null +++ b/apps/wyatt_feature_brick/lib/feature_name/screens/feature_name_parent.dart @@ -0,0 +1,15 @@ +import 'package:flutter/material.dart'; + +class FeatureNameParent extends StatelessWidget { + const FeatureNameParent({ + required this.child, + super.key, + }); + + final Widget child; + + @override + Widget build(BuildContext context) => Scaffold( + body: SafeArea(child: child), + ); +} diff --git a/apps/wyatt_feature_brick/lib/feature_name/screens/feature_name_provider.dart b/apps/wyatt_feature_brick/lib/feature_name/screens/feature_name_provider.dart new file mode 100644 index 0000000..c153af2 --- /dev/null +++ b/apps/wyatt_feature_brick/lib/feature_name/screens/feature_name_provider.dart @@ -0,0 +1,22 @@ +// ignore_for_file: always_use_package_imports + +import 'package:flutter/material.dart'; +import 'package:wyatt_bloc_helper/wyatt_bloc_helper.dart'; + +import '../blocs/feature_name_cubit/feature_name_cubit.dart'; +import 'widgets/feature_name_consumer_widget.dart'; + +/// {@template feature_name_provider} +/// FeatureNameProvider provides bloc to his children. +/// {@endtemplate} +class FeatureNameProvider + extends CubitProviderScreen { + /// {@macro feature_name_provider} + const FeatureNameProvider({super.key}); + + @override + FeatureNameCubit create(BuildContext context) => FeatureNameCubit(); + + @override + Widget builder(BuildContext context) => const FeatureNameConsumerWidget(); +} diff --git a/apps/wyatt_feature_brick/lib/feature_name/screens/feature_name_screen.dart b/apps/wyatt_feature_brick/lib/feature_name/screens/feature_name_screen.dart new file mode 100644 index 0000000..26e6dd0 --- /dev/null +++ b/apps/wyatt_feature_brick/lib/feature_name/screens/feature_name_screen.dart @@ -0,0 +1,33 @@ +// ignore_for_file: always_use_package_imports + +import 'package:flutter/material.dart'; +import 'package:wyatt_bloc_helper/wyatt_bloc_helper.dart'; + +import '../blocs/feature_name_cubit/feature_name_cubit.dart'; +import '../stateless/feature_name_widget.dart'; +import 'feature_name_parent.dart'; + +/// {@template feature_name_screen} +/// FeatureNameScreen is the merge of Provider and Consumer. +/// {@endtemplate} +class FeatureNameScreen + extends CubitScreen { + /// {@macro feature_name_screen} + const FeatureNameScreen({super.key}); + + @override + FeatureNameCubit create(BuildContext context) => FeatureNameCubit(); + + @override + FeatureNameCubit init(BuildContext context, FeatureNameCubit bloc) => + bloc..yourCustomFunction(); + + @override + Widget parent(BuildContext context, Widget child) => + FeatureNameParent(child: child); + + // Rebuild on every bloc changes + @override + Widget onBuild(BuildContext context, FeatureNameState state) => + const FeatureNameWidget(); +} diff --git a/apps/wyatt_feature_brick/lib/feature_name/screens/widgets/feature_name_consumer_widget.dart b/apps/wyatt_feature_brick/lib/feature_name/screens/widgets/feature_name_consumer_widget.dart new file mode 100644 index 0000000..49d40ef --- /dev/null +++ b/apps/wyatt_feature_brick/lib/feature_name/screens/widgets/feature_name_consumer_widget.dart @@ -0,0 +1,18 @@ +// ignore_for_file: always_use_package_imports + +import 'package:flutter/material.dart'; +import 'package:wyatt_bloc_helper/wyatt_bloc_helper.dart'; + +import '../../blocs/feature_name_cubit/feature_name_cubit.dart'; + +/// {@template feature_name_consumer_widget} +/// FeatureNameConsumerWidget is a stateful widget. Aware of state changes. +/// {@endtemplate} +class FeatureNameConsumerWidget + extends CubitConsumerScreen { + /// {@macro feature_name_sf_widget} + const FeatureNameConsumerWidget({super.key}); + + @override + Widget onBuild(BuildContext context, FeatureNameState state) => Container(); +} diff --git a/apps/wyatt_feature_brick/lib/feature_name/state_management/feature_name_state_management.dart b/apps/wyatt_feature_brick/lib/feature_name/state_management/feature_name_state_management.dart deleted file mode 100644 index 5c958f4..0000000 --- a/apps/wyatt_feature_brick/lib/feature_name/state_management/feature_name_state_management.dart +++ /dev/null @@ -1,25 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:wyatt_bloc_helper/wyatt_bloc_helper.dart'; - -// ignore: always_use_package_imports -import './feature_name_wrapper_widget.dart'; -// ignore: always_use_package_imports -import './widgets/feature_name_widget.dart'; -// ignore: always_use_package_imports -import '../cubit/feature_name_cubit.dart'; - -class FeatureNameCubitStateManagement - extends CubitScreen { - const FeatureNameCubitStateManagement({super.key}); - - @override - FeatureNameCubit create(BuildContext context) => FeatureNameCubit(); - - @override - Widget onWrap(BuildContext context, Widget child) => - FeatureNameWrapperWidget(child: child); - - @override - Widget onBuild(BuildContext context, FeatureNameState state) => - const FeatureNameWidget(); -} diff --git a/apps/wyatt_feature_brick/lib/feature_name/state_management/feature_name_wrapper_widget.dart b/apps/wyatt_feature_brick/lib/feature_name/state_management/feature_name_wrapper_widget.dart deleted file mode 100644 index 6fa4070..0000000 --- a/apps/wyatt_feature_brick/lib/feature_name/state_management/feature_name_wrapper_widget.dart +++ /dev/null @@ -1,14 +0,0 @@ -import 'package:flutter/material.dart'; - -class FeatureNameWrapperWidget extends StatelessWidget { - final Widget child; - const FeatureNameWrapperWidget({ - required this.child, - super.key, - }); - - @override - Widget build(BuildContext context) => Container( - child: child, - ); -} diff --git a/apps/wyatt_feature_brick/lib/feature_name/state_management/widgets/feature_name_widget.dart b/apps/wyatt_feature_brick/lib/feature_name/state_management/widgets/feature_name_widget.dart deleted file mode 100644 index 9ab7ada..0000000 --- a/apps/wyatt_feature_brick/lib/feature_name/state_management/widgets/feature_name_widget.dart +++ /dev/null @@ -1,8 +0,0 @@ -import 'package:flutter/material.dart'; - -class FeatureNameWidget extends StatelessWidget { - const FeatureNameWidget({super.key}); - - @override - Widget build(BuildContext context) => const SizedBox(); -} diff --git a/apps/wyatt_feature_brick/lib/feature_name/stateless/feature_name_widget.dart b/apps/wyatt_feature_brick/lib/feature_name/stateless/feature_name_widget.dart new file mode 100644 index 0000000..9a4fd85 --- /dev/null +++ b/apps/wyatt_feature_brick/lib/feature_name/stateless/feature_name_widget.dart @@ -0,0 +1,12 @@ +import 'package:flutter/material.dart'; + +/// {@template feature_name_widget} +/// FeatureNameWidget is a stateless widget. (Not aware of cubit or bloc states) +/// {@endtemplate} +class FeatureNameWidget extends StatelessWidget { + /// {@macro feature_name_widget} + const FeatureNameWidget({super.key}); + + @override + Widget build(BuildContext context) => Container(); +} diff --git a/apps/wyatt_feature_brick/pubspec.yaml b/apps/wyatt_feature_brick/pubspec.yaml index e73da2d..92a89c6 100644 --- a/apps/wyatt_feature_brick/pubspec.yaml +++ b/apps/wyatt_feature_brick/pubspec.yaml @@ -1,99 +1,33 @@ name: wyatt_feature_brick description: A new Flutter project. - -# The following line prevents the package from being accidentally published to -# pub.dev using `flutter pub publish`. This is preferred for private packages. -publish_to: "none" # Remove this line if you wish to publish to pub.dev - -# The following defines the version and build number for your application. -# A version number is three numbers separated by dots, like 1.2.43 -# followed by an optional build number separated by a +. -# Both the version and the builder number may be overridden in flutter -# build by specifying --build-name and --build-number, respectively. -# In Android, build-name is used as versionName while build-number used as versionCode. -# Read more about Android versioning at https://developer.android.com/studio/publish/versioning -# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. -# Read more about iOS versioning at -# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html version: 1.0.0+1 +publish_to: "none" + environment: - sdk: ">=2.17.6 <3.0.0" + sdk: ">=2.18.0 <3.0.0" -# Dependencies specify other packages that your package needs in order to work. -# To automatically upgrade your package dependencies to the latest versions -# consider running `flutter pub upgrade --major-versions`. Alternatively, -# dependencies can be manually updated by changing the version numbers below to -# the latest version available on pub.dev. To see which dependencies have newer -# versions available, run `flutter pub outdated`. dependencies: - flutter: - sdk: flutter + flutter: { sdk: flutter } - # The following adds the Cupertino Icons font to your application. - # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.2 flutter_bloc: ^8.0.1 equatable: ^2.0.3 + wyatt_bloc_helper: - git: - url: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages - ref: bloc/feature/fix_and_repo - path: packages/wyatt_bloc_helper + hosted: + url: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/ + name: wyatt_bloc_helper + version: 2.0.0 dev_dependencies: - flutter_test: - sdk: flutter + flutter_test: { sdk: flutter } + wyatt_analysis: - git: - url: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages - ref: wyatt_analysis-v2.1.0 - path: packages/wyatt_analysis + hosted: + url: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/ + name: wyatt_analysis + version: 2.3.0 - # The "flutter_lints" package below contains a set of recommended lints to - # encourage good coding practices. The lint set provided by the package is - # activated in the `analysis_options.yaml` file located at the root of your - # package. See that file for information about deactivating specific lint - # rules and activating additional ones. - flutter_lints: ^2.0.0 - -# For information on the generic Dart part of this file, see the -# following page: https://dart.dev/tools/pub/pubspec - -# The following section is specific to Flutter packages. flutter: - # The following line ensures that the Material Icons font is - # included with your application, so that you can use the icons in - # the material Icons class. uses-material-design: true - - # To add assets to your application, add an assets section, like this: - # assets: - # - images/a_dot_burr.jpeg - # - images/a_dot_ham.jpeg - - # An image asset can refer to one or more resolution-specific "variants", see - # https://flutter.dev/assets-and-images/#resolution-aware - - # For details regarding adding assets from package dependencies, see - # https://flutter.dev/assets-and-images/#from-packages - - # To add custom fonts to your application, add a fonts section here, - # in this "flutter" section. Each entry in this list should have a - # "family" key with the font family name, and a "fonts" key with a - # list giving the asset and other descriptors for the font. For - # example: - # fonts: - # - family: Schyler - # fonts: - # - asset: fonts/Schyler-Regular.ttf - # - asset: fonts/Schyler-Italic.ttf - # style: italic - # - family: Trajan Pro - # fonts: - # - asset: fonts/TrajanPro.ttf - # - asset: fonts/TrajanPro_Bold.ttf - # weight: 700 - # - # For details regarding fonts from package dependencies, - # see https://flutter.dev/custom-fonts/#from-packages diff --git a/apps/wyatt_feature_brick/test/widget_test.dart b/apps/wyatt_feature_brick/test/widget_test.dart deleted file mode 100644 index 1ce5d91..0000000 --- a/apps/wyatt_feature_brick/test/widget_test.dart +++ /dev/null @@ -1,30 +0,0 @@ -// This is a basic Flutter widget test. -// -// To perform an interaction with a widget in your test, use the WidgetTester -// utility in the flutter_test package. For example, you can send tap and scroll -// gestures. You can also use WidgetTester to find child widgets in the widget -// tree, read text, and verify that the values of widget properties are correct. - -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; - -import 'package:wyatt_feature_brick/main.dart'; - -void main() { - testWidgets('Counter increments smoke test', (WidgetTester tester) async { - // Build our app and trigger a frame. - await tester.pumpWidget(const MyApp()); - - // Verify that our counter starts at 0. - expect(find.text('0'), findsOneWidget); - expect(find.text('1'), findsNothing); - - // Tap the '+' icon and trigger a frame. - await tester.tap(find.byIcon(Icons.add)); - await tester.pump(); - - // Verify that our counter has incremented. - expect(find.text('0'), findsNothing); - expect(find.text('1'), findsOneWidget); - }); -} diff --git a/bricks/wyatt_feature_brick/CHANGELOG.md b/bricks/wyatt_feature_brick/CHANGELOG.md deleted file mode 100644 index f0640d6..0000000 --- a/bricks/wyatt_feature_brick/CHANGELOG.md +++ /dev/null @@ -1,3 +0,0 @@ -# 0.1.0+1 - -- TODO: Describe initial release. diff --git a/bricks/wyatt_feature_brick/LICENSE b/bricks/wyatt_feature_brick/LICENSE deleted file mode 100644 index ba75c69..0000000 --- a/bricks/wyatt_feature_brick/LICENSE +++ /dev/null @@ -1 +0,0 @@ -TODO: Add your license here. diff --git a/bricks/wyatt_feature_brick/README.md b/bricks/wyatt_feature_brick/README.md index b714e43..334e373 100644 --- a/bricks/wyatt_feature_brick/README.md +++ b/bricks/wyatt_feature_brick/README.md @@ -2,15 +2,12 @@ [![Powered by Mason](https://img.shields.io/endpoint?url=https%3A%2F%2Ftinyurl.com%2Fmason-badge)](https://github.com/felangel/mason) - - - A brick to create a feature using best practices and your state management of choice! Supports Bloc & Cubit. ## How to use 🚀 ``` -mason make feature_brick --feature_name audit --state_management cubit --use_equatable true +mason make feature_brick --feature_name audit ``` ## Variables ✨ @@ -22,25 +19,34 @@ mason make feature_brick --feature_name audit --state_management cubit --use_equ ## Outputs 📦 -### Using Bloc - ```shell ---feature_name login --state_management bloc +--feature_name feature ``` ``` ├── feature │ ├── blocs -| | └── feature_bloc -│ │ ├── feature_bloc.dart -│ │ ├── feature_event.dart +│ │ ├── feature_bloc +│ │ │ ├── feature_bloc.dart +│ │ │ ├── feature_event.dart +│ │ │ └── feature_state.dart +│ │ └── feature_cubit +│ │ ├── feature_cubit.dart │ │ └── feature_state.dart -│ ├── state_management -| | └── ... +│ ├── screens +│ │ ├── widgets +│ │ │ └── feature_consumer_widget.dart +│ │ ├── feature_parent.dart +│ │ ├── feature_provider.dart +│ │ └── feature_screen.dart +│ ├── stateless +│ │ └── feature_widget.dart │ └── feature.dart └── ... ``` +## Using BLoC + - {{featureName}}_bloc.dart ```dart diff --git a/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/bloc/{{feature_name.snakeCase()}}_bloc.dart b/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/blocs/{{feature_name.snakeCase()}}_bloc/{{feature_name.snakeCase()}}_bloc.dart similarity index 75% rename from bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/bloc/{{feature_name.snakeCase()}}_bloc.dart rename to bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/blocs/{{feature_name.snakeCase()}}_bloc/{{feature_name.snakeCase()}}_bloc.dart index 68dcdbf..899569a 100644 --- a/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/bloc/{{feature_name.snakeCase()}}_bloc.dart +++ b/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/blocs/{{feature_name.snakeCase()}}_bloc/{{feature_name.snakeCase()}}_bloc.dart @@ -6,7 +6,11 @@ import 'package:flutter_bloc/flutter_bloc.dart'; part '{{#snakeCase}}{{feature_name}}{{/snakeCase}}_event.dart'; part '{{#snakeCase}}{{feature_name}}{{/snakeCase}}_state.dart'; +/// {@template {{#snakeCase}}{{feature_name}}{{/snakeCase}}_bloc} +/// {{#pascalCase}}{{feature_name}}{{/pascalCase}}Bloc description +/// {@endtemplate} class {{#pascalCase}}{{feature_name}}{{/pascalCase}}Bloc extends Bloc<{{#pascalCase}}{{feature_name}}{{/pascalCase}}Event, {{#pascalCase}}{{feature_name}}{{/pascalCase}}State> { + /// {@macro {{#snakeCase}}{{feature_name}}{{/snakeCase}}_bloc} {{#pascalCase}}{{feature_name}}{{/pascalCase}}Bloc() : super(const {{#pascalCase}}{{feature_name}}{{/pascalCase}}Initial()) { on(_onCustom{{#pascalCase}}{{feature_name}}{{/pascalCase}}Event); } @@ -14,7 +18,9 @@ class {{#pascalCase}}{{feature_name}}{{/pascalCase}}Bloc extends Bloc<{{#pascalC FutureOr _onCustom{{#pascalCase}}{{feature_name}}{{/pascalCase}}Event( Custom{{#pascalCase}}{{feature_name}}{{/pascalCase}}Event event, Emitter<{{#pascalCase}}{{feature_name}}{{/pascalCase}}State> emit, - ) { - // TODO(wyattstudio): Add Logic + ) async { + // TODO(wyatt): Add custom UI logic + const _ = 1 + 1; + return; } } diff --git a/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/bloc/{{feature_name.snakeCase()}}_event.dart b/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/blocs/{{feature_name.snakeCase()}}_bloc/{{feature_name.snakeCase()}}_event.dart similarity index 75% rename from bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/bloc/{{feature_name.snakeCase()}}_event.dart rename to bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/blocs/{{feature_name.snakeCase()}}_bloc/{{feature_name.snakeCase()}}_event.dart index 87bdc73..8175332 100644 --- a/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/bloc/{{feature_name.snakeCase()}}_event.dart +++ b/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/blocs/{{feature_name.snakeCase()}}_bloc/{{feature_name.snakeCase()}}_event.dart @@ -1,6 +1,10 @@ part of '{{#snakeCase}}{{feature_name}}{{/snakeCase}}_bloc.dart'; +/// {@template {{#snakeCase}}{{feature_name}}{{/snakeCase}}_event} +/// {{#pascalCase}}{{feature_name}}{{/pascalCase}}Event description +/// {@endtemplate} abstract class {{#pascalCase}}{{feature_name}}{{/pascalCase}}Event extends Equatable { + /// {@macro {{#snakeCase}}{{feature_name}}{{/snakeCase}}_event} const {{#pascalCase}}{{feature_name}}{{/pascalCase}}Event(); } diff --git a/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/bloc/{{feature_name.snakeCase()}}_state.dart b/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/blocs/{{feature_name.snakeCase()}}_bloc/{{feature_name.snakeCase()}}_state.dart similarity index 100% rename from bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/bloc/{{feature_name.snakeCase()}}_state.dart rename to bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/blocs/{{feature_name.snakeCase()}}_bloc/{{feature_name.snakeCase()}}_state.dart diff --git a/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/cubit/{{feature_name.snakeCase()}}_cubit.dart b/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/blocs/{{feature_name.snakeCase()}}_cubit/{{feature_name.snakeCase()}}_cubit.dart similarity index 58% rename from bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/cubit/{{feature_name.snakeCase()}}_cubit.dart rename to bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/blocs/{{feature_name.snakeCase()}}_cubit/{{feature_name.snakeCase()}}_cubit.dart index 258b7c8..7ecac4c 100644 --- a/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/cubit/{{feature_name.snakeCase()}}_cubit.dart +++ b/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/blocs/{{feature_name.snakeCase()}}_cubit/{{feature_name.snakeCase()}}_cubit.dart @@ -5,11 +5,17 @@ import 'package:flutter_bloc/flutter_bloc.dart'; part '{{#snakeCase}}{{feature_name}}{{/snakeCase}}_state.dart'; +/// {@template {{#snakeCase}}{{feature_name}}{{/snakeCase}}_cubit} +/// {{#pascalCase}}{{feature_name}}{{/pascalCase}}Cubit description +/// {@endtemplate} class {{#pascalCase}}{{feature_name}}{{/pascalCase}}Cubit extends Cubit<{{#pascalCase}}{{feature_name}}{{/pascalCase}}State> { + /// {@macro {{#snakeCase}}{{feature_name}}{{/snakeCase}}_cubit} {{#pascalCase}}{{feature_name}}{{/pascalCase}}Cubit() : super(const {{#pascalCase}}{{feature_name}}{{/pascalCase}}Initial()); /// A description for yourCustomFunction - FutureOr yourCustomFunction() { - // TODO(wyattstudio): Add Logic + FutureOr yourCustomFunction() async { + // TODO(wyatt): Add custom UI logic + const _ = 1 + 1; + return; } } diff --git a/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/cubit/{{feature_name.snakeCase()}}_state.dart b/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/blocs/{{feature_name.snakeCase()}}_cubit/{{feature_name.snakeCase()}}_state.dart similarity index 100% rename from bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/cubit/{{feature_name.snakeCase()}}_state.dart rename to bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/blocs/{{feature_name.snakeCase()}}_cubit/{{feature_name.snakeCase()}}_state.dart diff --git a/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/screens/widgets/{{feature_name.snakeCase()}}_consumer_widget.dart b/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/screens/widgets/{{feature_name.snakeCase()}}_consumer_widget.dart new file mode 100644 index 0000000..f40a34f --- /dev/null +++ b/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/screens/widgets/{{feature_name.snakeCase()}}_consumer_widget.dart @@ -0,0 +1,18 @@ +// ignore_for_file: always_use_package_imports + +import 'package:flutter/material.dart'; +import 'package:wyatt_bloc_helper/wyatt_bloc_helper.dart'; + +import '../../blocs/{{#snakeCase}}{{feature_name}}{{/snakeCase}}_cubit/{{#snakeCase}}{{feature_name}}{{/snakeCase}}_cubit.dart'; + +/// {@template {{#snakeCase}}{{feature_name}}{{/snakeCase}}_consumer_widget} +/// {{#pascalCase}}{{feature_name}}{{/pascalCase}}ConsumerWidget is a stateful widget. Aware of state changes. +/// {@endtemplate} +class {{#pascalCase}}{{feature_name}}{{/pascalCase}}ConsumerWidget + extends CubitConsumerScreen<{{#pascalCase}}{{feature_name}}{{/pascalCase}}Cubit, {{#pascalCase}}{{feature_name}}{{/pascalCase}}State> { + /// {@macro {{#snakeCase}}{{feature_name}}{{/snakeCase}}_sf_widget} + const {{#pascalCase}}{{feature_name}}{{/pascalCase}}ConsumerWidget({super.key}); + + @override + Widget onBuild(BuildContext context, {{#pascalCase}}{{feature_name}}{{/pascalCase}}State state) => Container(); +} diff --git a/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/screens/{{feature_name.snakeCase()}}_parent.dart b/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/screens/{{feature_name.snakeCase()}}_parent.dart new file mode 100644 index 0000000..1e6205d --- /dev/null +++ b/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/screens/{{feature_name.snakeCase()}}_parent.dart @@ -0,0 +1,15 @@ +import 'package:flutter/material.dart'; + +class {{#pascalCase}}{{feature_name}}{{/pascalCase}}Parent extends StatelessWidget { + const {{#pascalCase}}{{feature_name}}{{/pascalCase}}Parent({ + required this.child, + super.key, + }); + + final Widget child; + + @override + Widget build(BuildContext context) => Scaffold( + body: SafeArea(child: child), + ); +} diff --git a/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/screens/{{feature_name.snakeCase()}}_provider.dart b/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/screens/{{feature_name.snakeCase()}}_provider.dart new file mode 100644 index 0000000..4c83ec6 --- /dev/null +++ b/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/screens/{{feature_name.snakeCase()}}_provider.dart @@ -0,0 +1,22 @@ +// ignore_for_file: always_use_package_imports + +import 'package:flutter/material.dart'; +import 'package:wyatt_bloc_helper/wyatt_bloc_helper.dart'; + +import '../blocs/{{#snakeCase}}{{feature_name}}{{/snakeCase}}_cubit/{{#snakeCase}}{{feature_name}}{{/snakeCase}}_cubit.dart'; +import 'widgets/{{#snakeCase}}{{feature_name}}{{/snakeCase}}_consumer_widget.dart'; + +/// {@template {{#snakeCase}}{{feature_name}}{{/snakeCase}}_provider} +/// {{#pascalCase}}{{feature_name}}{{/pascalCase}}Provider provides bloc to his children. +/// {@endtemplate} +class {{#pascalCase}}{{feature_name}}{{/pascalCase}}Provider + extends CubitProviderScreen<{{#pascalCase}}{{feature_name}}{{/pascalCase}}Cubit, {{#pascalCase}}{{feature_name}}{{/pascalCase}}State> { + /// {@macro {{#snakeCase}}{{feature_name}}{{/snakeCase}}_provider} + const {{#pascalCase}}{{feature_name}}{{/pascalCase}}Provider({super.key}); + + @override + {{#pascalCase}}{{feature_name}}{{/pascalCase}}Cubit create(BuildContext context) => {{#pascalCase}}{{feature_name}}{{/pascalCase}}Cubit(); + + @override + Widget builder(BuildContext context) => const {{#pascalCase}}{{feature_name}}{{/pascalCase}}ConsumerWidget(); +} diff --git a/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/screens/{{feature_name.snakeCase()}}_screen.dart b/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/screens/{{feature_name.snakeCase()}}_screen.dart new file mode 100644 index 0000000..b60c95d --- /dev/null +++ b/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/screens/{{feature_name.snakeCase()}}_screen.dart @@ -0,0 +1,33 @@ +// ignore_for_file: always_use_package_imports + +import 'package:flutter/material.dart'; +import 'package:wyatt_bloc_helper/wyatt_bloc_helper.dart'; + +import '../blocs/{{#snakeCase}}{{feature_name}}{{/snakeCase}}_cubit/{{#snakeCase}}{{feature_name}}{{/snakeCase}}_cubit.dart'; +import '../stateless/{{#snakeCase}}{{feature_name}}{{/snakeCase}}_widget.dart'; +import '{{#snakeCase}}{{feature_name}}{{/snakeCase}}_parent.dart'; + +/// {@template {{#snakeCase}}{{feature_name}}{{/snakeCase}}_screen} +/// {{#pascalCase}}{{feature_name}}{{/pascalCase}}Screen is the merge of Provider and Consumer. +/// {@endtemplate} +class {{#pascalCase}}{{feature_name}}{{/pascalCase}}Screen + extends CubitScreen<{{#pascalCase}}{{feature_name}}{{/pascalCase}}Cubit, {{#pascalCase}}{{feature_name}}{{/pascalCase}}State> { + /// {@macro {{#snakeCase}}{{feature_name}}{{/snakeCase}}_screen} + const {{#pascalCase}}{{feature_name}}{{/pascalCase}}Screen({super.key}); + + @override + {{#pascalCase}}{{feature_name}}{{/pascalCase}}Cubit create(BuildContext context) => {{#pascalCase}}{{feature_name}}{{/pascalCase}}Cubit(); + + @override + {{#pascalCase}}{{feature_name}}{{/pascalCase}}Cubit init(BuildContext context, {{#pascalCase}}{{feature_name}}{{/pascalCase}}Cubit bloc) => + bloc..yourCustomFunction(); + + @override + Widget parent(BuildContext context, Widget child) => + {{#pascalCase}}{{feature_name}}{{/pascalCase}}Parent(child: child); + + // Rebuild on every bloc changes + @override + Widget onBuild(BuildContext context, {{#pascalCase}}{{feature_name}}{{/pascalCase}}State state) => + const {{#pascalCase}}{{feature_name}}{{/pascalCase}}Widget(); +} diff --git a/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/state_management/widgets/{{feature_name.snakeCase()}}_widget.dart b/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/state_management/widgets/{{feature_name.snakeCase()}}_widget.dart deleted file mode 100644 index 427d8cb..0000000 --- a/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/state_management/widgets/{{feature_name.snakeCase()}}_widget.dart +++ /dev/null @@ -1,8 +0,0 @@ -import 'package:flutter/material.dart'; - -class {{#pascalCase}}{{feature_name}}{{/pascalCase}}Widget extends StatelessWidget { - const {{#pascalCase}}{{feature_name}}{{/pascalCase}}Widget({super.key}); - - @override - Widget build(BuildContext context) => const SizedBox(); -} diff --git a/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/state_management/{{feature_name.snakeCase()}}_state_management.dart b/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/state_management/{{feature_name.snakeCase()}}_state_management.dart deleted file mode 100644 index 59d8bdb..0000000 --- a/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/state_management/{{feature_name.snakeCase()}}_state_management.dart +++ /dev/null @@ -1,25 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:wyatt_bloc_helper/wyatt_bloc_helper.dart'; - -// ignore: always_use_package_imports -import './{{#snakeCase}}{{feature_name}}{{/snakeCase}}_wrapper_widget.dart'; -// ignore: always_use_package_imports -import './widgets/{{#snakeCase}}{{feature_name}}{{/snakeCase}}_widget.dart'; -// ignore: always_use_package_imports -import '../cubit/{{#snakeCase}}{{feature_name}}{{/snakeCase}}_cubit.dart'; - -class {{#pascalCase}}{{feature_name}}{{/pascalCase}}CubitStateManagement - extends CubitScreen<{{#pascalCase}}{{feature_name}}{{/pascalCase}}Cubit, {{#pascalCase}}{{feature_name}}{{/pascalCase}}State> { - const {{#pascalCase}}{{feature_name}}{{/pascalCase}}CubitStateManagement({super.key}); - - @override - {{#pascalCase}}{{feature_name}}{{/pascalCase}}Cubit create(BuildContext context) => {{#pascalCase}}{{feature_name}}{{/pascalCase}}Cubit(); - - @override - Widget onWrap(BuildContext context, Widget child) => - {{#pascalCase}}{{feature_name}}{{/pascalCase}}WrapperWidget(child: child); - - @override - Widget onBuild(BuildContext context, {{#pascalCase}}{{feature_name}}{{/pascalCase}}State state) => - const {{#pascalCase}}{{feature_name}}{{/pascalCase}}Widget(); -} diff --git a/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/state_management/{{feature_name.snakeCase()}}_wrapper_widget.dart b/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/state_management/{{feature_name.snakeCase()}}_wrapper_widget.dart deleted file mode 100644 index 70a2939..0000000 --- a/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/state_management/{{feature_name.snakeCase()}}_wrapper_widget.dart +++ /dev/null @@ -1,14 +0,0 @@ -import 'package:flutter/material.dart'; - -class {{#pascalCase}}{{feature_name}}{{/pascalCase}}WrapperWidget extends StatelessWidget { - final Widget child; - const {{#pascalCase}}{{feature_name}}{{/pascalCase}}WrapperWidget({ - required this.child, - super.key, - }); - - @override - Widget build(BuildContext context) => Container( - child: child, - ); -} diff --git a/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/stateless/{{feature_name.snakeCase()}}_widget.dart b/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/stateless/{{feature_name.snakeCase()}}_widget.dart new file mode 100644 index 0000000..d3f96d8 --- /dev/null +++ b/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/stateless/{{feature_name.snakeCase()}}_widget.dart @@ -0,0 +1,12 @@ +import 'package:flutter/material.dart'; + +/// {@template {{#snakeCase}}{{feature_name}}{{/snakeCase}}_widget} +/// {{#pascalCase}}{{feature_name}}{{/pascalCase}}Widget is a stateless widget. (Not aware of cubit or bloc states) +/// {@endtemplate} +class {{#pascalCase}}{{feature_name}}{{/pascalCase}}Widget extends StatelessWidget { + /// {@macro {{#snakeCase}}{{feature_name}}{{/snakeCase}}_widget} + const {{#pascalCase}}{{feature_name}}{{/pascalCase}}Widget({super.key}); + + @override + Widget build(BuildContext context) => Container(); +} diff --git a/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/{{feature_name.snakeCase()}}.dart b/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/{{feature_name.snakeCase()}}.dart index a41ad18..d94cae3 100644 --- a/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/{{feature_name.snakeCase()}}.dart +++ b/bricks/wyatt_feature_brick/__brick__/{{feature_name.snakeCase()}}/{{feature_name.snakeCase()}}.dart @@ -1 +1,2 @@ -export './state_management/{{#snakeCase}}{{feature_name}}{{/snakeCase}}_state_management.dart'; +export 'screens/{{#snakeCase}}{{feature_name}}{{/snakeCase}}_provider.dart'; +export 'screens/{{#snakeCase}}{{feature_name}}{{/snakeCase}}_screen.dart'; diff --git a/bricks/wyatt_feature_brick/brick.yaml b/bricks/wyatt_feature_brick/brick.yaml index aa5c907..69a68c8 100644 --- a/bricks/wyatt_feature_brick/brick.yaml +++ b/bricks/wyatt_feature_brick/brick.yaml @@ -1,5 +1,5 @@ name: wyatt_feature_brick -description: new feature brick including state mananement +description: New feature brick including state mananement version: 0.1.0+1