chore: remove deprecated bricks

This commit is contained in:
Hugo Pointcheval 2023-02-10 09:47:42 +01:00
parent 5009f1ef21
commit b407797ee8
Signed by: hugo
GPG Key ID: 3AAC487E131E00BC
322 changed files with 0 additions and 14228 deletions

View File

@ -1,47 +0,0 @@
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/
migrate_working_dir/
# IntelliJ related
*.iml
*.ipr
*.iws
.idea/
# The .vscode folder contains launch configuration and tasks you configure in
# VS Code which you may wish to be included in version control, so this line
# is commented out by default.
#.vscode/
# Flutter/Dart/Pub related
**/doc/api/
**/ios/Flutter/.last_build_id
.dart_tool/
.flutter-plugins
.flutter-plugins-dependencies
.packages
.pub-cache/
.pub/
/build/
# Web related
lib/generated_plugin_registrant.dart
# Symbolication related
app.*.symbols
# Obfuscation related
app.*.map.json
# Android Studio will place build artifacts here
/android/app/debug
/android/app/profile
/android/app/release

View File

@ -1,30 +0,0 @@
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled.
version:
revision: f1875d570e39de09040c8f79aa13cc56baab8db1
channel: stable
project_type: app
# Tracks metadata for the flutter migrate command
migration:
platforms:
- platform: root
create_revision: f1875d570e39de09040c8f79aa13cc56baab8db1
base_revision: f1875d570e39de09040c8f79aa13cc56baab8db1
- platform: web
create_revision: f1875d570e39de09040c8f79aa13cc56baab8db1
base_revision: f1875d570e39de09040c8f79aa13cc56baab8db1
# User provided section
# List of Local paths (relative to this file) that should be
# ignored by the migrate tool.
#
# Files that are not part of the templates will be ignored by default.
unmanaged_files:
- 'lib/main.dart'
- 'ios/Runner.xcodeproj/project.pbxproj'

View File

@ -1,125 +0,0 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Launch development",
"request": "launch",
"type": "dart",
"program": "lib/main_development.dart",
"args": [
"--flavor",
"development",
"--target",
"lib/main_development.dart"
],
"flutterMode": "debug"
},
{
"name": "Launch development in profile mode",
"request": "launch",
"type": "dart",
"program": "lib/main_development.dart",
"args": [
"--flavor",
"development",
"--target",
"lib/main_development.dart"
],
"flutterMode": "profile"
},
{
"name": "Launch development in release mode",
"request": "launch",
"type": "dart",
"program": "lib/main_development.dart",
"args": [
"--flavor",
"development",
"--target",
"lib/main_development.dart"
],
"flutterMode": "release"
},
{
"name": "Launch staging",
"request": "launch",
"type": "dart",
"program": "lib/main_staging.dart",
"args": [
"--flavor",
"staging",
"--target",
"lib/main_staging.dart"
],
"flutterMode": "debug"
},
{
"name": "Launch staging in profile mode",
"request": "launch",
"type": "dart",
"program": "lib/main_staging.dart",
"args": [
"--flavor",
"staging",
"--target",
"lib/main_staging.dart"
],
"flutterMode": "profile"
},
{
"name": "Launch staging in release mode",
"request": "launch",
"type": "dart",
"program": "lib/main_staging.dart",
"args": [
"--flavor",
"staging",
"--target",
"lib/main_staging.dart"
],
"flutterMode": "release"
},
{
"name": "Launch production",
"request": "launch",
"type": "dart",
"program": "lib/main_production.dart",
"args": [
"--flavor",
"production",
"--target",
"lib/main_production.dart"
],
"flutterMode": "debug"
},
{
"name": "Launch production in profile mode",
"request": "launch",
"type": "dart",
"program": "lib/main_production.dart",
"args": [
"--flavor",
"production",
"--target",
"lib/main_production.dart"
],
"flutterMode": "profile"
},
{
"name": "Launch production in release mode",
"request": "launch",
"type": "dart",
"program": "lib/main_production.dart",
"args": [
"--flavor",
"production",
"--target",
"lib/main_production.dart"
],
"flutterMode": "release"
},
]
}

View File

@ -1,14 +0,0 @@
{
"bloc.newCubitTemplate.type": "equatable",
"psi-header.config": {
"blankLinesAfter": 0,
"forceToTop": true,
},
"psi-header.templates": [
{
"language": "*",
"template": [],
// disabled,
}
],
}

View File

@ -1,54 +0,0 @@
.PHONY: help clean get upgrade format lint gen watch run-dev run-stg run-prod
# Adding a help file: https://gist.github.com/prwhite/8168133#gistcomment-1313022
help: ## This help dialog.
@IFS=$$'\n' ; \
help_lines=(`fgrep -h "##" $(MAKEFILE_LIST) | fgrep -v fgrep | sed -e 's/\\$$//'`); \
for help_line in $${help_lines[@]}; do \
IFS=$$'#' ; \
help_split=($$help_line) ; \
help_command=`echo $${help_split[0]} | sed -e 's/^ *//' -e 's/ *$$//'` ; \
help_info=`echo $${help_split[2]} | sed -e 's/^ *//' -e 's/ *$$//'` ; \
printf "%-30s %s\n" $$help_command $$help_info ; \
done
clean: ## Cleans the environment.
@echo "• Cleaning the project..."
@rm -rf pubspec.lock
@flutter clean
get: ## Gets the dependencies.
@echo "• Getting the dependencies..."
@flutter pub get
upgrade: clean ## Upgrades dependencies.
@echo "• Upgrading dependencies..."
@flutter pub upgrade
format: ## Formats the code.
@echo "• Formatting the code"
@dart format . --fix
lint: ## Lints the code.
@echo "• Verifying code..."
@dart analyze . || (echo "Error in project"; exit 1)
gen: get ## Run build_runner build (Freezed, Fluttergen, Hive etc...)
@echo "• build_runner build"
@flutter pub run build_runner build
watch: get ## Run build_runner watch (Freezed, Fluttergen, Hive etc...)
@echo "• build_runner watch"
@flutter pub run build_runner watch
run-dev: ## Run app in development mode
@echo "• Running the app (development)"
@flutter run --flavor development --target lib/main_development.dart
run-stg: ## Run app in staging mode
@echo "• Running the app (staging)"
@flutter run --flavor staging --target lib/main_staging.dart
run-prod: ## Run app in production mode
@echo "• Running the app (production)"
@flutter run --flavor production --target lib/main_production.dart

View File

