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 @@ [![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