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 db77bb4..0000000
Binary files a/apps/wyatt_feature_brick/android/app/src/main/res/mipmap-hdpi/ic_launcher.png and /dev/null differ
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 17987b7..0000000
Binary files a/apps/wyatt_feature_brick/android/app/src/main/res/mipmap-mdpi/ic_launcher.png and /dev/null differ
diff --git a/apps/wyatt_feature_brick/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/apps/wyatt_feature_brick/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
deleted file mode 100644
index 09d4391..0000000
Binary files a/apps/wyatt_feature_brick/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ
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 d5f1c8d..0000000
Binary files a/apps/wyatt_feature_brick/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ
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 4d6372e..0000000
Binary files a/apps/wyatt_feature_brick/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ
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 @@
[](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