@ -1,16 +0,0 @@
# wyatt_clean_code
A new Flutter project.
## Getting Started
This project is a starting point for a Flutter application.
A few resources to get you started if this is your first Flutter project:
- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab)
- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook)
For help getting started with Flutter development, view the
[online documentation](https://docs.flutter.dev/), which offers tutorials,
samples, guidance on mobile development, and a full API reference.

View File

@ -1,35 +0,0 @@
# This file configures the analyzer, which statically analyzes Dart code to
# check for errors, warnings, and lints.
#
# The issues identified by the analyzer are surfaced in the UI of Dart-enabled
# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
# invoked from the command line by running `flutter analyze`.
# The following line activates a set of recommended lints for Flutter by
# Wyatt Studio, for apps packages, and plugins designed to
# encourage good coding practices.
include: package:wyatt_analysis/analysis_options.flutter.yaml
analyzer:
exclude:
- '**/*.g.dart'
- '**/*.freezed.dart'
linter:
# The lint rules applied to this project can be customized in the
# section below to disable rules from the `package:flutter_lints/flutter.yaml`
# included above or to enable additional rules. A list of all available lints
# and their documentation is published at
# https://dart-lang.github.io/linter/lints/index.html.
#
# Instead of disabling a lint rule for the entire project in the
# section below, it can also be suppressed for a single line of code
# or a specific dart file by using the `// ignore: name_of_lint` and
# `// ignore_for_file: name_of_lint` syntax on the line or in the file
# producing the lint.
rules:
# avoid_print: false # Uncomment to disable the `avoid_print` rule
# prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
# Additional information about this file can be found at
# https://dart.dev/guides/language/analysis-options

View File

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

View File

@ -1,117 +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'
}
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
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_clean_code"
// 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
}
signingConfigs {
if (System.getenv("ANDROID_KEYSTORE_PATH")) {
release {
storeFile file(System.getenv("ANDROID_KEYSTORE_PATH"))
keyAlias System.getenv("ANDROID_KEYSTORE_ALIAS")
keyPassword System.getenv("ANDROID_KEYSTORE_PRIVATE_KEY_PASSWORD")
storePassword System.getenv("ANDROID_KEYSTORE_PASSWORD")
}
} else {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
}
}
flavorDimensions "default"
productFlavors {
production {
dimension "default"
applicationIdSuffix ""
manifestPlaceholders = [appName: "Wyatt Demo"]
}
staging {
dimension "default"
applicationIdSuffix ".stg"
manifestPlaceholders = [appName: "[STG] Wyatt Demo"]
}
development {
dimension "default"
applicationIdSuffix ".dev"
manifestPlaceholders = [appName: "[DEV] Wyatt Demo"]
}
}
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt')
}
debug {
signingConfig signingConfigs.debug
}
}
}
flutter {
source '../..'
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}

View File

@ -1,8 +0,0 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.wyatt_clean_code">
<!-- The INTERNET permission is required for development. Specifically,
the Flutter tool needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>

View File

@ -1,34 +0,0 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.wyatt_clean_code">
<application
android:label="wyatt_clean_code"
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher">
<activity
android:name=".MainActivity"
android:exported="true"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<!-- Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user
while the Flutter UI initializes. After that, this theme continues
to determine the Window background behind the Flutter UI. -->
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
<meta-data
android:name="flutterEmbedding"
android:value="2" />
</application>
</manifest>

View File

@ -1,6 +0,0 @@
package com.example.wyatt_clean_code
import io.flutter.embedding.android.FlutterActivity
class MainActivity: FlutterActivity() {
}

View File

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="?android:colorBackground" />
<!-- You can insert your own image assets here -->
<!-- <item>
<bitmap
android:gravity="center"
android:src="@mipmap/launch_image" />
</item> -->
</layer-list>

View File

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" />
<!-- You can insert your own image assets here -->
<!-- <item>
<bitmap
android:gravity="center"
android:src="@mipmap/launch_image" />
</item> -->
</layer-list>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 544 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 442 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 721 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -1,18 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on -->
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
<!-- Show a splash screen on the activity. Automatically removed when
the Flutter engine draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
</style>
<!-- Theme applied to the Android Window as soon as the process has started.
This theme determines the color of the Android Window while your
Flutter UI initializes, as well as behind your Flutter UI while its
running.
This Theme is only used starting with V2 of Flutter's Android embedding. -->
<style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
<item name="android:windowBackground">?android:colorBackground</item>
</style>
</resources>

View File

@ -1,18 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
<style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
<!-- Show a splash screen on the activity. Automatically removed when
the Flutter engine draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
</style>
<!-- Theme applied to the Android Window as soon as the process has started.
This theme determines the color of the Android Window while your
Flutter UI initializes, as well as behind your Flutter UI while its
running.
This Theme is only used starting with V2 of Flutter's Android embedding. -->
<style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
<item name="android:windowBackground">?android:colorBackground</item>
</style>
</resources>

View File

@ -1,8 +0,0 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.wyatt_clean_code">
<!-- The INTERNET permission is required for development. Specifically,
the Flutter tool needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>

View File

@ -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
}

View File

@ -1,3 +0,0 @@
org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true
android.enableJetifier=true

View File

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

View File

@ -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"

View File

@ -1,61 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="seedColor" type="material material-accent">#FF2196F3</color>
<color name="lightPrimary">#FF0061A6</color>
<color name="lightOnPrimary">#FFFFFFFF</color>
<color name="lightPrimaryContainer">#FFD0E4FF</color>
<color name="lightOnPrimaryContainer">#FF001D36</color>
<color name="lightSecondary">#FF535F70</color>
<color name="lightOnSecondary">#FFFFFFFF</color>
<color name="lightSecondaryContainer">#FFD6E3F7</color>
<color name="lightOnSecondaryContainer">#FF101C2B</color>
<color name="lightError">#FFBA1B1B</color>
<color name="lightOnError">#FFFFFFFF</color>
<color name="lightErrorContainer">#FFFFDAD4</color>
<color name="lightOnErrorContainer">#FF410001</color>
<color name="lightBackground">#FFFDFCFF</color>
<color name="lightOnBackground">#FF1B1B1B</color>
<color name="lightSurface">#FFFDFCFF</color>
<color name="lightOnSurface">#FF1B1B1B</color>
<color name="lightSurfaceVariant">#FFDFE2EB</color>
<color name="lightOnSurfaceVariant">#FF42474E</color>
<color name="lightOutline">#FF73777F</color>
<color name="lightShadow">#FF000000</color>
<color name="lightInverseSurface">#FF2F3033</color>
<color name="lightOnInverseSurface">#FFF1F0F4</color>
<color name="lightInversePrimary">#FF9CCAFF</color>
<color name="darkPrimary">#FF9CCAFF</color>
<color name="darkOnPrimary">#FF00325A</color>
<color name="darkPrimaryContainer">#FF00497F</color>
<color name="darkOnPrimaryContainer">#FFD0E4FF</color>
<color name="darkSecondary">#FFBBC8DB</color>
<color name="darkOnSecondary">#FF253140</color>
<color name="darkSecondaryContainer">#FF3C4858</color>
<color name="darkOnSecondaryContainer">#FFD6E3F7</color>
<color name="darkError">#FFFFB4A9</color>
<color name="darkOnError">#FF680003</color>
<color name="darkErrorContainer">#FF930006</color>
<color name="darkOnErrorContainer">#FFFFB4A9</color>
<color name="darkBackground">#FF1B1B1B</color>
<color name="darkOnBackground">#FFE2E2E6</color>
<color name="darkSurface">#FF1B1B1B</color>
<color name="darkOnSurface">#FFE2E2E6</color>
<color name="darkSurfaceVariant">#FF42474E</color>
<color name="darkOnSurfaceVariant">#FFC3C7D0</color>
<color name="darkOutline">#FF8D9199</color>
<color name="darkShadow">#FF000000</color>
<color name="darkInverseSurface">#FFE2E2E6</color>
<color name="darkOnInverseSurface">#FF2F3033</color>
<color name="darkInversePrimary">#FF0061A6</color>
</resources>

View File

@ -1 +0,0 @@
# just to keep empty folder in brick generation

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

View File

@ -1,20 +0,0 @@
{
"@@locale": "fr",
"counterAppBarTitle": "Compteur",
"@counterAppBarTitle": {
"description": "Texte affiché dans l'AppBar de la page Compteur"
},
"youHavePushed": "Vous avez appuyé {count} fois sur le bouton !",
"@youHavePushed": {
"description": "Message affiché sur la page compteur",
"placeholders": {
"count": {
"type": "int"
}
}
},
"goToCounter": "Aller au Compteur",
"@goToCounter": {
"description": "Texte affiché dans le bouton ammenant vers la page Compteur"
}
}

View File

@ -1,22 +0,0 @@
#!/usr/bin/env sh
make clean
rm -rf .idea
rm -f wyatt_clean_code.iml
rm .fvm/flutter_sdk
cd ../../
echo "Brick generator..."
dart tools/brick_generator/bin/brick_generator.dart wyatt_clean_code wyatt_clean_code wyatt-clean-code "Wyatt Demo" com.example.wyatt_clean_code
echo "Make platforms optional..."
mkdir bricks/wyatt_clean_code/__brick__/{{#enable_android}}android\{\{
mv -f bricks/wyatt_clean_code/__brick__/android/ bricks/wyatt_clean_code/__brick__/{{#enable_android}}android{{/enable_android}}
mkdir bricks/wyatt_clean_code/__brick__/{{#enable_ios}}ios\{\{
mv -f bricks/wyatt_clean_code/__brick__/ios/ bricks/wyatt_clean_code/__brick__/{{#enable_ios}}ios{{/enable_ios}}
mkdir bricks/wyatt_clean_code/__brick__/{{#enable_web}}web\{\{
mv -f bricks/wyatt_clean_code/__brick__/web/ bricks/wyatt_clean_code/__brick__/{{#enable_web}}web{{/enable_web}}
rm bricks/wyatt_clean_code/__brick__/generate.sh
rm -rf bricks/wyatt_clean_code/__brick__/.fvm/flutter_sdk

View File

@ -1,34 +0,0 @@
**/dgph
*.mode1v3
*.mode2v3
*.moved-aside
*.pbxuser
*.perspectivev3
**/*sync/
.sconsign.dblite
.tags*
**/.vagrant/
**/DerivedData/
Icon?
**/Pods/
**/.symlinks/
profile
xcuserdata
**/.generated/
Flutter/App.framework
Flutter/Flutter.framework
Flutter/Flutter.podspec
Flutter/Generated.xcconfig
Flutter/ephemeral/
Flutter/app.flx
Flutter/app.zip
Flutter/flutter_assets/
Flutter/flutter_export_environment.sh
ServiceDefinitions.json
Runner/GeneratedPluginRegistrant.*
# Exceptions to above rules.
!default.mode1v3
!default.mode2v3
!default.pbxuser
!default.perspectivev3

View File

@ -1,26 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>App</string>
<key>CFBundleIdentifier</key>
<string>io.flutter.flutter.app</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>App</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>MinimumOSVersion</key>
<string>9.0</string>
</dict>
</plist>

View File

@ -1 +0,0 @@
#include "Generated.xcconfig"

View File

@ -1 +0,0 @@
#include "Generated.xcconfig"

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:">
</FileRef>
</Workspace>

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PreviewsEnabled</key>
<false/>
</dict>
</plist>

View File

@ -1,87 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1300"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</MacroExpansion>
<Testables>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</LaunchAction>
<ProfileAction
buildConfiguration = "Profile"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -1,78 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1340"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -1,78 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1340"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -1,78 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1340"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "group:Runner.xcodeproj">
</FileRef>
</Workspace>

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PreviewsEnabled</key>
<false/>
</dict>
</plist>

View File

@ -1,13 +0,0 @@
import UIKit
import Flutter
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}

View File

@ -1,122 +0,0 @@
{
"images" : [
{
"size" : "20x20",
"idiom" : "iphone",
"filename" : "Icon-App-20x20@2x.png",
"scale" : "2x"
},
{
"size" : "20x20",
"idiom" : "iphone",
"filename" : "Icon-App-20x20@3x.png",
"scale" : "3x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@1x.png",
"scale" : "1x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@2x.png",
"scale" : "2x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@3x.png",
"scale" : "3x"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "Icon-App-40x40@2x.png",
"scale" : "2x"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "Icon-App-40x40@3x.png",
"scale" : "3x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "Icon-App-60x60@2x.png",
"scale" : "2x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "Icon-App-60x60@3x.png",
"scale" : "3x"
},
{
"size" : "20x20",
"idiom" : "ipad",
"filename" : "Icon-App-20x20@1x.png",
"scale" : "1x"
},
{
"size" : "20x20",
"idiom" : "ipad",
"filename" : "Icon-App-20x20@2x.png",
"scale" : "2x"
},
{
"size" : "29x29",
"idiom" : "ipad",
"filename" : "Icon-App-29x29@1x.png",
"scale" : "1x"
},
{
"size" : "29x29",
"idiom" : "ipad",
"filename" : "Icon-App-29x29@2x.png",
"scale" : "2x"
},
{
"size" : "40x40",
"idiom" : "ipad",
"filename" : "Icon-App-40x40@1x.png",
"scale" : "1x"
},
{
"size" : "40x40",
"idiom" : "ipad",
"filename" : "Icon-App-40x40@2x.png",
"scale" : "2x"
},
{
"size" : "76x76",
"idiom" : "ipad",
"filename" : "Icon-App-76x76@1x.png",
"scale" : "1x"
},
{
"size" : "76x76",
"idiom" : "ipad",
"filename" : "Icon-App-76x76@2x.png",
"scale" : "2x"
},
{
"size" : "83.5x83.5",
"idiom" : "ipad",
"filename" : "Icon-App-83.5x83.5@2x.png",
"scale" : "2x"
},
{
"size" : "1024x1024",
"idiom" : "ios-marketing",
"filename" : "Icon-App-1024x1024@1x.png",
"scale" : "1x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 564 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

View File

@ -1,23 +0,0 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "LaunchImage.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "LaunchImage@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "LaunchImage@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 B

View File

@ -1,5 +0,0 @@
# Launch Screen Assets
You can customize the launch screen with your own desired assets by replacing the image files in this directory.
You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.

View File

@ -1,37 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="12121" systemVersion="16G29" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12089"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="EHf-IW-A2E">
<objects>
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="Ydg-fD-yQy"/>
<viewControllerLayoutGuide type="bottom" id="xbc-2k-c8Z"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" image="LaunchImage" translatesAutoresizingMaskIntoConstraints="NO" id="YRO-k0-Ey4">
</imageView>
</subviews>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="YRO-k0-Ey4" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="1a2-6s-vTC"/>
<constraint firstItem="YRO-k0-Ey4" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="4X2-HB-R7a"/>
</constraints>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="53" y="375"/>
</scene>
</scenes>
<resources>
<image name="LaunchImage" width="168" height="185"/>
</resources>
</document>

View File

@ -1,26 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
</dependencies>
<scenes>
<!--Flutter View Controller-->
<scene sceneID="tne-QT-ifu">
<objects>
<viewController id="BYZ-38-t0r" customClass="FlutterViewController" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
<viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
</objects>
</scene>
</scenes>
</document>

View File

@ -1,49 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key>
<string>Wyatt Clean Code</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>wyatt_clean_code</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>$(FLUTTER_BUILD_NAME)</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>$(FLUTTER_BUILD_NUMBER)</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>CADisableMinimumFrameDurationOnPhone</key>
<true/>
</dict>
</plist>

View File

@ -1 +0,0 @@
#import "GeneratedPluginRegistrant.h"

View File

@ -1,4 +0,0 @@
arb-dir: assets/l10n
template-arb-file: intl_fr.arb
output-localization-file: app_localizations.dart
nullable-getter: false

View File

@ -1,46 +0,0 @@
import 'dart:async';
import 'package:flutter/foundation.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:go_router/go_router.dart';
import 'package:wyatt_clean_code/core/dependency_injection/get_it.dart';
import 'package:wyatt_clean_code/core/flavors/flavor_settings.dart';
import 'package:wyatt_clean_code/core/utils/app_bloc_observer.dart';
import 'package:wyatt_clean_code/core/utils/wyatt_printer.dart';
Future<void> bootstrap(FutureOr<Widget> Function() builder) async {
await runZonedGuarded(
() async {
WidgetsFlutterBinding.ensureInitialized();
FlutterError.onError = (details) {
WyattPrinter.get().e(
'',
details,
details.stack,
);
};
FlavorSettings.init();
GetItInitializer.run();
GoRouter.setUrlPathStrategy(UrlPathStrategy.path);
if (!kReleaseMode) {
final env = FlavorSettings.get();
WyattPrinter.get().i('Flavor : ${env.flavor.name}');
}
await BlocOverrides.runZoned(
() async => runApp(await builder()),
blocObserver: AppBlocObserver(),
);
},
(error, stackTrace) => WyattPrinter.get().e(
'',
error,
stackTrace,
),
);
}

View File

@ -1 +0,0 @@
# just to keep empty folder in brick generation

View File

@ -1,15 +0,0 @@
import 'dart:async';
import 'package:get_it/get_it.dart';
final getIt = GetIt.I;
abstract class GetItInitializer {
static Future<void> init() async {
// Here, register data sources
}
static void run() {
unawaited(init());
}
}

View File

@ -1,2 +0,0 @@
/// Generate colors with `flutter pub run build_runner build`
export 'package:wyatt_clean_code/gen/colors.gen.dart';

View File

@ -1,235 +0,0 @@
import 'package:flutter/material.dart';
import 'package:gap/gap.dart';
/// Geometric progression.
abstract class AppSizing {
/// Default to 1
static const double factor = 1;
/// SizedBox.shrink();
static const SizedBox empty = SizedBox.shrink();
/// xxs = factor * 2
static const double xxs = factor * 2;
/// xs = factor * 4
static const double xs = factor * 4;
/// s = factor * 8
static const double s = factor * 8;
/// m = factor * 16
static const double m = factor * 16;
/// l = factor * 32
static const double l = factor * 32;
/// xl = factor * 64
static const double xl = factor * 64;
/// xxl = factor * 128
static const double xxl = factor * 128;
/// xxs = factor * 2
static const Gap xxsGap = Gap(xxs);
/// xs = factor * 4
static const Gap xsGap = Gap(xs);
/// s = factor * 8
static const Gap sGap = Gap(s);
/// m = factor * 16
static const Gap mGap = Gap(m);
/// l = factor * 32
static const Gap lGap = Gap(l);
/// xl = factor * 64
static const Gap xlGap = Gap(xl);
/// xxl = factor * 128
static const Gap xxlGap = Gap(xxl);
/// xxs = factor * 2
static const Radius xxsRadius = Radius.circular(xxs);
/// xs = factor * 4
static const Radius xsRadius = Radius.circular(xs);
/// s = factor * 8
static const Radius sRadius = Radius.circular(s);
/// m = factor * 16
static const Radius mRadius = Radius.circular(m);
/// l = factor * 32
static const Radius lRadius = Radius.circular(l);
/// xl = factor * 64
static const Radius xlRadius = Radius.circular(xl);
/// xxl = factor * 128
static const Radius xxlRadius = Radius.circular(xxl);
/// xxs = factor * 2
///
/// A square inset offers indents content on all four sides.
///
/// *e.g [EdgeInsets.all(value)]*
static const EdgeInsets xxsSquareInset = EdgeInsets.all(xxs);
/// xs = factor * 4
///
/// A square inset offers indents content on all four sides.
///
/// *e.g [EdgeInsets.all(value)]*
static const EdgeInsets xsSquareInset = EdgeInsets.all(xs);
/// s = factor * 8
///
/// A square inset offers indents content on all four sides.
///
/// *e.g [EdgeInsets.all(value)]*
static const EdgeInsets sSquareInset = EdgeInsets.all(s);
/// m = factor * 16
///
/// A square inset offers indents content on all four sides.
///
/// *e.g [EdgeInsets.all(value)]*
static const EdgeInsets mSquareInset = EdgeInsets.all(m);
/// l = factor * 32
///
/// A square inset offers indents content on all four sides.
///
/// *e.g [EdgeInsets.all(value)]*
static const EdgeInsets lSquareInset = EdgeInsets.all(l);
/// xl = factor * 64
///
/// A square inset offers indents content on all four sides.
///
/// *e.g [EdgeInsets.all(value)]*
static const EdgeInsets xlSquareInset = EdgeInsets.all(xl);
/// xxl = factor * 128
///
/// A square inset offers indents content on all four sides.
///
/// *e.g [EdgeInsets.all(value)]*
static const EdgeInsets xxlSquareInset = EdgeInsets.all(xxl);
/// xxs = factor * 2
///
/// A squished inset reduces space top and bottom by 50%.
///
/// *e.g [EdgeInsets.symmetric(horizontal: value, vertical: value / 2)]*
static const EdgeInsets xxsSquishInset =
EdgeInsets.symmetric(horizontal: xxs, vertical: xxs / 2);
/// xs = factor * 4
///
/// A squished inset reduces space top and bottom by 50%.
///
/// *e.g [EdgeInsets.symmetric(horizontal: value, vertical: value / 2)]*
static const EdgeInsets xsSquishInset =
EdgeInsets.symmetric(horizontal: xs, vertical: xs / 2);
/// s = factor * 8
///
/// A squished inset reduces space top and bottom by 50%.
///
/// *e.g [EdgeInsets.symmetric(horizontal: value, vertical: value / 2)]*
static const EdgeInsets sSquishInset =
EdgeInsets.symmetric(horizontal: s, vertical: s / 2);
/// m = factor * 16
///
/// A squished inset reduces space top and bottom by 50%.
///
/// *e.g [EdgeInsets.symmetric(horizontal: value, vertical: value / 2)]*
static const EdgeInsets mSquishInset =
EdgeInsets.symmetric(horizontal: m, vertical: m / 2);
/// l = factor * 32
///
/// A squished inset reduces space top and bottom by 50%.
///
/// *e.g [EdgeInsets.symmetric(horizontal: value, vertical: value / 2)]*
static const EdgeInsets lSquishInset =
EdgeInsets.symmetric(horizontal: l, vertical: l / 2);
/// xl = factor * 64
///
/// A squished inset reduces space top and bottom by 50%.
///
/// *e.g [EdgeInsets.symmetric(horizontal: value, vertical: value / 2)]*
static const EdgeInsets xlSquishInset =
EdgeInsets.symmetric(horizontal: xl, vertical: xl / 2);
/// xxl = factor * 128
///
/// A squished inset reduces space top and bottom by 50%.
///
/// *e.g [EdgeInsets.symmetric(horizontal: value, vertical: value / 2)]*
static const EdgeInsets xxlSquishInset =
EdgeInsets.symmetric(horizontal: xxl, vertical: xxl / 2);
/// xxs = factor * 2
///
/// A stretched inset reduces space left and right by 50%.
///
/// *e.g [EdgeInsets.symmetric(vertical: value, horizontal: value / 2)]*
static const EdgeInsets xxsStretchInset =
EdgeInsets.symmetric(vertical: xxs, horizontal: xxs / 2);
/// xs = factor * 4
///
/// A stretched inset reduces space left and right by 50%.
///
/// *e.g [EdgeInsets.symmetric(vertical: value, horizontal: value / 2)]*
static const EdgeInsets xsStretchInset =
EdgeInsets.symmetric(vertical: xs, horizontal: xs / 2);
/// s = factor * 8
///
/// A stretched inset reduces space left and right by 50%.
///
/// *e.g [EdgeInsets.symmetric(vertical: value, horizontal: value / 2)]*
static const EdgeInsets sStretchInset =
EdgeInsets.symmetric(vertical: s, horizontal: s / 2);
/// m = factor * 16
///
/// A stretched inset reduces space left and right by 50%.
///
/// *e.g [EdgeInsets.symmetric(vertical: value, horizontal: value / 2)]*
static const EdgeInsets mStretchInset =
EdgeInsets.symmetric(vertical: m, horizontal: m / 2);
/// l = factor * 32
///
/// A stretched inset reduces space left and right by 50%.
///
/// *e.g [EdgeInsets.symmetric(vertical: value, horizontal: value / 2)]*
static const EdgeInsets lStretchInset =
EdgeInsets.symmetric(vertical: l, horizontal: l / 2);
/// xl = factor * 64
///
/// A stretched inset reduces space left and right by 50%.
///
/// *e.g [EdgeInsets.symmetric(vertical: value, horizontal: value / 2)]*
static const EdgeInsets xlStretchInset =
EdgeInsets.symmetric(vertical: xl, horizontal: xl / 2);
/// xxl = factor * 128
///
/// A stretched inset reduces space left and right by 50%.
///
/// *e.g [EdgeInsets.symmetric(vertical: value, horizontal: value / 2)]*
static const EdgeInsets xxlStretchInset =
EdgeInsets.symmetric(vertical: xxl, horizontal: xxl / 2);
}

View File

@ -1,240 +0,0 @@
import 'package:flutter/material.dart';
import 'package:wyatt_clean_code/core/design_system/colors.dart';
import 'package:wyatt_clean_code/core/design_system/typography.dart';
const _smallTextScaleFactor = 0.80;
const _largeTextScaleFactor = 1.20;
/// Namespace for the [ThemeData].
class AppTheme {
/// Light `ThemeData` for UI.
static ThemeData get light => ThemeData(
colorScheme: ColorScheme.fromSwatch(
primarySwatch: ColorName.seedColor,
accentColor: ColorName.seedColorAccent,
cardColor: ColorName.lightBackground,
backgroundColor: ColorName.lightBackground,
errorColor: ColorName.lightError,
),
appBarTheme: _appBarLightTheme,
elevatedButtonTheme: _elevatedButtonLightTheme,
outlinedButtonTheme: _outlinedButtonLightTheme,
textTheme: _textTheme(),
dialogTheme: _dialogLightTheme,
tooltipTheme: _tooltipLightTheme,
bottomSheetTheme: _bottomSheetLightTheme,
tabBarTheme: _tabBarLightTheme,
dividerTheme: _dividerLightTheme,
backgroundColor: ColorName.lightBackground,
);
/// dark `ThemeData` for UI.
static ThemeData get dark => ThemeData(
colorScheme: ColorScheme.fromSwatch(
primarySwatch: ColorName.seedColor,
accentColor: ColorName.darkSecondary,
cardColor: ColorName.darkBackground,
backgroundColor: ColorName.darkBackground,
errorColor: ColorName.darkError,
brightness: Brightness.dark,
),
appBarTheme: _appBarDarkTheme,
elevatedButtonTheme: _elevatedButtonDarkTheme,
outlinedButtonTheme: _outlinedButtonDarkTheme,
textTheme: _textTheme(isDark: true),
dialogTheme: _dialogDarkTheme,
tooltipTheme: _tooltipDarkTheme,
bottomSheetTheme: _bottomSheetDarkTheme,
tabBarTheme: _tabBarDarkTheme,
dividerTheme: _dividerDarkTheme,
backgroundColor: ColorName.darkBackground,
canvasColor: ColorName.darkBackground,
);
/// `ThemeData` for UI for small screens.
static ThemeData get lightSmall =>
light.copyWith(textTheme: _smallTextTheme());
/// `ThemeData` for UI for medium screens.
static ThemeData get lightMedium =>
light.copyWith(textTheme: _smallTextTheme());
/// `ThemeData` for UI for large screens.
static ThemeData get lightLarge =>
light.copyWith(textTheme: _largeTextTheme());
/// `ThemeData` for UI for small screens.
static ThemeData get darkSmall =>
dark.copyWith(textTheme: _smallTextTheme(isDark: true));
/// `ThemeData` for UI for medium screens.
static ThemeData get darkMedium =>
dark.copyWith(textTheme: _smallTextTheme(isDark: true));
/// `ThemeData` for UI for large screens.
static ThemeData get darkLarge =>
dark.copyWith(textTheme: _largeTextTheme(isDark: true));
static TextTheme _textTheme({bool isDark = false}) => TextTheme(
headline1: AppTypography.headline1,
headline2: AppTypography.headline2,
headline3: AppTypography.headline3,
headline4: AppTypography.headline4,
headline5: AppTypography.headline5,
headline6: AppTypography.headline6,
subtitle1: AppTypography.subtitle1,
subtitle2: AppTypography.subtitle2,
bodyText1: AppTypography.bodyText1,
bodyText2: AppTypography.bodyText2,
caption: AppTypography.caption,
overline: AppTypography.overline,
button: AppTypography.button,
).apply(
bodyColor:
isDark ? ColorName.darkOnBackground : ColorName.lightOnBackground,
displayColor:
isDark ? ColorName.darkOnBackground : ColorName.lightOnBackground,
);
static TextTheme _smallTextTheme({bool isDark = false}) =>
_textTheme(isDark: isDark).apply(fontSizeFactor: _smallTextScaleFactor);
static TextTheme _largeTextTheme({bool isDark = false}) =>
_textTheme(isDark: isDark).apply(fontSizeFactor: _largeTextScaleFactor);
static AppBarTheme get _appBarLightTheme =>
const AppBarTheme(color: ColorName.lightPrimary);
static AppBarTheme get _appBarDarkTheme =>
const AppBarTheme(color: ColorName.darkSurfaceVariant);
static ElevatedButtonThemeData get _elevatedButtonLightTheme =>
ElevatedButtonThemeData(
style: ElevatedButton.styleFrom(
elevation: 0,
shape: const RoundedRectangleBorder(
borderRadius: BorderRadius.all(Radius.circular(30)),
),
primary: ColorName.lightPrimary,
fixedSize: const Size(208, 54),
),
);
static ElevatedButtonThemeData get _elevatedButtonDarkTheme =>
ElevatedButtonThemeData(
style: ElevatedButton.styleFrom(
elevation: 0,
shape: const RoundedRectangleBorder(
borderRadius: BorderRadius.all(Radius.circular(30)),
),
primary: ColorName.darkPrimary,
fixedSize: const Size(208, 54),
),
);
static OutlinedButtonThemeData get _outlinedButtonLightTheme =>
OutlinedButtonThemeData(
style: OutlinedButton.styleFrom(
shape: const RoundedRectangleBorder(
borderRadius: BorderRadius.all(Radius.circular(30)),
),
side: const BorderSide(color: ColorName.lightOutline, width: 2),
primary: ColorName.lightPrimary,
fixedSize: const Size(208, 54),
),
);
static OutlinedButtonThemeData get _outlinedButtonDarkTheme =>
OutlinedButtonThemeData(
style: OutlinedButton.styleFrom(
shape: const RoundedRectangleBorder(
borderRadius: BorderRadius.all(Radius.circular(30)),
),
side: const BorderSide(color: ColorName.darkOutline, width: 2),
primary: ColorName.darkPrimary,
fixedSize: const Size(208, 54),
),
);
static TooltipThemeData get _tooltipLightTheme => const TooltipThemeData(
decoration: BoxDecoration(
color: ColorName.lightInverseSurface,
borderRadius: BorderRadius.all(Radius.circular(5)),
),
padding: EdgeInsets.all(10),
textStyle: TextStyle(color: ColorName.lightOnInverseSurface),
);
static TooltipThemeData get _tooltipDarkTheme => const TooltipThemeData(
decoration: BoxDecoration(
color: ColorName.darkInverseSurface,
borderRadius: BorderRadius.all(Radius.circular(5)),
),
padding: EdgeInsets.all(10),
textStyle: TextStyle(color: ColorName.darkOnInverseSurface),
);
static DialogTheme get _dialogLightTheme => DialogTheme(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12),
),
);
static DialogTheme get _dialogDarkTheme => DialogTheme(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12),
),
);
static BottomSheetThemeData get _bottomSheetLightTheme =>
const BottomSheetThemeData(
backgroundColor: ColorName.lightBackground,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.vertical(top: Radius.circular(12)),
),
);
static BottomSheetThemeData get _bottomSheetDarkTheme =>
const BottomSheetThemeData(
backgroundColor: ColorName.darkBackground,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.vertical(top: Radius.circular(12)),
),
);
static TabBarTheme get _tabBarLightTheme => const TabBarTheme(
indicator: UnderlineTabIndicator(
borderSide: BorderSide(
width: 2,
color: ColorName.lightPrimary,
),
),
labelColor: ColorName.lightPrimary,
unselectedLabelColor: ColorName.lightOutline,
indicatorSize: TabBarIndicatorSize.tab,
);
static TabBarTheme get _tabBarDarkTheme => const TabBarTheme(
indicator: UnderlineTabIndicator(
borderSide: BorderSide(
width: 2,
color: ColorName.darkPrimary,
),
),
labelColor: ColorName.darkPrimary,
unselectedLabelColor: ColorName.darkOutline,
indicatorSize: TabBarIndicatorSize.tab,
);
static DividerThemeData get _dividerLightTheme => const DividerThemeData(
space: 0,
thickness: 1,
color: ColorName.lightOutline,
);
static DividerThemeData get _dividerDarkTheme => const DividerThemeData(
space: 0,
thickness: 1,
color: ColorName.darkOutline,
);
}

View File

@ -1,115 +0,0 @@
import 'package:flutter/material.dart';
abstract class AppFontWeight {
/// FontWeight value of `w900`
static const FontWeight black = FontWeight.w900;
/// FontWeight value of `w800`
static const FontWeight extraBold = FontWeight.w800;
/// FontWeight value of `w700`
static const FontWeight bold = FontWeight.w700;
/// FontWeight value of `w600`
static const FontWeight semiBold = FontWeight.w600;
/// FontWeight value of `w500`
static const FontWeight medium = FontWeight.w500;
/// FontWeight value of `w400`
static const FontWeight regular = FontWeight.w400;
/// FontWeight value of `w300`
static const FontWeight light = FontWeight.w300;
/// FontWeight value of `w200`
static const FontWeight extraLight = FontWeight.w200;
/// FontWeight value of `w100`
static const FontWeight thin = FontWeight.w100;
}
class AppTypography {
static const TextStyle _base = TextStyle(
color: Colors.black,
fontWeight: AppFontWeight.regular,
);
/// Headline 1 Text Style
static TextStyle get headline1 => _base.copyWith(
fontSize: 56,
fontWeight: AppFontWeight.medium,
);
/// Headline 2 Text Style
static TextStyle get headline2 => _base.copyWith(
fontSize: 30,
fontWeight: AppFontWeight.regular,
);
/// Headline 3 Text Style
static TextStyle get headline3 => _base.copyWith(
fontSize: 28,
fontWeight: AppFontWeight.regular,
);
/// Headline 4 Text Style
static TextStyle get headline4 => _base.copyWith(
fontSize: 22,
fontWeight: AppFontWeight.bold,
);
/// Headline 5 Text Style
static TextStyle get headline5 => _base.copyWith(
fontSize: 20,
fontWeight: AppFontWeight.medium,
);
/// Headline 6 Text Style
static TextStyle get headline6 => _base.copyWith(
fontSize: 22,
fontWeight: AppFontWeight.bold,
);
/// Subtitle 1 Text Style
static TextStyle get subtitle1 => _base.copyWith(
fontSize: 16,
fontWeight: AppFontWeight.bold,
);
/// Subtitle 2 Text Style
static TextStyle get subtitle2 => _base.copyWith(
fontSize: 14,
fontWeight: AppFontWeight.bold,
);
/// Body Text 1 Text Style
static TextStyle get bodyText1 => _base.copyWith(
fontSize: 18,
fontWeight: AppFontWeight.medium,
);
/// Body Text 2 Text Style (the default)
static TextStyle get bodyText2 => _base.copyWith(
fontSize: 16,
fontWeight: AppFontWeight.regular,
);
/// Caption Text Style
static TextStyle get caption => _base.copyWith(
fontSize: 14,
fontWeight: AppFontWeight.regular,
);
/// Overline Text Style
static TextStyle get overline => _base.copyWith(
fontSize: 16,
fontWeight: AppFontWeight.regular,
);
/// Button Text Style
static TextStyle get button => _base.copyWith(
fontSize: 18,
fontWeight: AppFontWeight.medium,
);
}

View File

@ -1,7 +0,0 @@
enum AppExceptionType {
network,
api,
database,
cache,
assertion,
}

View File

@ -1,12 +0,0 @@
import 'package:flutter/material.dart';
enum Flavor {
development('dev', Colors.red),
staging('stg', Colors.blue),
production('prod', Colors.green);
final String short;
final Color color;
const Flavor(this.short, this.color);
}

View File

@ -1,29 +0,0 @@
import 'package:equatable/equatable.dart';
import 'package:wyatt_clean_code/core/enums/exception_type.dart';
abstract class AppException extends Equatable implements Exception {
final String message;
final AppExceptionType type;
AppException(this.type, [String? message]) : message = message ?? type.name;
@override
List<Object?> get props => [message, type];
@override
String toString() => message;
}
class ClientException extends AppException {
ClientException(super.type, [super.message]);
@override
String toString() => 'ClientException: ${super.toString()}';
}
class ServerException extends AppException {
ServerException(super.type, [super.message]);
@override
String toString() => 'ServerException: ${super.toString()}';
}

View File

@ -1,8 +0,0 @@
import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
export 'package:flutter_gen/gen_l10n/app_localizations.dart';
extension BuildContextX on BuildContext {
AppLocalizations get l10n => AppLocalizations.of(this);
}

View File

@ -1,9 +0,0 @@
import 'package:wyatt_clean_code/core/utils/screen_util.dart';
extension NumX on num {
double get w => ScreenUtil().setWidth(this);
double get h => ScreenUtil().setHeight(this);
double get sp => ScreenUtil().setSp(this);
}

View File

@ -1,32 +0,0 @@
import 'package:logger/logger.dart';
import 'package:wyatt_clean_code/core/utils/wyatt_printer.dart';
extension ObjectX on Object {
void log({Level level = Level.debug, String Function(Object obj)? wrap}) {
final msg = wrap != null ? wrap(this) : this;
WyattPrinter.get().log(level, msg);
}
/// Log a message at level [Level.verbose].
void v({String Function(Object obj)? wrap}) =>
log(level: Level.verbose, wrap: wrap);
/// Log a message at level [Level.debug].
void d({String Function(Object obj)? wrap}) => log(wrap: wrap);
/// Log a message at level [Level.info].
void i({String Function(Object obj)? wrap}) =>
log(level: Level.info, wrap: wrap);
/// Log a message at level [Level.warning].
void w({String Function(Object obj)? wrap}) =>
log(level: Level.warning, wrap: wrap);
/// Log a message at level [Level.error].
void e({String Function(Object obj)? wrap}) =>
log(level: Level.error, wrap: wrap);
/// Log a message at level [Level.wtf].
void wtf({String Function(Object obj)? wrap}) =>
log(level: Level.wtf, wrap: wrap);
}

View File

@ -1,64 +0,0 @@
import 'package:wyatt_clean_code/core/enums/flavor.dart';
class FlavorSettings {
static FlavorSettings? _instance;
final Flavor flavor;
// Per flavor settings
String apiKey = '';
/// Banner are not display in release mode, whatever this value
bool displayBanner = true;
FlavorSettings._(this.flavor);
factory FlavorSettings.development() {
_instance ??= FlavorSettings._(Flavor.development);
if (_instance!.flavor != Flavor.development) {
throw Exception('Flavor already initialized in: ${_instance!.flavor}');
}
return _instance!;
}
factory FlavorSettings.staging() {
_instance ??= FlavorSettings._(Flavor.staging);
if (_instance!.flavor != Flavor.staging) {
throw Exception('Flavor already initialized in: ${_instance!.flavor}');
}
return _instance!;
}
factory FlavorSettings.production() {
_instance ??= FlavorSettings._(Flavor.production);
if (_instance!.flavor != Flavor.production) {
throw Exception('Flavor already initialized in: ${_instance!.flavor}');
}
return _instance!;
}
/// Returns initialized [FlavorSettings], may throw if not initialized.
static FlavorSettings get() {
if (_instance == null) {
throw Exception('Flavor not initialized!');
}
return _instance!;
}
/// To call after `WidgetsFlutterBinding.ensureInitialized()`
///
/// Here you can config all the settings attributes.
static void init() {
switch (get().flavor) {
case Flavor.development:
_instance!.apiKey = 'example-dev';
break;
case Flavor.staging:
_instance!.apiKey = 'example-stg';
break;
case Flavor.production:
_instance!.apiKey = 'example-prod';
break;
}
}
}

View File

@ -1,6 +0,0 @@
import 'package:wyatt_clean_code/domain/data_sources/local/base_local_data_source.dart';
mixin LocalDataSource<Local extends BaseLocalDataSource> {
/// Offline data source, for debug or cache
Local get localDataSource;
}

View File

@ -1,6 +0,0 @@
import 'package:wyatt_clean_code/domain/data_sources/remote/base_remote_data_source.dart';
mixin RemoteDataSource<Remote extends BaseRemoteDataSource> {
/// Online data source, to provide data through API
Remote get remoteDataSource;
}

View File

@ -1,37 +0,0 @@
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:wyatt_clean_code/presentation/features/counter/counter_page.dart';
import 'package:wyatt_clean_code/presentation/features/initial/initial_page.dart';
abstract class AppRouter {
static Page<void> defaultTransition(
BuildContext context,
GoRouterState state,
Widget child,
) =>
MaterialPage<void>(
key: state.pageKey,
child: child,
);
static final List<GoRoute> routes = [
GoRoute(
name: InitialPage.pageName,
path: '/',
pageBuilder: (context, state) => defaultTransition(
context,
state,
const InitialPage(),
),
),
GoRoute(
path: '/counter',
name: CounterPage.pageName,
pageBuilder: (context, state) => defaultTransition(
context,
state,
const CounterPage(),
),
),
];
}

View File

@ -1,13 +0,0 @@
import 'package:equatable/equatable.dart';
import 'package:wyatt_clean_code/core/errors/exceptions.dart';
import 'package:wyatt_type_utils/wyatt_type_utils.dart';
// ignore: one_member_abstracts
abstract class UseCase<Type, Params> {
Future<Result<Type, AppException>> call(Params params);
}
class NoParams extends Equatable {
@override
List<Object> get props => [];
}

View File

@ -1,56 +0,0 @@
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:logger/logger.dart';
import 'package:wyatt_clean_code/core/extensions/object_extension.dart';
class AppBlocObserver extends BlocObserver {
final bool printEvent;
final bool printError;
final bool printChange;
final bool printTransition;
final Logger logger = Logger(printer: SimplePrinter());
AppBlocObserver({
this.printEvent = true,
this.printError = true,
this.printTransition = true,
this.printChange = true,
});
@override
void onEvent(Bloc<dynamic, dynamic> bloc, Object? event) {
super.onEvent(bloc, event);
if (printEvent) {
event?.d(wrap: (obj) => 'onEvent $event');
}
}
@override
void onError(BlocBase<dynamic> bloc, Object error, StackTrace stackTrace) {
if (printError) {
error.e(
wrap: (obj) => 'onError(${bloc.runtimeType}, $obj, $stackTrace)',
);
}
super.onError(bloc, error, stackTrace);
}
@override
void onChange(BlocBase<dynamic> bloc, Change<dynamic> change) {
super.onChange(bloc, change);
if (printChange) {
change.d(wrap: (obj) => 'onChange(${bloc.runtimeType}, $obj)');
}
}
@override
void onTransition(
Bloc<dynamic, dynamic> bloc,
Transition<dynamic, dynamic> transition,
) {
super.onTransition(bloc, transition);
if (printTransition) {
transition.d(wrap: (obj) => 'onTransition $obj');
}
}
}

View File

@ -1,107 +0,0 @@
import 'dart:ui';
class ScreenUtil {
static late ScreenUtil _instance;
static const int defaultWidth = 414;
static const int defaultHeight = 896;
/// Size of the phone in UI Design ,px
late num uiWidthPx;
late num uiHeightPx;
/// allowFontScaling Specifies whether fonts should scale to respect Text
/// Size accessibility settings. The default is false.
late bool allowFontScaling;
static late double _screenWidth;
static late double _screenHeight;
static late double _pixelRatio;
static late double _statusBarHeight;
static late double _bottomBarHeight;
static late double _textScaleFactor;
factory ScreenUtil() => _instance;
ScreenUtil._();
static void init({
num width = defaultWidth,
num height = defaultHeight,
bool allowFontScaling = false,
}) {
_instance = ScreenUtil._();
_instance.uiWidthPx = width;
_instance.uiHeightPx = height;
_instance.allowFontScaling = allowFontScaling;
_pixelRatio = window.devicePixelRatio;
_screenWidth = window.physicalSize.width;
_screenHeight = window.physicalSize.height;
_statusBarHeight = window.padding.top;
_bottomBarHeight = window.padding.bottom;
_textScaleFactor = window.textScaleFactor;
}
/// The number of font pixels for each logical pixel.
static double get textScaleFactor => _textScaleFactor;
/// The size of the media in logical pixels (e.g, the size of the screen).
static double get pixelRatio => _pixelRatio;
/// The horizontal extent of this size.
static double get screenWidth => _screenWidth / _pixelRatio;
///The vertical extent of this size. dp
static double get screenHeight => _screenHeight / _pixelRatio;
/// The vertical extent of this size. px
static double get screenWidthPx => _screenWidth;
/// The vertical extent of this size. px
static double get screenHeightPx => _screenHeight;
/// The offset from the top
static double get statusBarHeight => _statusBarHeight / _pixelRatio;
/// The offset from the top
static double get statusBarHeightPx => _statusBarHeight;
/// The offset from the bottom.
static double get bottomBarHeight => _bottomBarHeight;
/// The ratio of the actual dp to the design draft px
double get scaleWidth => screenWidth / uiWidthPx;
double get scaleHeight =>
(_screenHeight - _statusBarHeight - _bottomBarHeight) / uiHeightPx;
double get scaleText => scaleWidth;
/// Width function
///
/// Adapted to the device width of the UI Design.
/// Height can also be adapted according to this to ensure no deformation ,
/// if you want a square
double setWidth(num width) => width * scaleWidth;
/// Height function
///
/// Highly adaptable to the device according to UI Design
/// It is recommended to use this method to achieve a high degree
/// of adaptation when it is found that one screen in the UI design
/// does not match the current style effect, or if there is a difference
/// in shape.
double setHeight(num height) => height * scaleHeight;
/// FontSize function
///
/// [fontSize] The size of the font on the UI design, in px.
/// [allowFontScaling]
double setSp(num fontSize, {bool allowFontScalingSelf = false}) =>
allowFontScalingSelf
? (allowFontScalingSelf
? (fontSize * scaleText)
: ((fontSize * scaleText) / _textScaleFactor))
: (allowFontScaling
? (fontSize * scaleText)
: ((fontSize * scaleText) / _textScaleFactor));
}

View File

@ -1,43 +0,0 @@
import 'dart:convert';
import 'package:logger/logger.dart';
class WyattPrinter extends LogPrinter {
WyattPrinter({this.colors = true});
final bool colors;
static Logger? _instance;
/// Returns [Logger] instance or create it if not.
static Logger get({bool colors = true}) {
_instance ??= Logger(printer: WyattPrinter(colors: colors));
return _instance!;
}
@override
List<String> log(LogEvent event) {
// final classNameStr = (className != null) ? '$className ' : '';
final messageStr = _stringifyMessage(event.message);
final errorStr = event.error != null ? 'ERROR: ${event.error}' : '';
return ['${_labelFor(event.level)} $messageStr$errorStr'];
}
String _labelFor(Level level) {
final prefix = PrettyPrinter.levelEmojis[level]!;
final color = PrettyPrinter.levelColors[level]!;
return colors ? color(prefix) : prefix;
}
String _stringifyMessage(dynamic message) {
// ignore: avoid_dynamic_calls
final finalMessage = message is Function ? message() : message;
if (finalMessage is Map || finalMessage is Iterable) {
const encoder = JsonEncoder.withIndent(null);
return encoder.convert(finalMessage);
} else {
return finalMessage.toString();
}
}
}

View File

@ -1 +0,0 @@
# just to keep empty folder in brick generation

View File

@ -1 +0,0 @@
# just to keep empty folder in brick generation

View File

@ -1 +0,0 @@
# just to keep empty folder in brick generation

View File

@ -1,24 +0,0 @@
import 'package:wyatt_clean_code/core/enums/exception_type.dart';
import 'package:wyatt_clean_code/core/errors/exceptions.dart';
import 'package:wyatt_clean_code/domain/repositories/counter_repository.dart';
import 'package:wyatt_type_utils/wyatt_type_utils.dart';
class CounterRepositoryImpl implements CounterRepository {
Result<int, AppException> _check(int value) =>
Result.conditionalLazy<int, AppException>(
value >= 0,
() => value,
() => ClientException(
AppExceptionType.assertion,
"Counter can't be negative!",
),
);
@override
Future<Result<int, AppException>> decrement(int newState) async =>
_check(newState);
@override
Future<Result<int, AppException>> increment(int newState) async =>
_check(newState);
}

View File

@ -1 +0,0 @@
abstract class BaseDataSource {}

View File

@ -1,3 +0,0 @@
import 'package:wyatt_clean_code/domain/data_sources/base_data_source.dart';
abstract class BaseLocalDataSource extends BaseDataSource {}

Some files were not shown because too many files have changed in this diff Show More