Compare commits
29
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0592cf9a3c
|
||
|
|
0720a14532
|
||
|
|
33b38185b8
|
||
|
|
4e3b288e70
|
||
|
|
2692c60743
|
||
|
|
e76857f118
|
||
|
|
96369e24f9
|
||
|
|
635bb329ea
|
||
|
|
bfbeabe7ec
|
||
|
|
01a5619dc5
|
||
|
|
4ebb679a29
|
||
|
|
abd5e1b558
|
||
|
|
a024b7e70a
|
||
|
|
4097a420c8
|
||
|
|
8f5e3923d6
|
||
|
|
01269027f2
|
||
|
|
0d5109fc77
|
||
|
|
3fb4020594
|
||
|
|
cef73aa62d
|
||
|
|
32cc6e8288
|
||
|
|
2baaf5c0bb
|
||
|
|
0ca4c41a27
|
||
|
|
5bf9f01be0
|
||
|
|
90339d15a3
|
||
|
|
9c9d6783c3
|
||
|
|
72173cdf18
|
||
|
|
6725960c44
|
||
|
|
458ad76786
|
||
|
|
e9b6671500
|
+6
-6
@@ -20,18 +20,18 @@ name: default
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: quality-check
|
- name: quality-check
|
||||||
image: git.wyatt-studio.fr/wyatt-foss/flutter-melos:2.9.0-1
|
image: git.wyatt-studio.fr/wyatt-foss/flutter-melos:latest
|
||||||
commands:
|
commands:
|
||||||
- melos run quality-check
|
- melos run quality-check
|
||||||
- melos run publish:validate
|
- melos run publish:validate
|
||||||
- name: publish
|
# - name: publish
|
||||||
image: git.wyatt-studio.fr/wyatt-foss/flutter-melos:2.9.0-1
|
# image: git.wyatt-studio.fr/wyatt-foss/flutter-melos:2.9.0-1
|
||||||
commands:
|
# commands:
|
||||||
- melos run publish:validate
|
# - melos run publish:validate
|
||||||
|
#
|
||||||
|
|
||||||
trigger:
|
trigger:
|
||||||
branch:
|
branch:
|
||||||
- master
|
- master
|
||||||
event:
|
event:
|
||||||
- push
|
|
||||||
- pull_request
|
- pull_request
|
||||||
|
|||||||
+585
@@ -1,5 +1,590 @@
|
|||||||
|
|
||||||
|
### Android ###
|
||||||
|
# Gradle files
|
||||||
|
.gradle/
|
||||||
|
build/
|
||||||
|
|
||||||
|
# Local configuration file (sdk path, etc)
|
||||||
|
local.properties
|
||||||
|
|
||||||
|
# Log/OS Files
|
||||||
|
*.log
|
||||||
|
|
||||||
|
# Android Studio generated files and folders
|
||||||
|
captures/
|
||||||
|
.externalNativeBuild/
|
||||||
|
.cxx/
|
||||||
|
*.apk
|
||||||
|
output.json
|
||||||
|
|
||||||
|
# IntelliJ
|
||||||
|
*.iml
|
||||||
|
.idea/
|
||||||
|
misc.xml
|
||||||
|
deploymentTargetDropDown.xml
|
||||||
|
render.experimental.xml
|
||||||
|
|
||||||
|
# Keystore files
|
||||||
|
*.jks
|
||||||
|
*.keystore
|
||||||
|
|
||||||
|
# Google Services (e.g. APIs or Firebase)
|
||||||
|
google-services.json
|
||||||
|
|
||||||
|
# Android Profiling
|
||||||
|
*.hprof
|
||||||
|
|
||||||
|
### Android Patch ###
|
||||||
|
gen-external-apklibs
|
||||||
|
|
||||||
|
# Replacement of .externalNativeBuild directories introduced
|
||||||
|
# with Android Studio 3.5.
|
||||||
|
|
||||||
|
### Dart ###
|
||||||
|
# See https://www.dartlang.org/guides/libraries/private-files
|
||||||
|
|
||||||
|
# Files and directories created by pub
|
||||||
|
.dart_tool/
|
||||||
|
.packages
|
||||||
|
# If you're building an application, you may want to check-in your pubspec.lock
|
||||||
|
pubspec.lock
|
||||||
|
|
||||||
|
# dotenv environment variables file
|
||||||
|
.env*
|
||||||
|
|
||||||
|
# Avoid committing generated Javascript files:
|
||||||
|
*.dart.js
|
||||||
|
*.info.json # Produced by the --dump-info flag.
|
||||||
|
*.js # When generated by dart2js. Don't specify *.js if your
|
||||||
|
# project includes source files written in JavaScript.
|
||||||
|
*.js_
|
||||||
|
*.js.deps
|
||||||
|
*.js.map
|
||||||
|
|
||||||
|
.flutter-plugins
|
||||||
|
.flutter-plugins-dependencies
|
||||||
|
|
||||||
|
### Dart Patch ###
|
||||||
|
# dotenv environment variables file
|
||||||
|
.env
|
||||||
|
|
||||||
|
### fastlane ###
|
||||||
|
# fastlane - A streamlined workflow tool for Cocoa deployment
|
||||||
|
#
|
||||||
|
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
|
||||||
|
# screenshots whenever they are needed.
|
||||||
|
# For more information about the recommended setup visit:
|
||||||
|
# https://docs.fastlane.tools/best-practices/source-control/#source-control
|
||||||
|
|
||||||
|
# fastlane specific
|
||||||
|
**/fastlane/report.xml
|
||||||
|
|
||||||
|
# deliver temporary files
|
||||||
|
**/fastlane/Preview.html
|
||||||
|
|
||||||
|
# snapshot generated screenshots
|
||||||
|
**/fastlane/screenshots
|
||||||
|
|
||||||
|
# scan temporary files
|
||||||
|
**/fastlane/test_output
|
||||||
|
|
||||||
|
# Fastlane.swift runner binary
|
||||||
|
**/fastlane/FastlaneRunner
|
||||||
|
|
||||||
|
### Firebase ###
|
||||||
|
.idea
|
||||||
|
**/node_modules/*
|
||||||
|
**/.firebaserc
|
||||||
|
|
||||||
|
### Firebase Patch ###
|
||||||
|
.runtimeconfig.json
|
||||||
|
.firebase/
|
||||||
|
|
||||||
|
### Flutter ###
|
||||||
|
# Flutter/Dart/Pub related
|
||||||
|
**/doc/api/
|
||||||
|
.fvm/flutter_sdk
|
||||||
|
.pub-cache/
|
||||||
|
.pub/
|
||||||
|
coverage/
|
||||||
|
lib/generated_plugin_registrant.dart
|
||||||
|
# For library packages, don't commit the pubspec.lock file.
|
||||||
|
# Regenerating the pubspec.lock file lets you test your package against the latest compatible versions of its dependencies.
|
||||||
|
# See https://dart.dev/guides/libraries/private-files#pubspeclock
|
||||||
|
#pubspec.lock
|
||||||
|
|
||||||
|
# Android related
|
||||||
|
**/android/**/gradle-wrapper.jar
|
||||||
|
**/android/.gradle
|
||||||
|
**/android/captures/
|
||||||
|
**/android/gradlew
|
||||||
|
**/android/gradlew.bat
|
||||||
|
**/android/key.properties
|
||||||
|
**/android/local.properties
|
||||||
|
**/android/**/GeneratedPluginRegistrant.java
|
||||||
|
|
||||||
|
# iOS/XCode related
|
||||||
|
**/ios/**/*.mode1v3
|
||||||
|
**/ios/**/*.mode2v3
|
||||||
|
**/ios/**/*.moved-aside
|
||||||
|
**/ios/**/*.pbxuser
|
||||||
|
**/ios/**/*.perspectivev3
|
||||||
|
**/ios/**/*sync/
|
||||||
|
**/ios/**/.sconsign.dblite
|
||||||
|
**/ios/**/.tags*
|
||||||
|
**/ios/**/.vagrant/
|
||||||
|
**/ios/**/DerivedData/
|
||||||
|
**/ios/**/Icon?
|
||||||
|
**/ios/**/Pods/
|
||||||
|
**/ios/**/.symlinks/
|
||||||
|
**/ios/**/profile
|
||||||
|
**/ios/**/xcuserdata
|
||||||
|
**/ios/.generated/
|
||||||
|
**/ios/Flutter/.last_build_id
|
||||||
|
**/ios/Flutter/App.framework
|
||||||
|
**/ios/Flutter/Flutter.framework
|
||||||
|
**/ios/Flutter/Flutter.podspec
|
||||||
|
**/ios/Flutter/Generated.xcconfig
|
||||||
|
**/ios/Flutter/app.flx
|
||||||
|
**/ios/Flutter/app.zip
|
||||||
|
**/ios/Flutter/flutter_assets/
|
||||||
|
**/ios/Flutter/flutter_export_environment.sh
|
||||||
|
**/ios/ServiceDefinitions.json
|
||||||
|
**/ios/Runner/GeneratedPluginRegistrant.*
|
||||||
|
|
||||||
|
# Exceptions to above rules.
|
||||||
|
!**/ios/**/default.mode1v3
|
||||||
|
!**/ios/**/default.mode2v3
|
||||||
|
!**/ios/**/default.pbxuser
|
||||||
|
!**/ios/**/default.perspectivev3
|
||||||
|
!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
|
||||||
|
|
||||||
|
### Java ###
|
||||||
|
# Compiled class file
|
||||||
|
*.class
|
||||||
|
|
||||||
|
# Log file
|
||||||
|
|
||||||
|
# BlueJ files
|
||||||
|
*.ctxt
|
||||||
|
|
||||||
|
# Mobile Tools for Java (J2ME)
|
||||||
|
.mtj.tmp/
|
||||||
|
|
||||||
|
# Package Files #
|
||||||
|
*.jar
|
||||||
|
*.war
|
||||||
|
*.nar
|
||||||
|
*.ear
|
||||||
|
*.zip
|
||||||
|
*.tar.gz
|
||||||
|
*.rar
|
||||||
|
|
||||||
|
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
|
||||||
|
hs_err_pid*
|
||||||
|
replay_pid*
|
||||||
|
|
||||||
|
### JetBrains+all ###
|
||||||
|
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
|
||||||
|
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
|
||||||
|
|
||||||
|
# User-specific stuff
|
||||||
|
.idea/**/workspace.xml
|
||||||
|
.idea/**/tasks.xml
|
||||||
|
.idea/**/usage.statistics.xml
|
||||||
|
.idea/**/dictionaries
|
||||||
|
.idea/**/shelf
|
||||||
|
|
||||||
|
# AWS User-specific
|
||||||
|
.idea/**/aws.xml
|
||||||
|
|
||||||
|
# Generated files
|
||||||
|
.idea/**/contentModel.xml
|
||||||
|
|
||||||
|
# Sensitive or high-churn files
|
||||||
|
.idea/**/dataSources/
|
||||||
|
.idea/**/dataSources.ids
|
||||||
|
.idea/**/dataSources.local.xml
|
||||||
|
.idea/**/sqlDataSources.xml
|
||||||
|
.idea/**/dynamic.xml
|
||||||
|
.idea/**/uiDesigner.xml
|
||||||
|
.idea/**/dbnavigator.xml
|
||||||
|
|
||||||
|
# Gradle
|
||||||
|
.idea/**/gradle.xml
|
||||||
|
.idea/**/libraries
|
||||||
|
|
||||||
|
# Gradle and Maven with auto-import
|
||||||
|
# When using Gradle or Maven with auto-import, you should exclude module files,
|
||||||
|
# since they will be recreated, and may cause churn. Uncomment if using
|
||||||
|
# auto-import.
|
||||||
|
# .idea/artifacts
|
||||||
|
# .idea/compiler.xml
|
||||||
|
# .idea/jarRepositories.xml
|
||||||
|
# .idea/modules.xml
|
||||||
|
# .idea/*.iml
|
||||||
|
# .idea/modules
|
||||||
|
# *.iml
|
||||||
|
# *.ipr
|
||||||
|
|
||||||
|
# CMake
|
||||||
|
cmake-build-*/
|
||||||
|
|
||||||
|
# Mongo Explorer plugin
|
||||||
|
.idea/**/mongoSettings.xml
|
||||||
|
|
||||||
|
# File-based project format
|
||||||
|
*.iws
|
||||||
|
|
||||||
|
# IntelliJ
|
||||||
|
out/
|
||||||
|
|
||||||
|
# mpeltonen/sbt-idea plugin
|
||||||
|
.idea_modules/
|
||||||
|
|
||||||
|
# JIRA plugin
|
||||||
|
atlassian-ide-plugin.xml
|
||||||
|
|
||||||
|
# Cursive Clojure plugin
|
||||||
|
.idea/replstate.xml
|
||||||
|
|
||||||
|
# SonarLint plugin
|
||||||
|
.idea/sonarlint/
|
||||||
|
|
||||||
|
# Crashlytics plugin (for Android Studio and IntelliJ)
|
||||||
|
com_crashlytics_export_strings.xml
|
||||||
|
crashlytics.properties
|
||||||
|
crashlytics-build.properties
|
||||||
|
fabric.properties
|
||||||
|
|
||||||
|
# Editor-based Rest Client
|
||||||
|
.idea/httpRequests
|
||||||
|
|
||||||
|
# Android studio 3.1+ serialized cache file
|
||||||
|
.idea/caches/build_file_checksums.ser
|
||||||
|
|
||||||
|
### JetBrains+all Patch ###
|
||||||
|
# Ignore everything but code style settings and run configurations
|
||||||
|
# that are supposed to be shared within teams.
|
||||||
|
|
||||||
|
.idea/*
|
||||||
|
|
||||||
|
!.idea/codeStyles
|
||||||
|
!.idea/runConfigurations
|
||||||
|
|
||||||
|
### Kotlin ###
|
||||||
|
# Compiled class file
|
||||||
|
|
||||||
|
# Log file
|
||||||
|
|
||||||
|
# BlueJ files
|
||||||
|
|
||||||
|
# Mobile Tools for Java (J2ME)
|
||||||
|
|
||||||
|
# Package Files #
|
||||||
|
|
||||||
|
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
|
||||||
|
|
||||||
|
### macOS ###
|
||||||
|
# General
|
||||||
|
.DS_Store
|
||||||
|
.AppleDouble
|
||||||
|
.LSOverride
|
||||||
|
|
||||||
|
# Icon must end with two \r
|
||||||
|
Icon
|
||||||
|
|
||||||
|
# Thumbnails
|
||||||
|
._*
|
||||||
|
|
||||||
|
# Files that might appear in the root of a volume
|
||||||
|
.DocumentRevisions-V100
|
||||||
|
.fseventsd
|
||||||
|
.Spotlight-V100
|
||||||
|
.TemporaryItems
|
||||||
|
.Trashes
|
||||||
|
.VolumeIcon.icns
|
||||||
|
.com.apple.timemachine.donotpresent
|
||||||
|
|
||||||
|
# Directories potentially created on remote AFP share
|
||||||
|
.AppleDB
|
||||||
|
.AppleDesktop
|
||||||
|
Network Trash Folder
|
||||||
|
Temporary Items
|
||||||
|
.apdisk
|
||||||
|
|
||||||
|
### macOS Patch ###
|
||||||
|
# iCloud generated files
|
||||||
|
*.icloud
|
||||||
|
|
||||||
|
### Objective-C ###
|
||||||
|
# Xcode
|
||||||
|
# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
|
||||||
|
|
||||||
|
## User settings
|
||||||
|
xcuserdata/
|
||||||
|
|
||||||
|
## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9)
|
||||||
|
*.xcscmblueprint
|
||||||
|
*.xccheckout
|
||||||
|
|
||||||
|
## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4)
|
||||||
|
DerivedData/
|
||||||
|
*.moved-aside
|
||||||
|
*.pbxuser
|
||||||
|
!default.pbxuser
|
||||||
|
*.mode1v3
|
||||||
|
!default.mode1v3
|
||||||
|
*.mode2v3
|
||||||
|
!default.mode2v3
|
||||||
|
*.perspectivev3
|
||||||
|
!default.perspectivev3
|
||||||
|
|
||||||
|
## Obj-C/Swift specific
|
||||||
|
*.hmap
|
||||||
|
|
||||||
|
## App packaging
|
||||||
|
*.ipa
|
||||||
|
*.dSYM.zip
|
||||||
|
*.dSYM
|
||||||
|
|
||||||
|
# CocoaPods
|
||||||
|
# We recommend against adding the Pods directory to your .gitignore. However
|
||||||
|
# you should judge for yourself, the pros and cons are mentioned at:
|
||||||
|
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
|
||||||
|
# Pods/
|
||||||
|
# Add this line if you want to avoid checking in source code from the Xcode workspace
|
||||||
|
# *.xcworkspace
|
||||||
|
|
||||||
|
# Carthage
|
||||||
|
# Add this line if you want to avoid checking in source code from Carthage dependencies.
|
||||||
|
# Carthage/Checkouts
|
||||||
|
|
||||||
|
Carthage/Build/
|
||||||
|
|
||||||
|
# fastlane
|
||||||
|
# It is recommended to not store the screenshots in the git repo.
|
||||||
|
# Instead, use fastlane to re-generate the screenshots whenever they are needed.
|
||||||
|
# For more information about the recommended setup visit:
|
||||||
|
# https://docs.fastlane.tools/best-practices/source-control/#source-control
|
||||||
|
|
||||||
|
fastlane/report.xml
|
||||||
|
fastlane/Preview.html
|
||||||
|
fastlane/screenshots/**/*.png
|
||||||
|
fastlane/test_output
|
||||||
|
|
||||||
|
# Code Injection
|
||||||
|
# After new code Injection tools there's a generated folder /iOSInjectionProject
|
||||||
|
# https://github.com/johnno1962/injectionforxcode
|
||||||
|
|
||||||
|
iOSInjectionProject/
|
||||||
|
|
||||||
|
### Objective-C Patch ###
|
||||||
|
|
||||||
|
### Swift ###
|
||||||
|
# Xcode
|
||||||
|
# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
|
||||||
|
|
||||||
|
## Playgrounds
|
||||||
|
timeline.xctimeline
|
||||||
|
playground.xcworkspace
|
||||||
|
|
||||||
|
# Swift Package Manager
|
||||||
|
# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
|
||||||
|
# Packages/
|
||||||
|
# Package.pins
|
||||||
|
# Package.resolved
|
||||||
|
# *.xcodeproj
|
||||||
|
# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata
|
||||||
|
# hence it is not needed unless you have added a package configuration file to your project
|
||||||
|
# .swiftpm
|
||||||
|
|
||||||
|
.build/
|
||||||
|
|
||||||
|
# CocoaPods
|
||||||
|
# We recommend against adding the Pods directory to your .gitignore. However
|
||||||
|
# you should judge for yourself, the pros and cons are mentioned at:
|
||||||
|
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
|
||||||
|
# Pods/
|
||||||
|
# Add this line if you want to avoid checking in source code from the Xcode workspace
|
||||||
|
# *.xcworkspace
|
||||||
|
|
||||||
|
# Carthage
|
||||||
|
# Add this line if you want to avoid checking in source code from Carthage dependencies.
|
||||||
|
# Carthage/Checkouts
|
||||||
|
|
||||||
|
# Accio dependency management
|
||||||
|
Dependencies/
|
||||||
|
.accio/
|
||||||
|
|
||||||
|
# fastlane
|
||||||
|
# It is recommended to not store the screenshots in the git repo.
|
||||||
|
# Instead, use fastlane to re-generate the screenshots whenever they are needed.
|
||||||
|
# For more information about the recommended setup visit:
|
||||||
|
# https://docs.fastlane.tools/best-practices/source-control/#source-control
|
||||||
|
|
||||||
|
# Code Injection
|
||||||
|
# After new code Injection tools there's a generated folder /iOSInjectionProject
|
||||||
|
# https://github.com/johnno1962/injectionforxcode
|
||||||
|
|
||||||
|
### VisualStudioCode ###
|
||||||
|
.vscode/*
|
||||||
|
!.vscode/settings.json
|
||||||
|
!.vscode/tasks.json
|
||||||
|
!.vscode/launch.json
|
||||||
|
!.vscode/extensions.json
|
||||||
|
!.vscode/*.code-snippets
|
||||||
|
|
||||||
|
# Local History for Visual Studio Code
|
||||||
|
.history/
|
||||||
|
|
||||||
|
# Built Visual Studio Code Extensions
|
||||||
|
*.vsix
|
||||||
|
|
||||||
|
### VisualStudioCode Patch ###
|
||||||
|
# Ignore all local history of files
|
||||||
|
.history
|
||||||
|
.ionide
|
||||||
|
|
||||||
|
### Xcode ###
|
||||||
|
|
||||||
|
## Xcode 8 and earlier
|
||||||
|
|
||||||
|
### Xcode Patch ###
|
||||||
|
*.xcodeproj/*
|
||||||
|
!*.xcodeproj/project.pbxproj
|
||||||
|
!*.xcodeproj/xcshareddata/
|
||||||
|
!*.xcodeproj/project.xcworkspace/
|
||||||
|
!*.xcworkspace/contents.xcworkspacedata
|
||||||
|
/*.gcno
|
||||||
|
**/xcshareddata/WorkspaceSettings.xcsettings
|
||||||
|
|
||||||
|
### AndroidStudio ###
|
||||||
|
# Covers files to be ignored for android development using Android Studio.
|
||||||
|
|
||||||
|
# Built application files
|
||||||
|
*.ap_
|
||||||
|
*.aab
|
||||||
|
|
||||||
|
# Files for the ART/Dalvik VM
|
||||||
|
*.dex
|
||||||
|
|
||||||
|
# Java class files
|
||||||
|
|
||||||
|
# Generated files
|
||||||
|
bin/
|
||||||
|
gen/
|
||||||
|
|
||||||
|
# Gradle files
|
||||||
|
.gradle
|
||||||
|
|
||||||
|
# Signing files
|
||||||
|
.signing/
|
||||||
|
|
||||||
|
# Local configuration file (sdk path, etc)
|
||||||
|
|
||||||
|
# Proguard folder generated by Eclipse
|
||||||
|
proguard/
|
||||||
|
|
||||||
|
# Log Files
|
||||||
|
|
||||||
|
# Android Studio
|
||||||
|
/*/build/
|
||||||
|
/*/local.properties
|
||||||
|
/*/out
|
||||||
|
/*/*/build
|
||||||
|
/*/*/production
|
||||||
|
.navigation/
|
||||||
|
*.ipr
|
||||||
|
*~
|
||||||
|
*.swp
|
||||||
|
|
||||||
|
# Keystore files
|
||||||
|
|
||||||
|
# Google Services (e.g. APIs or Firebase)
|
||||||
|
# google-services.json
|
||||||
|
|
||||||
|
# Android Patch
|
||||||
|
|
||||||
|
# External native build folder generated in Android Studio 2.2 and later
|
||||||
|
.externalNativeBuild
|
||||||
|
|
||||||
|
# NDK
|
||||||
|
obj/
|
||||||
|
|
||||||
|
# IntelliJ IDEA
|
||||||
|
/out/
|
||||||
|
|
||||||
|
# User-specific configurations
|
||||||
|
.idea/caches/
|
||||||
|
.idea/libraries/
|
||||||
|
.idea/shelf/
|
||||||
|
.idea/workspace.xml
|
||||||
|
.idea/tasks.xml
|
||||||
|
.idea/.name
|
||||||
|
.idea/compiler.xml
|
||||||
|
.idea/copyright/profiles_settings.xml
|
||||||
|
.idea/encodings.xml
|
||||||
|
.idea/misc.xml
|
||||||
|
.idea/modules.xml
|
||||||
|
.idea/scopes/scope_settings.xml
|
||||||
|
.idea/dictionaries
|
||||||
|
.idea/vcs.xml
|
||||||
|
.idea/jsLibraryMappings.xml
|
||||||
|
.idea/datasources.xml
|
||||||
|
.idea/dataSources.ids
|
||||||
|
.idea/sqlDataSources.xml
|
||||||
|
.idea/dynamic.xml
|
||||||
|
.idea/uiDesigner.xml
|
||||||
|
.idea/assetWizardSettings.xml
|
||||||
|
.idea/gradle.xml
|
||||||
|
.idea/jarRepositories.xml
|
||||||
|
.idea/navEditor.xml
|
||||||
|
|
||||||
|
# Legacy Eclipse project files
|
||||||
|
.classpath
|
||||||
|
.project
|
||||||
|
.cproject
|
||||||
|
.settings/
|
||||||
|
|
||||||
|
# Mobile Tools for Java (J2ME)
|
||||||
|
|
||||||
|
# Package Files #
|
||||||
|
|
||||||
|
# virtual machine crash logs (Reference: http://www.java.com/en/download/help/error_hotspot.xml)
|
||||||
|
|
||||||
|
## Plugin-specific files:
|
||||||
|
|
||||||
|
# mpeltonen/sbt-idea plugin
|
||||||
|
|
||||||
|
# JIRA plugin
|
||||||
|
|
||||||
|
# Mongo Explorer plugin
|
||||||
|
.idea/mongoSettings.xml
|
||||||
|
|
||||||
|
# Crashlytics plugin (for Android Studio and IntelliJ)
|
||||||
|
|
||||||
|
### AndroidStudio Patch ###
|
||||||
|
|
||||||
|
!/gradle/wrapper/gradle-wrapper.jar
|
||||||
|
|
||||||
|
# End of https://www.toptal.com/developers/gitignore/api/visualstudiocode,macos,android,androidstudio,dart,fastlane,firebase,flutter,java,jetbrains+all,kotlin,objective-c,swift,xcode
|
||||||
|
|
||||||
|
# Custom rules (everything added below won't be overriden by 'Generate .gitignore File' if you use 'Update' option)
|
||||||
|
|
||||||
|
.idea/
|
||||||
|
*.iml
|
||||||
|
google-services.json
|
||||||
|
pubspec_overrides.yaml
|
||||||
|
|
||||||
|
# Mason
|
||||||
|
.mason/
|
||||||
|
|
||||||
new_version.sh
|
new_version.sh
|
||||||
.latest_version
|
.latest_version
|
||||||
.vscode/
|
.vscode/
|
||||||
example/
|
example/
|
||||||
models/
|
models/
|
||||||
|
build/
|
||||||
|
*.iml
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,80 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
## 2023-05-03
|
||||||
|
|
||||||
|
### Changes
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Packages with breaking changes:
|
||||||
|
|
||||||
|
- [`wyatt_bloc_layout` - `v0.1.0`](#wyatt_bloc_layout---v010)
|
||||||
|
- [`wyatt_ui_components` - `v0.2.0`](#wyatt_ui_components---v020)
|
||||||
|
- [`wyatt_ui_kit` - `v3.0.0`](#wyatt_ui_kit---v300)
|
||||||
|
- [`wyatt_ui_layout` - `v0.1.0`](#wyatt_ui_layout---v010)
|
||||||
|
|
||||||
|
Packages with other changes:
|
||||||
|
|
||||||
|
- [`wyatt_analysis` - `v2.5.0`](#wyatt_analysis---v250)
|
||||||
|
- [`wyatt_component_copy_with_extension` - `v2.0.1`](#wyatt_component_copy_with_extension---v201)
|
||||||
|
- [`wyatt_component_copy_with_gen` - `v2.0.1`](#wyatt_component_copy_with_gen---v201)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### `wyatt_bloc_layout` - `v0.1.0`
|
||||||
|
|
||||||
|
- **BREAKING** **FEAT**(layout): update layout plugins with new components system. (e76857f1)
|
||||||
|
|
||||||
|
#### `wyatt_ui_components` - `v0.2.0`
|
||||||
|
|
||||||
|
- **FIX**(gen): rename builder correctly. (cef73aa6)
|
||||||
|
- **FEAT**(ui_components): make textwrapper toString useful. (96369e24)
|
||||||
|
- **FEAT**(ui): add pricing card. (bfbeabe7)
|
||||||
|
- **FEAT**(ui): update default extension implementation. (01a5619d)
|
||||||
|
- **FEAT**(ui): add animated decorated box + animate all buttons + customize duration in style. (4ebb679a)
|
||||||
|
- **FEAT**(ui): add colors and rework ComponentThemeData. (abd5e1b5)
|
||||||
|
- **FEAT**(ui): make components more coherent + docs. (01269027)
|
||||||
|
- **FEAT**(ui): make gradient as component. (0d5109fc)
|
||||||
|
- **FEAT**(ui): fix, rename, rewrite some helpers. (3fb40205)
|
||||||
|
- **BREAKING** **FEAT**(ui): move last extensions + add extension provider. (4097a420)
|
||||||
|
- **BREAKING** **FEAT**(ui): rework theme resolver mechanism + move theme extension implementations. (8f5e3923)
|
||||||
|
|
||||||
|
#### `wyatt_ui_kit` - `v3.0.0`
|
||||||
|
|
||||||
|
- **FIX**(gen): rename builder correctly. (cef73aa6)
|
||||||
|
- **FEAT**(ui): add pricing card. (bfbeabe7)
|
||||||
|
- **FEAT**(ui): update default extension implementation. (01a5619d)
|
||||||
|
- **FEAT**(ui): add animated decorated box + animate all buttons + customize duration in style. (4ebb679a)
|
||||||
|
- **FEAT**(ui): add colors and rework ComponentThemeData. (abd5e1b5)
|
||||||
|
- **FEAT**(ui_kit): update example by removing adaptative theme. (a024b7e7)
|
||||||
|
- **FEAT**(ui): make components more coherent + docs. (01269027)
|
||||||
|
- **FEAT**(ui): make gradient as component. (0d5109fc)
|
||||||
|
- **FEAT**(ui): fix, rename, rewrite some helpers. (3fb40205)
|
||||||
|
- **FEAT**(ui_kit): make flat button fade on transition. (32cc6e82)
|
||||||
|
- **FEAT**(ui_kit): add more control over flat button prefix/suffix color. (2baaf5c0)
|
||||||
|
- **BREAKING** **FEAT**(ui): move last extensions + add extension provider. (4097a420)
|
||||||
|
- **BREAKING** **FEAT**(ui): rework theme resolver mechanism + move theme extension implementations. (8f5e3923)
|
||||||
|
|
||||||
|
#### `wyatt_ui_layout` - `v0.1.0`
|
||||||
|
|
||||||
|
- **BREAKING** **FEAT**(layout): update layout plugins with new components system. (e76857f1)
|
||||||
|
|
||||||
|
#### `wyatt_analysis` - `v2.5.0`
|
||||||
|
|
||||||
|
- **FIX**(analysis): remove depencies sort. (4e3b288e)
|
||||||
|
- **FEAT**(analysis): update version. (0720a145)
|
||||||
|
- **FEAT**(analysis): upgrade. (2692c607)
|
||||||
|
|
||||||
|
#### `wyatt_component_copy_with_extension` - `v2.0.1`
|
||||||
|
|
||||||
|
- **FIX**(gen): rename builder correctly. (cef73aa6)
|
||||||
|
|
||||||
|
#### `wyatt_component_copy_with_gen` - `v2.0.1`
|
||||||
|
|
||||||
|
- **FIX**(gen): rename builder correctly. (cef73aa6)
|
||||||
|
|
||||||
|
|
||||||
## 2023-04-14
|
## 2023-04-14
|
||||||
|
|
||||||
### Changes
|
### Changes
|
||||||
|
|||||||
@@ -270,25 +270,14 @@ or
|
|||||||
|
|
||||||
You can add any package of the `packages/` sub directory in your project.
|
You can add any package of the `packages/` sub directory in your project.
|
||||||
|
|
||||||
```yaml
|
|
||||||
dependencies:
|
|
||||||
wyatt_analysis:
|
|
||||||
git:
|
|
||||||
url: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages
|
|
||||||
ref: wyatt_analysis-v2.4.1
|
|
||||||
path: packages/wyatt_analysis
|
|
||||||
```
|
|
||||||
|
|
||||||
or the hosted version :
|
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
dependencies:
|
dependencies:
|
||||||
wyatt_analysis:
|
wyatt_analysis:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/
|
||||||
version: 2.4.1
|
version: ^2.4.1
|
||||||
```
|
```
|
||||||
|
|
||||||
Here you can change `package name` and `package version` .
|
> You can also use the `git` protocol. But it's not recommended since it's not handle version constraints.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
+58
-34
@@ -1,65 +1,86 @@
|
|||||||
name: Wyatt-Packages
|
name: Wyatt-Packages
|
||||||
#repository: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages Gitea not yet supported
|
#repository: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages Gitea not yet supported
|
||||||
|
|
||||||
|
sdkPath: auto
|
||||||
|
|
||||||
packages:
|
packages:
|
||||||
- packages/**
|
- packages/**
|
||||||
|
|
||||||
|
ide:
|
||||||
|
intellij:
|
||||||
|
enabled: false
|
||||||
|
|
||||||
command:
|
command:
|
||||||
bootstrap:
|
|
||||||
usePubspecOverrides: true
|
|
||||||
|
|
||||||
version:
|
version:
|
||||||
updateGitTagRefs: true
|
updateGitTagRefs: true
|
||||||
linkToCommits: false # Gitea not yet supported
|
linkToCommits: false # Gitea not yet supported
|
||||||
workspaceChangelog: true
|
workspaceChangelog: true
|
||||||
|
includeCommitId: true
|
||||||
branch: master
|
branch: master
|
||||||
|
message: |
|
||||||
|
chore(release): publish packages 🎉
|
||||||
|
|
||||||
|
{new_package_versions}
|
||||||
|
|
||||||
|
clean:
|
||||||
|
hooks:
|
||||||
|
post: melos exec --flutter --concurrency=3 -- "flutter clean"
|
||||||
|
|
||||||
scripts:
|
scripts:
|
||||||
|
analyze:
|
||||||
|
run: |
|
||||||
|
melos exec --flutter --concurrency=1 -- flutter analyze --fatal-infos
|
||||||
|
description: Run `flutter analyze` for all flutter packages.
|
||||||
|
|
||||||
|
fix:apply:
|
||||||
|
run: melos exec --concurrency=1 -- dart fix . --apply
|
||||||
|
description: Run and apply `dart fix` for all packages.
|
||||||
|
|
||||||
|
fix:check:
|
||||||
|
run: melos exec --concurrency=1 -- dart fix . --set-exit-if-changed
|
||||||
|
description: Run `dart fix` checks for all packages.
|
||||||
|
|
||||||
|
format:
|
||||||
|
run: melos exec --concurrency=1 -- dart format .
|
||||||
|
description: Run `dart format` for all packages.
|
||||||
|
|
||||||
lint:all:
|
lint:all:
|
||||||
run: melos run analyze && melos run format
|
run: melos run analyze && melos run format
|
||||||
description: Run all static analysis checks.
|
description: Run all static analysis checks.
|
||||||
|
|
||||||
analyze:
|
|
||||||
run: |
|
|
||||||
melos exec -c 1 -- flutter analyze --fatal-infos
|
|
||||||
description: Run `flutter analyze` for all packages.
|
|
||||||
|
|
||||||
fix:
|
|
||||||
run: melos exec dart fix . --apply
|
|
||||||
description: Run `dart fix` for all packages.
|
|
||||||
|
|
||||||
format:
|
|
||||||
run: melos exec dart format .
|
|
||||||
description: Run `dart format` for all packages.
|
|
||||||
|
|
||||||
format-check:
|
|
||||||
run: melos exec dart fix . --set-exit-if-changed
|
|
||||||
description: Run `dart fix` checks for all packages.
|
|
||||||
|
|
||||||
clean:deep:
|
clean:deep:
|
||||||
run: git clean -x -d -f -q
|
run: git clean -x -d -f -q
|
||||||
description: Clean things very deeply with `git clean`.
|
description: Clean things very deeply with `git clean`.
|
||||||
|
|
||||||
test:selective_unit_test:
|
test:selective_unit_test:
|
||||||
run: melos exec -- flutter test --no-pub --coverage
|
run: melos exec --concurrency=1 -- flutter test --no-pub --coverage
|
||||||
description: Run Flutter tests for a specific package in this project.
|
description: Run Flutter tests for a specific package in this project.
|
||||||
select-package:
|
packageFilters:
|
||||||
dir-exists:
|
dirExists:
|
||||||
- test
|
- test
|
||||||
ignore:
|
ignore:
|
||||||
- '*example*'
|
- "*example*"
|
||||||
|
|
||||||
test:all:
|
test:all:
|
||||||
run: melos run test:selective_unit_test --no-select
|
run: melos run test:selective_unit_test --no-select
|
||||||
description: Run all Flutter tests in this project.
|
description: Run all Flutter tests in this project.
|
||||||
|
|
||||||
gen-coverage: melos exec -- sh "\$MELOS_ROOT_PATH/combine_coverage.sh" && genhtml coverage/lcov.info -o coverage/html
|
gen:coverage:
|
||||||
|
run: |
|
||||||
|
melos exec --concurrency=1 -- sh "\$MELOS_ROOT_PATH/combine_coverage.sh" && \
|
||||||
|
genhtml coverage/lcov.info -o coverage/html
|
||||||
|
description: |
|
||||||
|
Generate coverage report for all packages.
|
||||||
|
Requires `lcov` and `genhtml`.
|
||||||
|
|
||||||
gen-class-models:
|
gen:class_models:
|
||||||
run: melos exec -- dart pub global run dcdg -o models/class-models.puml
|
run: melos exec --concurrency=1 -- dart pub global run dcdg -o models/class-models.puml
|
||||||
select-package:
|
description: |
|
||||||
|
Generate class models for all packages.
|
||||||
|
Requires `dcdg`. (https://pub.dev/packages/dcdg)
|
||||||
|
packageFilters:
|
||||||
ignore:
|
ignore:
|
||||||
- '*example*'
|
- "*example*"
|
||||||
|
|
||||||
quality-check:
|
quality-check:
|
||||||
run: |
|
run: |
|
||||||
@@ -70,13 +91,16 @@ scripts:
|
|||||||
|
|
||||||
publish:validate:
|
publish:validate:
|
||||||
run: melos publish --diff="origin/$DRONE_COMMIT_BRANCH...HEAD" --yes
|
run: melos publish --diff="origin/$DRONE_COMMIT_BRANCH...HEAD" --yes
|
||||||
|
description: |
|
||||||
|
Validate that all packages are ready to be published.
|
||||||
|
Requires DRONE_COMMIT_BRANCH to be set.
|
||||||
|
Note: This will not actually publish anything.
|
||||||
|
|
||||||
publish:validate-local:
|
publish:validate-local:
|
||||||
run: melos publish --yes
|
run: melos publish --yes
|
||||||
|
description: |
|
||||||
|
Validate that all packages are ready to be published.
|
||||||
|
Note: This will not actually publish anything.
|
||||||
|
|
||||||
# publish:
|
# publish:
|
||||||
# run: melos publish --diff="origin/$DRONE_COMMIT_BRANCH...HEAD" --no-dry-run --yes
|
# run: melos publish --diff="origin/$DRONE_COMMIT_BRANCH...HEAD" --no-dry-run --yes
|
||||||
|
|
||||||
# Additional cleanup lifecycle script, executed when `melos clean` is run.
|
|
||||||
postclean: >
|
|
||||||
melos exec -c 6 -- "flutter clean"
|
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
2.4.1
|
2.5.0
|
||||||
|
|||||||
@@ -1,3 +1,9 @@
|
|||||||
|
## 2.5.0
|
||||||
|
|
||||||
|
- **FIX**(analysis): remove depencies sort. (4e3b288e)
|
||||||
|
- **FEAT**(analysis): update version. (0720a145)
|
||||||
|
- **FEAT**(analysis): upgrade. (2692c607)
|
||||||
|
|
||||||
## 2.4.2
|
## 2.4.2
|
||||||
|
|
||||||
- **REFACTOR**: remove cross package export.
|
- **REFACTOR**: remove cross package export.
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
This package provides lint rules for Dart and Flutter which are used at [Wyatt Studio](https://wyatt-studio.fr). For more information, see the complete list of options in **lib/analysis_options.2.4.1.yaml**.
|
This package provides lint rules for Dart and Flutter which are used at [Wyatt Studio](https://wyatt-studio.fr). For more information, see the complete list of options in **lib/analysis_options.2.5.0.yaml**.
|
||||||
|
|
||||||
**Note**: This package was heavily inspired by [pedantic](https://github.com/dart-lang/pedantic), [Very Good Analysis](https://github.com/VeryGoodOpenSource/very_good_analysis) and the official [flutter_lints](https://pub.dev/packages/flutter_lints).
|
**Note**: This package was heavily inspired by [pedantic](https://github.com/dart-lang/pedantic), [Very Good Analysis](https://github.com/VeryGoodOpenSource/very_good_analysis) and the official [flutter_lints](https://pub.dev/packages/flutter_lints).
|
||||||
|
|
||||||
@@ -29,7 +29,7 @@ This package provides lint rules for Dart and Flutter which are used at [Wyatt
|
|||||||
Using CLI:
|
Using CLI:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
dart pub add wyatt_analysis:2.4.1 --dev --hosted-url=https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/
|
dart pub add wyatt_analysis:2.5.0 --dev --hosted-url=https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/
|
||||||
```
|
```
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
@@ -39,7 +39,7 @@ To use the lints, add a dependency in your `pubspec.yaml` :
|
|||||||
```yaml
|
```yaml
|
||||||
wyatt_analysis:
|
wyatt_analysis:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/
|
||||||
version: 2.4.1
|
version: 2.5.0
|
||||||
```
|
```
|
||||||
|
|
||||||
Then, add an include in `analysis_options.yaml` :
|
Then, add an include in `analysis_options.yaml` :
|
||||||
@@ -57,13 +57,13 @@ include: package:wyatt_analysis/analysis_options.flutter.yaml
|
|||||||
If you wish to restrict the lint version, specify a version of `analysis_options.yaml` instead:
|
If you wish to restrict the lint version, specify a version of `analysis_options.yaml` instead:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
include: package:wyatt_analysis/analysis_options.flutter.2.4.1.yaml
|
include: package:wyatt_analysis/analysis_options.flutter.2.5.0.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
If you just want **Dart** version:
|
If you just want **Dart** version:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
include: package:wyatt_analysis/analysis_options.2.4.1.yaml
|
include: package:wyatt_analysis/analysis_options.2.5.0.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
## Suppressing Lints
|
## Suppressing Lints
|
||||||
|
|||||||
@@ -0,0 +1,217 @@
|
|||||||
|
# Copyright (C) 2023 WYATT GROUP
|
||||||
|
# Please see the AUTHORS file for details.
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
analyzer:
|
||||||
|
language:
|
||||||
|
strict-casts: true
|
||||||
|
strict-inference: true
|
||||||
|
strict-raw-types: true
|
||||||
|
|
||||||
|
errors:
|
||||||
|
todo: ignore
|
||||||
|
close_sinks: ignore
|
||||||
|
missing_required_param: error
|
||||||
|
missing_return: error
|
||||||
|
|
||||||
|
exclude:
|
||||||
|
- lib/l10n/**
|
||||||
|
- lib/generated/**
|
||||||
|
- lib/gen/**
|
||||||
|
- lib/generated_plugin_registrant.dart
|
||||||
|
- test/.test_coverage.dart
|
||||||
|
- "**/*.g.dart"
|
||||||
|
- "**/*.freezed.dart"
|
||||||
|
|
||||||
|
linter:
|
||||||
|
rules:
|
||||||
|
- always_declare_return_types
|
||||||
|
- always_put_control_body_on_new_line
|
||||||
|
- always_put_required_named_parameters_first
|
||||||
|
- always_require_non_null_named_parameters
|
||||||
|
- always_use_package_imports
|
||||||
|
- annotate_overrides
|
||||||
|
- avoid_bool_literals_in_conditional_expressions
|
||||||
|
- avoid_catching_errors
|
||||||
|
- avoid_double_and_int_checks
|
||||||
|
- avoid_dynamic_calls
|
||||||
|
- avoid_empty_else
|
||||||
|
- avoid_equals_and_hash_code_on_mutable_classes
|
||||||
|
- avoid_escaping_inner_quotes
|
||||||
|
- avoid_field_initializers_in_const_classes
|
||||||
|
- avoid_final_parameters
|
||||||
|
- avoid_function_literals_in_foreach_calls
|
||||||
|
- avoid_init_to_null
|
||||||
|
- avoid_js_rounded_ints
|
||||||
|
- avoid_multiple_declarations_per_line
|
||||||
|
- avoid_null_checks_in_equality_operators
|
||||||
|
- avoid_positional_boolean_parameters
|
||||||
|
- avoid_private_typedef_functions
|
||||||
|
- avoid_redundant_argument_values
|
||||||
|
- avoid_relative_lib_imports
|
||||||
|
- avoid_renaming_method_parameters
|
||||||
|
- avoid_return_types_on_setters
|
||||||
|
- avoid_returning_null
|
||||||
|
- avoid_returning_null_for_future
|
||||||
|
- avoid_returning_null_for_void
|
||||||
|
- avoid_returning_this
|
||||||
|
- avoid_setters_without_getters
|
||||||
|
- avoid_shadowing_type_parameters
|
||||||
|
- avoid_single_cascade_in_expression_statements
|
||||||
|
- avoid_slow_async_io
|
||||||
|
- avoid_type_to_string
|
||||||
|
- avoid_types_as_parameter_names
|
||||||
|
- avoid_types_on_closure_parameters
|
||||||
|
- avoid_unused_constructor_parameters
|
||||||
|
- avoid_void_async
|
||||||
|
- await_only_futures
|
||||||
|
- camel_case_extensions
|
||||||
|
- camel_case_types
|
||||||
|
- cancel_subscriptions
|
||||||
|
- cascade_invocations
|
||||||
|
- cast_nullable_to_non_nullable
|
||||||
|
- collection_methods_unrelated_type
|
||||||
|
- combinators_ordering
|
||||||
|
- comment_references
|
||||||
|
- conditional_uri_does_not_exist
|
||||||
|
- constant_identifier_names
|
||||||
|
- control_flow_in_finally
|
||||||
|
- curly_braces_in_flow_control_structures
|
||||||
|
- depend_on_referenced_packages
|
||||||
|
- deprecated_consistency
|
||||||
|
- directives_ordering
|
||||||
|
- empty_catches
|
||||||
|
- empty_constructor_bodies
|
||||||
|
- empty_statements
|
||||||
|
- eol_at_end_of_file
|
||||||
|
- exhaustive_cases
|
||||||
|
- file_names
|
||||||
|
- flutter_style_todos
|
||||||
|
- hash_and_equals
|
||||||
|
- implementation_imports
|
||||||
|
- implicit_call_tearoffs
|
||||||
|
- iterable_contains_unrelated_type
|
||||||
|
- join_return_with_assignment
|
||||||
|
- leading_newlines_in_multiline_strings
|
||||||
|
- library_names
|
||||||
|
- library_prefixes
|
||||||
|
- library_private_types_in_public_api
|
||||||
|
- lines_longer_than_80_chars
|
||||||
|
- list_remove_unrelated_type
|
||||||
|
- literal_only_boolean_expressions
|
||||||
|
- missing_whitespace_between_adjacent_strings
|
||||||
|
- no_adjacent_strings_in_list
|
||||||
|
- no_default_cases
|
||||||
|
- no_duplicate_case_values
|
||||||
|
- no_leading_underscores_for_library_prefixes
|
||||||
|
- no_leading_underscores_for_local_identifiers
|
||||||
|
- no_runtimeType_toString
|
||||||
|
- non_constant_identifier_names
|
||||||
|
- noop_primitive_operations
|
||||||
|
- null_check_on_nullable_type_parameter
|
||||||
|
- null_closures
|
||||||
|
- one_member_abstracts
|
||||||
|
- only_throw_errors
|
||||||
|
- overridden_fields
|
||||||
|
- package_api_docs
|
||||||
|
- package_names
|
||||||
|
- package_prefixed_library_names
|
||||||
|
- parameter_assignments
|
||||||
|
- prefer_adjacent_string_concatenation
|
||||||
|
- prefer_asserts_in_initializer_lists
|
||||||
|
- prefer_asserts_with_message
|
||||||
|
- prefer_collection_literals
|
||||||
|
- prefer_conditional_assignment
|
||||||
|
- prefer_const_constructors
|
||||||
|
- prefer_const_constructors_in_immutables
|
||||||
|
- prefer_const_declarations
|
||||||
|
- prefer_const_literals_to_create_immutables
|
||||||
|
- prefer_constructors_over_static_methods
|
||||||
|
- prefer_contains
|
||||||
|
- prefer_equal_for_default_values
|
||||||
|
- prefer_expression_function_bodies
|
||||||
|
- prefer_final_fields
|
||||||
|
- prefer_final_in_for_each
|
||||||
|
- prefer_final_locals
|
||||||
|
- prefer_for_elements_to_map_fromIterable
|
||||||
|
- prefer_function_declarations_over_variables
|
||||||
|
- prefer_generic_function_type_aliases
|
||||||
|
- prefer_if_elements_to_conditional_expressions
|
||||||
|
- prefer_if_null_operators
|
||||||
|
- prefer_initializing_formals
|
||||||
|
- prefer_inlined_adds
|
||||||
|
- prefer_int_literals
|
||||||
|
- prefer_interpolation_to_compose_strings
|
||||||
|
- prefer_is_empty
|
||||||
|
- prefer_is_not_empty
|
||||||
|
- prefer_is_not_operator
|
||||||
|
- prefer_iterable_whereType
|
||||||
|
- prefer_mixin
|
||||||
|
- prefer_null_aware_method_calls
|
||||||
|
- prefer_null_aware_operators
|
||||||
|
- prefer_single_quotes
|
||||||
|
- prefer_spread_collections
|
||||||
|
- prefer_typing_uninitialized_variables
|
||||||
|
- prefer_void_to_null
|
||||||
|
- provide_deprecation_message
|
||||||
|
- recursive_getters
|
||||||
|
- require_trailing_commas
|
||||||
|
- slash_for_doc_comments
|
||||||
|
- sort_constructors_first
|
||||||
|
- sort_unnamed_constructors_first
|
||||||
|
- test_types_in_equals
|
||||||
|
- throw_in_finally
|
||||||
|
- tighten_type_of_initializing_formals
|
||||||
|
- type_annotate_public_apis
|
||||||
|
- type_init_formals
|
||||||
|
- unawaited_futures
|
||||||
|
- unnecessary_await_in_return
|
||||||
|
- unnecessary_brace_in_string_interps
|
||||||
|
- unnecessary_const
|
||||||
|
- unnecessary_constructor_name
|
||||||
|
- unnecessary_getters_setters
|
||||||
|
- unnecessary_lambdas
|
||||||
|
- unnecessary_late
|
||||||
|
- unnecessary_new
|
||||||
|
- unnecessary_null_aware_assignments
|
||||||
|
- unnecessary_null_checks
|
||||||
|
- unnecessary_null_in_if_null_operators
|
||||||
|
- unnecessary_nullable_for_final_variable_declarations
|
||||||
|
- unnecessary_overrides
|
||||||
|
- unnecessary_parenthesis
|
||||||
|
- unnecessary_raw_strings
|
||||||
|
- unnecessary_statements
|
||||||
|
- unnecessary_string_escapes
|
||||||
|
- unnecessary_string_interpolations
|
||||||
|
- unnecessary_this
|
||||||
|
- unnecessary_to_list_in_spreads
|
||||||
|
- unrelated_type_equality_checks
|
||||||
|
- unsafe_html
|
||||||
|
- use_enums
|
||||||
|
- use_function_type_syntax_for_parameters
|
||||||
|
- use_if_null_to_convert_nulls_to_bools
|
||||||
|
- use_is_even_rather_than_modulo
|
||||||
|
- use_late_for_private_fields_and_variables
|
||||||
|
- use_named_constants
|
||||||
|
- use_raw_strings
|
||||||
|
- use_rethrow_when_possible
|
||||||
|
- use_setters_to_change_properties
|
||||||
|
- use_string_buffers
|
||||||
|
- use_string_in_part_of_directives
|
||||||
|
- use_super_parameters
|
||||||
|
- use_test_throws_matchers
|
||||||
|
- use_to_and_as_if_applicable
|
||||||
|
- valid_regexps
|
||||||
|
- void_checks
|
||||||
@@ -0,0 +1,218 @@
|
|||||||
|
# Copyright (C) 2023 WYATT GROUP
|
||||||
|
# Please see the AUTHORS file for details.
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
analyzer:
|
||||||
|
language:
|
||||||
|
strict-casts: true
|
||||||
|
strict-inference: true
|
||||||
|
strict-raw-types: true
|
||||||
|
|
||||||
|
errors:
|
||||||
|
todo: ignore
|
||||||
|
close_sinks: ignore
|
||||||
|
missing_required_param: error
|
||||||
|
missing_return: error
|
||||||
|
|
||||||
|
exclude:
|
||||||
|
- lib/l10n/**
|
||||||
|
- lib/generated/**
|
||||||
|
- lib/gen/**
|
||||||
|
- lib/generated_plugin_registrant.dart
|
||||||
|
- test/.test_coverage.dart
|
||||||
|
- "**/*.g.dart"
|
||||||
|
- "**/*.freezed.dart"
|
||||||
|
|
||||||
|
linter:
|
||||||
|
rules:
|
||||||
|
- always_declare_return_types
|
||||||
|
- always_put_control_body_on_new_line
|
||||||
|
- always_put_required_named_parameters_first
|
||||||
|
- always_require_non_null_named_parameters
|
||||||
|
- always_use_package_imports
|
||||||
|
- annotate_overrides
|
||||||
|
- avoid_bool_literals_in_conditional_expressions
|
||||||
|
- avoid_catching_errors
|
||||||
|
- avoid_double_and_int_checks
|
||||||
|
- avoid_dynamic_calls
|
||||||
|
- avoid_empty_else
|
||||||
|
- avoid_equals_and_hash_code_on_mutable_classes
|
||||||
|
- avoid_escaping_inner_quotes
|
||||||
|
- avoid_field_initializers_in_const_classes
|
||||||
|
- avoid_final_parameters
|
||||||
|
- avoid_function_literals_in_foreach_calls
|
||||||
|
- avoid_init_to_null
|
||||||
|
- avoid_js_rounded_ints
|
||||||
|
- avoid_multiple_declarations_per_line
|
||||||
|
- avoid_null_checks_in_equality_operators
|
||||||
|
- avoid_positional_boolean_parameters
|
||||||
|
- avoid_private_typedef_functions
|
||||||
|
- avoid_redundant_argument_values
|
||||||
|
- avoid_relative_lib_imports
|
||||||
|
- avoid_renaming_method_parameters
|
||||||
|
- avoid_return_types_on_setters
|
||||||
|
- avoid_returning_null
|
||||||
|
- avoid_returning_null_for_future
|
||||||
|
- avoid_returning_null_for_void
|
||||||
|
- avoid_returning_this
|
||||||
|
- avoid_setters_without_getters
|
||||||
|
- avoid_shadowing_type_parameters
|
||||||
|
- avoid_single_cascade_in_expression_statements
|
||||||
|
- avoid_slow_async_io
|
||||||
|
- avoid_type_to_string
|
||||||
|
- avoid_types_as_parameter_names
|
||||||
|
- avoid_types_on_closure_parameters
|
||||||
|
- avoid_unused_constructor_parameters
|
||||||
|
- avoid_void_async
|
||||||
|
- await_only_futures
|
||||||
|
- camel_case_extensions
|
||||||
|
- camel_case_types
|
||||||
|
- cancel_subscriptions
|
||||||
|
- cascade_invocations
|
||||||
|
- cast_nullable_to_non_nullable
|
||||||
|
- collection_methods_unrelated_type
|
||||||
|
- combinators_ordering
|
||||||
|
- comment_references
|
||||||
|
- conditional_uri_does_not_exist
|
||||||
|
- constant_identifier_names
|
||||||
|
- control_flow_in_finally
|
||||||
|
- curly_braces_in_flow_control_structures
|
||||||
|
- dangling_library_doc_comments
|
||||||
|
- depend_on_referenced_packages
|
||||||
|
- deprecated_consistency
|
||||||
|
- directives_ordering
|
||||||
|
- empty_catches
|
||||||
|
- empty_constructor_bodies
|
||||||
|
- empty_statements
|
||||||
|
- eol_at_end_of_file
|
||||||
|
- exhaustive_cases
|
||||||
|
- file_names
|
||||||
|
- flutter_style_todos
|
||||||
|
- hash_and_equals
|
||||||
|
- implementation_imports
|
||||||
|
- implicit_call_tearoffs
|
||||||
|
- iterable_contains_unrelated_type
|
||||||
|
- join_return_with_assignment
|
||||||
|
- leading_newlines_in_multiline_strings
|
||||||
|
- library_names
|
||||||
|
- library_prefixes
|
||||||
|
- library_private_types_in_public_api
|
||||||
|
- lines_longer_than_80_chars
|
||||||
|
- list_remove_unrelated_type
|
||||||
|
- literal_only_boolean_expressions
|
||||||
|
- missing_whitespace_between_adjacent_strings
|
||||||
|
- no_adjacent_strings_in_list
|
||||||
|
- no_default_cases
|
||||||
|
- no_duplicate_case_values
|
||||||
|
- no_leading_underscores_for_library_prefixes
|
||||||
|
- no_leading_underscores_for_local_identifiers
|
||||||
|
- no_runtimeType_toString
|
||||||
|
- non_constant_identifier_names
|
||||||
|
- noop_primitive_operations
|
||||||
|
- null_check_on_nullable_type_parameter
|
||||||
|
- null_closures
|
||||||
|
- one_member_abstracts
|
||||||
|
- only_throw_errors
|
||||||
|
- overridden_fields
|
||||||
|
- package_api_docs
|
||||||
|
- package_names
|
||||||
|
- package_prefixed_library_names
|
||||||
|
- parameter_assignments
|
||||||
|
- prefer_adjacent_string_concatenation
|
||||||
|
- prefer_asserts_in_initializer_lists
|
||||||
|
- prefer_asserts_with_message
|
||||||
|
- prefer_collection_literals
|
||||||
|
- prefer_conditional_assignment
|
||||||
|
- prefer_const_constructors
|
||||||
|
- prefer_const_constructors_in_immutables
|
||||||
|
- prefer_const_declarations
|
||||||
|
- prefer_const_literals_to_create_immutables
|
||||||
|
- prefer_constructors_over_static_methods
|
||||||
|
- prefer_contains
|
||||||
|
- prefer_equal_for_default_values
|
||||||
|
- prefer_expression_function_bodies
|
||||||
|
- prefer_final_fields
|
||||||
|
- prefer_final_in_for_each
|
||||||
|
- prefer_final_locals
|
||||||
|
- prefer_for_elements_to_map_fromIterable
|
||||||
|
- prefer_function_declarations_over_variables
|
||||||
|
- prefer_generic_function_type_aliases
|
||||||
|
- prefer_if_elements_to_conditional_expressions
|
||||||
|
- prefer_if_null_operators
|
||||||
|
- prefer_initializing_formals
|
||||||
|
- prefer_inlined_adds
|
||||||
|
- prefer_int_literals
|
||||||
|
- prefer_interpolation_to_compose_strings
|
||||||
|
- prefer_is_empty
|
||||||
|
- prefer_is_not_empty
|
||||||
|
- prefer_is_not_operator
|
||||||
|
- prefer_iterable_whereType
|
||||||
|
- prefer_mixin
|
||||||
|
- prefer_null_aware_method_calls
|
||||||
|
- prefer_null_aware_operators
|
||||||
|
- prefer_single_quotes
|
||||||
|
- prefer_spread_collections
|
||||||
|
- prefer_typing_uninitialized_variables
|
||||||
|
- prefer_void_to_null
|
||||||
|
- provide_deprecation_message
|
||||||
|
- recursive_getters
|
||||||
|
- require_trailing_commas
|
||||||
|
- slash_for_doc_comments
|
||||||
|
- sort_constructors_first
|
||||||
|
- sort_unnamed_constructors_first
|
||||||
|
- test_types_in_equals
|
||||||
|
- throw_in_finally
|
||||||
|
- tighten_type_of_initializing_formals
|
||||||
|
- type_annotate_public_apis
|
||||||
|
- type_init_formals
|
||||||
|
- unawaited_futures
|
||||||
|
- unnecessary_await_in_return
|
||||||
|
- unnecessary_brace_in_string_interps
|
||||||
|
- unnecessary_const
|
||||||
|
- unnecessary_constructor_name
|
||||||
|
- unnecessary_getters_setters
|
||||||
|
- unnecessary_lambdas
|
||||||
|
- unnecessary_late
|
||||||
|
- unnecessary_new
|
||||||
|
- unnecessary_null_aware_assignments
|
||||||
|
- unnecessary_null_checks
|
||||||
|
- unnecessary_null_in_if_null_operators
|
||||||
|
- unnecessary_nullable_for_final_variable_declarations
|
||||||
|
- unnecessary_overrides
|
||||||
|
- unnecessary_parenthesis
|
||||||
|
- unnecessary_raw_strings
|
||||||
|
- unnecessary_statements
|
||||||
|
- unnecessary_string_escapes
|
||||||
|
- unnecessary_string_interpolations
|
||||||
|
- unnecessary_this
|
||||||
|
- unnecessary_to_list_in_spreads
|
||||||
|
- unrelated_type_equality_checks
|
||||||
|
- unsafe_html
|
||||||
|
- use_enums
|
||||||
|
- use_function_type_syntax_for_parameters
|
||||||
|
- use_if_null_to_convert_nulls_to_bools
|
||||||
|
- use_is_even_rather_than_modulo
|
||||||
|
- use_late_for_private_fields_and_variables
|
||||||
|
- use_named_constants
|
||||||
|
- use_raw_strings
|
||||||
|
- use_rethrow_when_possible
|
||||||
|
- use_setters_to_change_properties
|
||||||
|
- use_string_buffers
|
||||||
|
- use_string_in_part_of_directives
|
||||||
|
- use_super_parameters
|
||||||
|
- use_test_throws_matchers
|
||||||
|
- use_to_and_as_if_applicable
|
||||||
|
- valid_regexps
|
||||||
|
- void_checks
|
||||||
@@ -0,0 +1,218 @@
|
|||||||
|
# Copyright (C) 2023 WYATT GROUP
|
||||||
|
# Please see the AUTHORS file for details.
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
analyzer:
|
||||||
|
language:
|
||||||
|
strict-casts: true
|
||||||
|
strict-inference: true
|
||||||
|
strict-raw-types: true
|
||||||
|
|
||||||
|
errors:
|
||||||
|
todo: ignore
|
||||||
|
close_sinks: ignore
|
||||||
|
missing_required_param: error
|
||||||
|
missing_return: error
|
||||||
|
|
||||||
|
exclude:
|
||||||
|
- lib/l10n/**
|
||||||
|
- lib/generated/**
|
||||||
|
- lib/gen/**
|
||||||
|
- lib/generated_plugin_registrant.dart
|
||||||
|
- test/.test_coverage.dart
|
||||||
|
- "**/*.g.dart"
|
||||||
|
- "**/*.freezed.dart"
|
||||||
|
|
||||||
|
linter:
|
||||||
|
rules:
|
||||||
|
- always_declare_return_types
|
||||||
|
- always_put_control_body_on_new_line
|
||||||
|
- always_put_required_named_parameters_first
|
||||||
|
- always_require_non_null_named_parameters
|
||||||
|
- always_use_package_imports
|
||||||
|
- annotate_overrides
|
||||||
|
- avoid_bool_literals_in_conditional_expressions
|
||||||
|
- avoid_catching_errors
|
||||||
|
- avoid_double_and_int_checks
|
||||||
|
- avoid_dynamic_calls
|
||||||
|
- avoid_empty_else
|
||||||
|
- avoid_equals_and_hash_code_on_mutable_classes
|
||||||
|
- avoid_escaping_inner_quotes
|
||||||
|
- avoid_field_initializers_in_const_classes
|
||||||
|
- avoid_final_parameters
|
||||||
|
- avoid_function_literals_in_foreach_calls
|
||||||
|
- avoid_init_to_null
|
||||||
|
- avoid_js_rounded_ints
|
||||||
|
- avoid_multiple_declarations_per_line
|
||||||
|
- avoid_null_checks_in_equality_operators
|
||||||
|
- avoid_positional_boolean_parameters
|
||||||
|
- avoid_private_typedef_functions
|
||||||
|
- avoid_redundant_argument_values
|
||||||
|
- avoid_relative_lib_imports
|
||||||
|
- avoid_renaming_method_parameters
|
||||||
|
- avoid_return_types_on_setters
|
||||||
|
- avoid_returning_null
|
||||||
|
- avoid_returning_null_for_future
|
||||||
|
- avoid_returning_null_for_void
|
||||||
|
- avoid_returning_this
|
||||||
|
- avoid_setters_without_getters
|
||||||
|
- avoid_shadowing_type_parameters
|
||||||
|
- avoid_single_cascade_in_expression_statements
|
||||||
|
- avoid_slow_async_io
|
||||||
|
- avoid_type_to_string
|
||||||
|
- avoid_types_as_parameter_names
|
||||||
|
- avoid_types_on_closure_parameters
|
||||||
|
- avoid_unused_constructor_parameters
|
||||||
|
- avoid_void_async
|
||||||
|
- await_only_futures
|
||||||
|
- camel_case_extensions
|
||||||
|
- camel_case_types
|
||||||
|
- cancel_subscriptions
|
||||||
|
- cascade_invocations
|
||||||
|
- cast_nullable_to_non_nullable
|
||||||
|
- collection_methods_unrelated_type
|
||||||
|
- combinators_ordering
|
||||||
|
- comment_references
|
||||||
|
- conditional_uri_does_not_exist
|
||||||
|
- constant_identifier_names
|
||||||
|
- control_flow_in_finally
|
||||||
|
- curly_braces_in_flow_control_structures
|
||||||
|
- dangling_library_doc_comments
|
||||||
|
- depend_on_referenced_packages
|
||||||
|
- deprecated_consistency
|
||||||
|
- directives_ordering
|
||||||
|
- empty_catches
|
||||||
|
- empty_constructor_bodies
|
||||||
|
- empty_statements
|
||||||
|
- eol_at_end_of_file
|
||||||
|
- exhaustive_cases
|
||||||
|
- file_names
|
||||||
|
- flutter_style_todos
|
||||||
|
- hash_and_equals
|
||||||
|
- implementation_imports
|
||||||
|
- implicit_call_tearoffs
|
||||||
|
- iterable_contains_unrelated_type
|
||||||
|
- join_return_with_assignment
|
||||||
|
- leading_newlines_in_multiline_strings
|
||||||
|
- library_names
|
||||||
|
- library_prefixes
|
||||||
|
- library_private_types_in_public_api
|
||||||
|
- lines_longer_than_80_chars
|
||||||
|
- list_remove_unrelated_type
|
||||||
|
- literal_only_boolean_expressions
|
||||||
|
- missing_whitespace_between_adjacent_strings
|
||||||
|
- no_adjacent_strings_in_list
|
||||||
|
- no_default_cases
|
||||||
|
- no_duplicate_case_values
|
||||||
|
- no_leading_underscores_for_library_prefixes
|
||||||
|
- no_leading_underscores_for_local_identifiers
|
||||||
|
- no_runtimeType_toString
|
||||||
|
- non_constant_identifier_names
|
||||||
|
- noop_primitive_operations
|
||||||
|
- null_check_on_nullable_type_parameter
|
||||||
|
- null_closures
|
||||||
|
- one_member_abstracts
|
||||||
|
- only_throw_errors
|
||||||
|
- overridden_fields
|
||||||
|
- package_api_docs
|
||||||
|
- package_names
|
||||||
|
- package_prefixed_library_names
|
||||||
|
- parameter_assignments
|
||||||
|
- prefer_adjacent_string_concatenation
|
||||||
|
- prefer_asserts_in_initializer_lists
|
||||||
|
- prefer_asserts_with_message
|
||||||
|
- prefer_collection_literals
|
||||||
|
- prefer_conditional_assignment
|
||||||
|
- prefer_const_constructors
|
||||||
|
- prefer_const_constructors_in_immutables
|
||||||
|
- prefer_const_declarations
|
||||||
|
- prefer_const_literals_to_create_immutables
|
||||||
|
- prefer_constructors_over_static_methods
|
||||||
|
- prefer_contains
|
||||||
|
- prefer_equal_for_default_values
|
||||||
|
- prefer_expression_function_bodies
|
||||||
|
- prefer_final_fields
|
||||||
|
- prefer_final_in_for_each
|
||||||
|
- prefer_final_locals
|
||||||
|
- prefer_for_elements_to_map_fromIterable
|
||||||
|
- prefer_function_declarations_over_variables
|
||||||
|
- prefer_generic_function_type_aliases
|
||||||
|
- prefer_if_elements_to_conditional_expressions
|
||||||
|
- prefer_if_null_operators
|
||||||
|
- prefer_initializing_formals
|
||||||
|
- prefer_inlined_adds
|
||||||
|
- prefer_int_literals
|
||||||
|
- prefer_interpolation_to_compose_strings
|
||||||
|
- prefer_is_empty
|
||||||
|
- prefer_is_not_empty
|
||||||
|
- prefer_is_not_operator
|
||||||
|
- prefer_iterable_whereType
|
||||||
|
- prefer_mixin
|
||||||
|
- prefer_null_aware_method_calls
|
||||||
|
- prefer_null_aware_operators
|
||||||
|
- prefer_single_quotes
|
||||||
|
- prefer_spread_collections
|
||||||
|
- prefer_typing_uninitialized_variables
|
||||||
|
- prefer_void_to_null
|
||||||
|
- provide_deprecation_message
|
||||||
|
- recursive_getters
|
||||||
|
- require_trailing_commas
|
||||||
|
- slash_for_doc_comments
|
||||||
|
- sort_constructors_first
|
||||||
|
- sort_unnamed_constructors_first
|
||||||
|
- test_types_in_equals
|
||||||
|
- throw_in_finally
|
||||||
|
- tighten_type_of_initializing_formals
|
||||||
|
- type_annotate_public_apis
|
||||||
|
- type_init_formals
|
||||||
|
- unawaited_futures
|
||||||
|
- unnecessary_await_in_return
|
||||||
|
- unnecessary_brace_in_string_interps
|
||||||
|
- unnecessary_const
|
||||||
|
- unnecessary_constructor_name
|
||||||
|
- unnecessary_getters_setters
|
||||||
|
- unnecessary_lambdas
|
||||||
|
- unnecessary_late
|
||||||
|
- unnecessary_new
|
||||||
|
- unnecessary_null_aware_assignments
|
||||||
|
- unnecessary_null_checks
|
||||||
|
- unnecessary_null_in_if_null_operators
|
||||||
|
- unnecessary_nullable_for_final_variable_declarations
|
||||||
|
- unnecessary_overrides
|
||||||
|
- unnecessary_parenthesis
|
||||||
|
- unnecessary_raw_strings
|
||||||
|
- unnecessary_statements
|
||||||
|
- unnecessary_string_escapes
|
||||||
|
- unnecessary_string_interpolations
|
||||||
|
- unnecessary_this
|
||||||
|
- unnecessary_to_list_in_spreads
|
||||||
|
- unrelated_type_equality_checks
|
||||||
|
- unsafe_html
|
||||||
|
- use_enums
|
||||||
|
- use_function_type_syntax_for_parameters
|
||||||
|
- use_if_null_to_convert_nulls_to_bools
|
||||||
|
- use_is_even_rather_than_modulo
|
||||||
|
- use_late_for_private_fields_and_variables
|
||||||
|
- use_named_constants
|
||||||
|
- use_raw_strings
|
||||||
|
- use_rethrow_when_possible
|
||||||
|
- use_setters_to_change_properties
|
||||||
|
- use_string_buffers
|
||||||
|
- use_string_in_part_of_directives
|
||||||
|
- use_super_parameters
|
||||||
|
- use_test_throws_matchers
|
||||||
|
- use_to_and_as_if_applicable
|
||||||
|
- valid_regexps
|
||||||
|
- void_checks
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
# Copyright (C) 2023 WYATT GROUP
|
||||||
|
# Please see the AUTHORS file for details.
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
include: package:wyatt_analysis/analysis_options.2.4.2.yaml
|
||||||
|
|
||||||
|
linter:
|
||||||
|
rules:
|
||||||
|
- avoid_print
|
||||||
|
- avoid_unnecessary_containers
|
||||||
|
- avoid_web_libraries_in_flutter
|
||||||
|
- no_logic_in_create_state
|
||||||
|
- sized_box_for_whitespace
|
||||||
|
- sized_box_shrink_expand
|
||||||
|
- sort_child_properties_last
|
||||||
|
- use_build_context_synchronously
|
||||||
|
- use_colored_box
|
||||||
|
- use_decorated_box
|
||||||
|
- use_full_hex_values_for_flutter_colors
|
||||||
|
- use_key_in_widget_constructors
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
# Copyright (C) 2023 WYATT GROUP
|
||||||
|
# Please see the AUTHORS file for details.
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
include: package:wyatt_analysis/analysis_options.2.4.3.yaml
|
||||||
|
|
||||||
|
linter:
|
||||||
|
rules:
|
||||||
|
- avoid_print
|
||||||
|
- avoid_unnecessary_containers
|
||||||
|
- avoid_web_libraries_in_flutter
|
||||||
|
- no_logic_in_create_state
|
||||||
|
- sized_box_for_whitespace
|
||||||
|
- sized_box_shrink_expand
|
||||||
|
- sort_child_properties_last
|
||||||
|
- use_build_context_synchronously
|
||||||
|
- use_colored_box
|
||||||
|
- use_decorated_box
|
||||||
|
- use_full_hex_values_for_flutter_colors
|
||||||
|
- use_key_in_widget_constructors
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
# Copyright (C) 2023 WYATT GROUP
|
||||||
|
# Please see the AUTHORS file for details.
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
include: package:wyatt_analysis/analysis_options.2.5.0.yaml
|
||||||
|
|
||||||
|
linter:
|
||||||
|
rules:
|
||||||
|
- avoid_print
|
||||||
|
- avoid_unnecessary_containers
|
||||||
|
- avoid_web_libraries_in_flutter
|
||||||
|
- no_logic_in_create_state
|
||||||
|
- sized_box_for_whitespace
|
||||||
|
- sized_box_shrink_expand
|
||||||
|
- sort_child_properties_last
|
||||||
|
- use_build_context_synchronously
|
||||||
|
- use_colored_box
|
||||||
|
- use_decorated_box
|
||||||
|
- use_full_hex_values_for_flutter_colors
|
||||||
|
- use_key_in_widget_constructors
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
|
|
||||||
# Copyright (C) 2023 WYATT GROUP
|
# Copyright (C) 2023 WYATT GROUP
|
||||||
# Please see the AUTHORS file for details.
|
# Please see the AUTHORS file for details.
|
||||||
#
|
#
|
||||||
@@ -14,4 +15,5 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
include: package:wyatt_analysis/analysis_options.flutter.2.4.1.yaml
|
include: package:wyatt_analysis/analysis_options.flutter.2.5.0.yaml
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
|
||||||
# Copyright (C) 2023 WYATT GROUP
|
# Copyright (C) 2023 WYATT GROUP
|
||||||
# Please see the AUTHORS file for details.
|
# Please see the AUTHORS file for details.
|
||||||
#
|
#
|
||||||
@@ -14,4 +15,5 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
include: package:wyatt_analysis/analysis_options.2.4.1.yaml
|
include: package:wyatt_analysis/analysis_options.2.5.0.yaml
|
||||||
|
|
||||||
|
|||||||
@@ -18,4 +18,4 @@
|
|||||||
/// used internally at [Wyatt Studio](https://wyatt-studio.fr).
|
/// used internally at [Wyatt Studio](https://wyatt-studio.fr).
|
||||||
library wyatt_analysis;
|
library wyatt_analysis;
|
||||||
|
|
||||||
const String wyattAnalysisVersion = '2.4.1';
|
const String wyattAnalysisVersion = '2.5.0';
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
name: wyatt_analysis
|
name: wyatt_analysis
|
||||||
description: Lint rules for Dart and Flutter used internally at Wyatt Studio.
|
description: Lint rules for Dart and Flutter used internally at Wyatt Studio.
|
||||||
repository: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/wyatt_analysis
|
repository: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/wyatt_analysis
|
||||||
version: 2.4.2
|
version: 2.5.0
|
||||||
|
|
||||||
publish_to: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
publish_to: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
|
|
||||||
|
|||||||
@@ -27,48 +27,41 @@ environment:
|
|||||||
# the latest version available on pub.dev. To see which dependencies have newer
|
# the latest version available on pub.dev. To see which dependencies have newer
|
||||||
# versions available, run `flutter pub outdated`.
|
# versions available, run `flutter pub outdated`.
|
||||||
dependencies:
|
dependencies:
|
||||||
flutter:
|
flutter: { sdk: flutter }
|
||||||
sdk: flutter
|
|
||||||
|
|
||||||
flutter_bloc: ^8.1.1
|
|
||||||
wyatt_architecture:
|
wyatt_architecture:
|
||||||
path: "../"
|
path: "../"
|
||||||
|
|
||||||
wyatt_type_utils:
|
flutter_bloc: ^8.1.1
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
|
||||||
version: ^0.0.5
|
|
||||||
|
|
||||||
wyatt_http_client:
|
|
||||||
git:
|
|
||||||
url: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages
|
|
||||||
ref: wyatt_http_client-v2.0.0
|
|
||||||
path: packages/wyatt_http_client
|
|
||||||
get_it: ^7.2.0
|
get_it: ^7.2.0
|
||||||
hive: ^2.2.3
|
hive: ^2.2.3
|
||||||
hive_flutter: ^1.1.0
|
hive_flutter: ^1.1.0
|
||||||
|
|
||||||
wyatt_bloc_helper:
|
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/
|
|
||||||
version: ^2.0.1
|
|
||||||
equatable: ^2.0.5
|
equatable: ^2.0.5
|
||||||
stream_transform: ^2.1.0
|
stream_transform: ^2.1.0
|
||||||
bloc_concurrency: ^0.2.0
|
bloc_concurrency: ^0.2.0
|
||||||
freezed_annotation: ^2.2.0
|
freezed_annotation: ^2.2.0
|
||||||
json_annotation: ^4.7.0
|
json_annotation: ^4.7.0
|
||||||
|
|
||||||
|
wyatt_bloc_helper:
|
||||||
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/
|
||||||
|
version: ^2.0.1
|
||||||
|
wyatt_http_client:
|
||||||
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/
|
||||||
|
version: ^2.0.0
|
||||||
|
wyatt_type_utils:
|
||||||
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
|
version: ^0.0.5
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
build_runner: ^2.3.2
|
build_runner: ^2.3.2
|
||||||
flutter_test:
|
flutter_test: { sdk: flutter }
|
||||||
sdk: flutter
|
|
||||||
|
|
||||||
freezed: ^2.2.1
|
freezed: ^2.2.1
|
||||||
hive_generator: ^2.0.0
|
hive_generator: ^2.0.0
|
||||||
json_serializable: ^6.5.4
|
json_serializable: ^6.5.4
|
||||||
|
|
||||||
wyatt_analysis:
|
wyatt_analysis:
|
||||||
git:
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/
|
||||||
url: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages
|
version: ^2.5.0
|
||||||
ref: wyatt_analysis-v2.4.2
|
|
||||||
path: packages/wyatt_analysis
|
|
||||||
|
|
||||||
# For information on the generic Dart part of this file, see the
|
# For information on the generic Dart part of this file, see the
|
||||||
# following page: https://dart.dev/tools/pub/pubspec
|
# following page: https://dart.dev/tools/pub/pubspec
|
||||||
|
|||||||
@@ -32,4 +32,4 @@ dependencies:
|
|||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
wyatt_analysis:
|
wyatt_analysis:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
version: ^2.4.2
|
version: ^2.5.0
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
{
|
|
||||||
"projects": {
|
|
||||||
"default": "tchat-beta"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-8
@@ -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>
|
|
||||||
-8
@@ -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>
|
|
||||||
@@ -39,4 +39,4 @@ dev_dependencies:
|
|||||||
|
|
||||||
wyatt_analysis:
|
wyatt_analysis:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/
|
||||||
version: ^2.4.2
|
version: ^2.5.0
|
||||||
|
|||||||
-8
@@ -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>
|
|
||||||
-8
@@ -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>
|
|
||||||
@@ -20,4 +20,4 @@ dev_dependencies:
|
|||||||
|
|
||||||
wyatt_analysis:
|
wyatt_analysis:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
version: ^2.4.2
|
version: ^2.5.0
|
||||||
|
|||||||
@@ -1,3 +1,9 @@
|
|||||||
|
## 0.1.0
|
||||||
|
|
||||||
|
> Note: This release has breaking changes.
|
||||||
|
|
||||||
|
- **BREAKING** **FEAT**(layout): update layout plugins with new components system. (e76857f1)
|
||||||
|
|
||||||
## 0.0.2
|
## 0.0.2
|
||||||
|
|
||||||
- **REFACTOR**: remove cross package export.
|
- **REFACTOR**: remove cross package export.
|
||||||
|
|||||||
@@ -88,6 +88,7 @@ class $CustomAppBarCWProxyImpl implements $TopAppBarComponentCWProxy {
|
|||||||
Key? key,
|
Key? key,
|
||||||
}) =>
|
}) =>
|
||||||
CustomAppBar(
|
CustomAppBar(
|
||||||
|
key: key ?? _value.key,
|
||||||
title: title ?? _value.title,
|
title: title ?? _value.title,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,7 +24,9 @@ class $CustomBottomBarCWProxyImpl
|
|||||||
int? currentIndex,
|
int? currentIndex,
|
||||||
Key? key,
|
Key? key,
|
||||||
}) =>
|
}) =>
|
||||||
CustomBottomBar();
|
CustomBottomBar(
|
||||||
|
key: key ?? _value.key,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
mixin $CustomBottomBarCWMixin on Component {
|
mixin $CustomBottomBarCWMixin on Component {
|
||||||
|
|||||||
@@ -5,13 +5,12 @@ import 'package:wyatt_ui_components/wyatt_ui_components.dart';
|
|||||||
part 'custom_error_widget.g.dart';
|
part 'custom_error_widget.g.dart';
|
||||||
|
|
||||||
@ComponentCopyWithExtension()
|
@ComponentCopyWithExtension()
|
||||||
class CustomErrorWidget extends ErrorWidgetComponent
|
class CustomErrorWidget extends ErrorComponent with $CustomErrorWidgetCWMixin {
|
||||||
with $CustomErrorWidgetCWMixin {
|
const CustomErrorWidget({super.key, super.details});
|
||||||
CustomErrorWidget({super.key, super.error});
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) => ColoredBox(
|
Widget build(BuildContext context) => ColoredBox(
|
||||||
color: Colors.red,
|
color: Colors.red,
|
||||||
child: Center(child: Text(error?.data ?? 'Error')),
|
child: Center(child: Text(details?.data ?? 'Error')),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,24 +6,36 @@ part of 'custom_error_widget.dart';
|
|||||||
// ComponentCopyWithGenerator
|
// ComponentCopyWithGenerator
|
||||||
// **************************************************************************
|
// **************************************************************************
|
||||||
|
|
||||||
class $CustomErrorWidgetCWProxyImpl implements $ErrorWidgetComponentCWProxy {
|
class $CustomErrorWidgetCWProxyImpl implements $ErrorComponentCWProxy {
|
||||||
const $CustomErrorWidgetCWProxyImpl(this._value);
|
const $CustomErrorWidgetCWProxyImpl(this._value);
|
||||||
final CustomErrorWidget _value;
|
final CustomErrorWidget _value;
|
||||||
@override
|
@override
|
||||||
CustomErrorWidget error(TextWrapper? error) => this(error: error);
|
CustomErrorWidget colors(MultiColor? colors) => this(colors: colors);
|
||||||
|
@override
|
||||||
|
CustomErrorWidget message(TextWrapper? message) => this(message: message);
|
||||||
|
@override
|
||||||
|
CustomErrorWidget details(TextWrapper? details) => this(details: details);
|
||||||
|
@override
|
||||||
|
CustomErrorWidget themeResolver(
|
||||||
|
ThemeResolver<dynamic, dynamic, dynamic>? themeResolver) =>
|
||||||
|
this(themeResolver: themeResolver);
|
||||||
@override
|
@override
|
||||||
CustomErrorWidget key(Key? key) => this(key: key);
|
CustomErrorWidget key(Key? key) => this(key: key);
|
||||||
@override
|
@override
|
||||||
CustomErrorWidget call({
|
CustomErrorWidget call({
|
||||||
TextWrapper? error,
|
MultiColor? colors,
|
||||||
|
TextWrapper? message,
|
||||||
|
TextWrapper? details,
|
||||||
|
ThemeResolver<dynamic, dynamic, dynamic>? themeResolver,
|
||||||
Key? key,
|
Key? key,
|
||||||
}) =>
|
}) =>
|
||||||
CustomErrorWidget(
|
CustomErrorWidget(
|
||||||
error: error ?? _value.error,
|
key: key ?? _value.key,
|
||||||
|
details: details ?? _value.details,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
mixin $CustomErrorWidgetCWMixin on Component {
|
mixin $CustomErrorWidgetCWMixin on Component {
|
||||||
$ErrorWidgetComponentCWProxy get copyWith =>
|
$ErrorComponentCWProxy get copyWith =>
|
||||||
$CustomErrorWidgetCWProxyImpl(this as CustomErrorWidget);
|
$CustomErrorWidgetCWProxyImpl(this as CustomErrorWidget);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,11 +5,14 @@ import 'package:wyatt_ui_components/wyatt_ui_components.dart';
|
|||||||
part 'custom_loading_widget.g.dart';
|
part 'custom_loading_widget.g.dart';
|
||||||
|
|
||||||
@ComponentCopyWithExtension()
|
@ComponentCopyWithExtension()
|
||||||
class CustomLoadingWidget extends LoadingWidgetComponent
|
class CustomLoadingWidget extends LoaderComponent
|
||||||
with $CustomLoadingWidgetCWMixin {
|
with $CustomLoadingWidgetCWMixin {
|
||||||
CustomLoadingWidget({super.key, super.color});
|
const CustomLoadingWidget({super.key, super.colors});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) =>
|
Widget build(BuildContext context) => Center(
|
||||||
Center(child: CircularProgressIndicator(color: color));
|
child: CircularProgressIndicator(
|
||||||
|
color: (colors?.isColor ?? false) ? colors!.color : Colors.blue,
|
||||||
|
),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,25 +6,42 @@ part of 'custom_loading_widget.dart';
|
|||||||
// ComponentCopyWithGenerator
|
// ComponentCopyWithGenerator
|
||||||
// **************************************************************************
|
// **************************************************************************
|
||||||
|
|
||||||
class $CustomLoadingWidgetCWProxyImpl
|
class $CustomLoadingWidgetCWProxyImpl implements $LoaderComponentCWProxy {
|
||||||
implements $LoadingWidgetComponentCWProxy {
|
|
||||||
const $CustomLoadingWidgetCWProxyImpl(this._value);
|
const $CustomLoadingWidgetCWProxyImpl(this._value);
|
||||||
final CustomLoadingWidget _value;
|
final CustomLoadingWidget _value;
|
||||||
@override
|
@override
|
||||||
CustomLoadingWidget color(Color? color) => this(color: color);
|
CustomLoadingWidget colors(MultiColor? colors) => this(colors: colors);
|
||||||
|
@override
|
||||||
|
CustomLoadingWidget radius(double? radius) => this(radius: radius);
|
||||||
|
@override
|
||||||
|
CustomLoadingWidget stroke(double? stroke) => this(stroke: stroke);
|
||||||
|
@override
|
||||||
|
CustomLoadingWidget duration(Duration? duration) => this(duration: duration);
|
||||||
|
@override
|
||||||
|
CustomLoadingWidget flip(bool? flip) => this(flip: flip);
|
||||||
|
@override
|
||||||
|
CustomLoadingWidget themeResolver(
|
||||||
|
ThemeResolver<dynamic, dynamic, dynamic>? themeResolver) =>
|
||||||
|
this(themeResolver: themeResolver);
|
||||||
@override
|
@override
|
||||||
CustomLoadingWidget key(Key? key) => this(key: key);
|
CustomLoadingWidget key(Key? key) => this(key: key);
|
||||||
@override
|
@override
|
||||||
CustomLoadingWidget call({
|
CustomLoadingWidget call({
|
||||||
Color? color,
|
MultiColor? colors,
|
||||||
|
double? radius,
|
||||||
|
double? stroke,
|
||||||
|
Duration? duration,
|
||||||
|
bool? flip,
|
||||||
|
ThemeResolver<dynamic, dynamic, dynamic>? themeResolver,
|
||||||
Key? key,
|
Key? key,
|
||||||
}) =>
|
}) =>
|
||||||
CustomLoadingWidget(
|
CustomLoadingWidget(
|
||||||
color: color ?? _value.color,
|
key: key ?? _value.key,
|
||||||
|
colors: colors ?? _value.colors,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
mixin $CustomLoadingWidgetCWMixin on Component {
|
mixin $CustomLoadingWidgetCWMixin on Component {
|
||||||
$LoadingWidgetComponentCWProxy get copyWith =>
|
$LoaderComponentCWProxy get copyWith =>
|
||||||
$CustomLoadingWidgetCWProxyImpl(this as CustomLoadingWidget);
|
$CustomLoadingWidgetCWProxyImpl(this as CustomLoadingWidget);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,11 +4,11 @@ import 'package:bloc_layout_example/components/custom_error_widget.dart';
|
|||||||
import 'package:bloc_layout_example/components/custom_loading_widget.dart';
|
import 'package:bloc_layout_example/components/custom_loading_widget.dart';
|
||||||
import 'package:wyatt_ui_components/wyatt_ui_components.dart';
|
import 'package:wyatt_ui_components/wyatt_ui_components.dart';
|
||||||
|
|
||||||
class AppThemeComponent {
|
abstract class AppThemeComponent {
|
||||||
static ComponentThemeData get components => ComponentThemeData.raw(
|
static const ComponentThemeData components = ComponentThemeData.raw(
|
||||||
appBar: const CustomAppBar(),
|
topAppBar: CustomAppBar(),
|
||||||
bottomNavigationBar: const CustomBottomBar(),
|
bottomNavigationBar: CustomBottomBar(),
|
||||||
loadingWidget: CustomLoadingWidget(),
|
loader: CustomLoadingWidget(),
|
||||||
errorWidget: CustomErrorWidget(),
|
error: CustomErrorWidget(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ class MyApp extends StatelessWidget {
|
|||||||
// This widget is the root of your application.
|
// This widget is the root of your application.
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) => ComponentTheme(
|
Widget build(BuildContext context) => ComponentTheme(
|
||||||
componentThemeWidget: AppThemeComponent.components,
|
data: AppThemeComponent.components,
|
||||||
child: MaterialApp(
|
child: MaterialApp(
|
||||||
title: 'Bloc Layout Example',
|
title: 'Bloc Layout Example',
|
||||||
theme: ThemeData(
|
theme: ThemeData(
|
||||||
@@ -122,7 +122,7 @@ class ExampleFrameLayoutCrudConsumer
|
|||||||
ExampleFrameLayoutCrudConsumer({super.key})
|
ExampleFrameLayoutCrudConsumer({super.key})
|
||||||
: super(
|
: super(
|
||||||
customAppBar: (bar) => bar?.copyWith.title(
|
customAppBar: (bar) => bar?.copyWith.title(
|
||||||
'Example Title'.wrap(),
|
const TextWrapper('Example Title'),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -139,7 +139,7 @@ class ExampleFrameLayoutCrudListConsumer
|
|||||||
ExampleFrameLayoutCrudListConsumer({super.key})
|
ExampleFrameLayoutCrudListConsumer({super.key})
|
||||||
: super(
|
: super(
|
||||||
customAppBar: (bar) => bar?.copyWith.title(
|
customAppBar: (bar) => bar?.copyWith.title(
|
||||||
'Example Title'.wrap(),
|
const TextWrapper('Example Title'),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -27,50 +27,39 @@ environment:
|
|||||||
# the latest version available on pub.dev. To see which dependencies have newer
|
# the latest version available on pub.dev. To see which dependencies have newer
|
||||||
# versions available, run `flutter pub outdated`.
|
# versions available, run `flutter pub outdated`.
|
||||||
dependencies:
|
dependencies:
|
||||||
flutter:
|
flutter: { sdk: flutter }
|
||||||
sdk: flutter
|
|
||||||
|
|
||||||
flutter_bloc: ^8.1.2
|
|
||||||
|
|
||||||
wyatt_bloc_layout:
|
wyatt_bloc_layout:
|
||||||
path: "../"
|
path: "../"
|
||||||
|
|
||||||
|
flutter_bloc: ^8.1.2
|
||||||
|
|
||||||
wyatt_bloc_helper:
|
wyatt_bloc_helper:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
version: ^2.0.1
|
version: ^2.0.1
|
||||||
|
|
||||||
wyatt_ui_layout:
|
wyatt_ui_layout:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
version: ^0.0.2
|
version: ^0.1.0
|
||||||
|
|
||||||
wyatt_crud_bloc:
|
wyatt_crud_bloc:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
version: ^0.1.1
|
version: ^0.1.1
|
||||||
|
|
||||||
wyatt_ui_components:
|
wyatt_ui_components:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
version: ^0.1.0
|
version: ^0.2.0
|
||||||
|
|
||||||
wyatt_component_copy_with_extension:
|
wyatt_component_copy_with_extension:
|
||||||
git:
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
url: ssh://git@git.wyatt-studio.fr:993/Wyatt-FOSS/wyatt-packages.git
|
version: ^2.0.1
|
||||||
path: packages/wyatt_component_copy_with_extension
|
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test: { sdk: flutter }
|
||||||
sdk: flutter
|
|
||||||
|
|
||||||
build_runner: ^2.3.3
|
build_runner: ^2.3.3
|
||||||
wyatt_component_copy_with_gen:
|
|
||||||
git:
|
|
||||||
url: ssh://git@git.wyatt-studio.fr:993/Wyatt-FOSS/wyatt-packages.git
|
|
||||||
path: packages/wyatt_component_copy_with_gen
|
|
||||||
|
|
||||||
|
wyatt_component_copy_with_gen:
|
||||||
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
|
version: ^2.0.1
|
||||||
wyatt_analysis:
|
wyatt_analysis:
|
||||||
git:
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
url: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages
|
version: ^2.5.0
|
||||||
ref: wyatt_analysis-v2.4.2
|
|
||||||
path: packages/wyatt_analysis
|
|
||||||
|
|
||||||
# For information on the generic Dart part of this file, see the
|
# For information on the generic Dart part of this file, see the
|
||||||
# following page: https://dart.dev/tools/pub/pubspec
|
# following page: https://dart.dev/tools/pub/pubspec
|
||||||
|
|||||||
@@ -23,11 +23,12 @@ import 'package:wyatt_ui_components/wyatt_ui_components.dart';
|
|||||||
mixin CrudMixin<Cubit extends bloc_base.Cubit<dynamic>,
|
mixin CrudMixin<Cubit extends bloc_base.Cubit<dynamic>,
|
||||||
SuccessState extends CrudSuccess> {
|
SuccessState extends CrudSuccess> {
|
||||||
Widget errorBuilder(BuildContext context, CrudError state) =>
|
Widget errorBuilder(BuildContext context, CrudError state) =>
|
||||||
context.components.errorWidget?.copyWith(error: state.message.wrap()) ??
|
context.components.errorComponent.call(
|
||||||
const SizedBox.shrink();
|
message: (state.message != null) ? TextWrapper(state.message!) : null,
|
||||||
|
);
|
||||||
|
|
||||||
Widget loadingBuilder(BuildContext context, CrudLoading state) =>
|
Widget loadingBuilder(BuildContext context, CrudLoading state) =>
|
||||||
context.components.loadingWidget ?? const SizedBox.shrink();
|
context.components.loader ?? const SizedBox.shrink();
|
||||||
|
|
||||||
Widget initialBuilder(BuildContext context, CrudInitial state) =>
|
Widget initialBuilder(BuildContext context, CrudInitial state) =>
|
||||||
const SizedBox.shrink();
|
const SizedBox.shrink();
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
name: wyatt_bloc_layout
|
name: wyatt_bloc_layout
|
||||||
description: Layouts based on bloc helper library
|
description: Layouts based on bloc helper library
|
||||||
repository: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/wyatt_bloc_layout
|
repository: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/wyatt_bloc_layout
|
||||||
version: 0.0.2
|
version: 0.1.0
|
||||||
|
|
||||||
publish_to: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
publish_to: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
|
|
||||||
@@ -19,7 +19,7 @@ dependencies:
|
|||||||
|
|
||||||
wyatt_ui_layout:
|
wyatt_ui_layout:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
version: ^0.0.2
|
version: ^0.1.0
|
||||||
|
|
||||||
wyatt_crud_bloc:
|
wyatt_crud_bloc:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
@@ -27,11 +27,11 @@ dependencies:
|
|||||||
|
|
||||||
wyatt_ui_components:
|
wyatt_ui_components:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
version: ^0.1.0
|
version: ^0.2.0
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test: { sdk: flutter }
|
flutter_test: { sdk: flutter }
|
||||||
|
|
||||||
wyatt_analysis:
|
wyatt_analysis:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
version: ^2.4.2
|
version: ^2.5.0
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
## 2.0.1
|
||||||
|
|
||||||
|
- **FIX**(gen): rename builder correctly. (cef73aa6)
|
||||||
|
|
||||||
## 2.0.0
|
## 2.0.0
|
||||||
|
|
||||||
> Note: This release has breaking changes.
|
> Note: This release has breaking changes.
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ dev_dependencies:
|
|||||||
|
|
||||||
wyatt_analysis:
|
wyatt_analysis:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
version: ^2.4.2
|
version: ^2.5.0
|
||||||
|
|
||||||
# The following section is specific to Flutter.
|
# The following section is specific to Flutter.
|
||||||
flutter:
|
flutter:
|
||||||
|
|||||||
+1
-1
@@ -15,7 +15,7 @@
|
|||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
/// Extension for component copy with feature
|
/// Extension for component copy with feature
|
||||||
library component_copy_with_extension;
|
library wyatt_component_copy_with_extension;
|
||||||
|
|
||||||
export './src/domain/domain.dart';
|
export './src/domain/domain.dart';
|
||||||
export 'src/component_copy_with_extension.dart';
|
export 'src/component_copy_with_extension.dart';
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
name: wyatt_component_copy_with_extension
|
name: wyatt_component_copy_with_extension
|
||||||
description: Extension for component copy with feature.
|
description: Extension for component copy with feature.
|
||||||
repository: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/component_copy_with_extension
|
repository: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/component_copy_with_extension
|
||||||
version: 2.0.0
|
version: 2.0.1
|
||||||
|
|
||||||
publish_to: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
publish_to: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
|
|
||||||
@@ -14,4 +14,4 @@ dependencies:
|
|||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
wyatt_analysis:
|
wyatt_analysis:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
version: ^2.4.2
|
version: ^2.5.0
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
## 2.0.1
|
||||||
|
|
||||||
|
- **FIX**(gen): rename builder correctly. (cef73aa6)
|
||||||
|
|
||||||
## 2.0.0
|
## 2.0.0
|
||||||
|
|
||||||
> Note: This release has breaking changes.
|
> Note: This release has breaking changes.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
targets:
|
targets:
|
||||||
$default:
|
$default:
|
||||||
builders:
|
builders:
|
||||||
component_copy_with_gen:
|
wyatt_component_copy_with_gen:
|
||||||
enabled: true
|
enabled: true
|
||||||
generate_for:
|
generate_for:
|
||||||
exclude:
|
exclude:
|
||||||
@@ -11,9 +11,9 @@ targets:
|
|||||||
- test/gen_*
|
- test/gen_*
|
||||||
|
|
||||||
builders:
|
builders:
|
||||||
component_copy_with_gen:
|
wyatt_component_copy_with_gen:
|
||||||
target: ":component_copy_with_gen"
|
target: ":wyatt_component_copy_with_gen"
|
||||||
import: "package:wyatt_component_copy_with_gen/component_copy_with_gen.dart"
|
import: "package:wyatt_component_copy_with_gen/wyatt_component_copy_with_gen.dart"
|
||||||
builder_factories: ["componentCopyWithReporter"]
|
builder_factories: ["componentCopyWithReporter"]
|
||||||
build_extensions: { ".dart": ["copy_with_extension_gen.g.part"] }
|
build_extensions: { ".dart": ["copy_with_extension_gen.g.part"] }
|
||||||
auto_apply: dependents
|
auto_apply: dependents
|
||||||
|
|||||||
@@ -8,21 +8,22 @@ environment:
|
|||||||
sdk: ">=2.19.0 <3.0.0"
|
sdk: ">=2.19.0 <3.0.0"
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
flutter:
|
flutter: { sdk: flutter }
|
||||||
sdk: flutter
|
|
||||||
|
|
||||||
wyatt_component_copy_with_extension:
|
wyatt_component_copy_with_extension:
|
||||||
path: "../../wyatt_component_copy_with_extension"
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
|
version: ^2.0.1
|
||||||
|
|
||||||
wyatt_ui_components:
|
wyatt_ui_components:
|
||||||
git:
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
url: ssh://git@git.wyatt-studio.fr:993/Wyatt-FOSS/wyatt-packages.git
|
version: ^0.2.0
|
||||||
path: packages/wyatt_ui_components
|
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
build_runner: ^2.3.3
|
build_runner: ^2.3.3
|
||||||
|
|
||||||
wyatt_component_copy_with_gen:
|
wyatt_component_copy_with_gen:
|
||||||
path: "../"
|
path: "../"
|
||||||
|
|
||||||
wyatt_analysis:
|
wyatt_analysis:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
version: ^2.4.2
|
version: ^2.5.0
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
/// Generator for copywith method for components
|
/// Generator for copywith method for components
|
||||||
library component_copy_with_gen;
|
library wyatt_component_copy_with_gen;
|
||||||
|
|
||||||
export 'src/builder.dart';
|
export 'src/builder.dart';
|
||||||
export 'src/generators/component_copy_with_generator.dart';
|
export 'src/generators/component_copy_with_generator.dart';
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
name: wyatt_component_copy_with_gen
|
name: wyatt_component_copy_with_gen
|
||||||
description: Generator for copywith method for components.
|
description: Generator for copywith method for components.
|
||||||
repository: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/component_copy_with_gen
|
repository: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/component_copy_with_gen
|
||||||
version: 2.0.0
|
version: 2.0.1
|
||||||
|
|
||||||
publish_to: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
publish_to: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
|
|
||||||
@@ -15,11 +15,11 @@ dependencies:
|
|||||||
|
|
||||||
wyatt_component_copy_with_extension:
|
wyatt_component_copy_with_extension:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
version: ^2.0.0
|
version: ^2.0.1
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
test: ^1.21.0
|
test: ^1.21.0
|
||||||
|
|
||||||
wyatt_analysis:
|
wyatt_analysis:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
version: ^2.4.2
|
version: ^2.5.0
|
||||||
|
|||||||
@@ -1,91 +0,0 @@
|
|||||||
{
|
|
||||||
"project_info": {
|
|
||||||
"project_number": "136771801992",
|
|
||||||
"firebase_url": "https://tchat-beta.firebaseio.com",
|
|
||||||
"project_id": "tchat-beta",
|
|
||||||
"storage_bucket": "tchat-beta.appspot.com"
|
|
||||||
},
|
|
||||||
"client": [
|
|
||||||
{
|
|
||||||
"client_info": {
|
|
||||||
"mobilesdk_app_id": "1:136771801992:android:4ff419f07afdad6097203d",
|
|
||||||
"android_client_info": {
|
|
||||||
"package_name": "com.example.authentication_bloc_example"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"oauth_client": [
|
|
||||||
{
|
|
||||||
"client_id": "136771801992-nps7ic22shstvgdv0c2ojvbkj3dkntum.apps.googleusercontent.com",
|
|
||||||
"client_type": 1,
|
|
||||||
"android_info": {
|
|
||||||
"package_name": "com.example.authentication_bloc_example",
|
|
||||||
"certificate_hash": "5d8790309e13b68c35e5d4d8437c35c6d15e6131"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"client_id": "136771801992-ncuib3rbu7p4ro4eo5su4vaudn2u4qrv.apps.googleusercontent.com",
|
|
||||||
"client_type": 3
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"api_key": [
|
|
||||||
{
|
|
||||||
"current_key": "AIzaSyAYS14uXupkS158Q5QAFP1864UrUN_yDSk"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"services": {
|
|
||||||
"appinvite_service": {
|
|
||||||
"other_platform_oauth_client": [
|
|
||||||
{
|
|
||||||
"client_id": "136771801992-ncuib3rbu7p4ro4eo5su4vaudn2u4qrv.apps.googleusercontent.com",
|
|
||||||
"client_type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"client_id": "136771801992-e585bm1n9b3lv89t4phrl9u0glsg52ua.apps.googleusercontent.com",
|
|
||||||
"client_type": 2,
|
|
||||||
"ios_info": {
|
|
||||||
"bundle_id": "com.example.example"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"client_info": {
|
|
||||||
"mobilesdk_app_id": "1:136771801992:android:8482c9b90bc29de697203d",
|
|
||||||
"android_client_info": {
|
|
||||||
"package_name": "com.example.crud_bloc_example"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"oauth_client": [
|
|
||||||
{
|
|
||||||
"client_id": "136771801992-ncuib3rbu7p4ro4eo5su4vaudn2u4qrv.apps.googleusercontent.com",
|
|
||||||
"client_type": 3
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"api_key": [
|
|
||||||
{
|
|
||||||
"current_key": "AIzaSyAYS14uXupkS158Q5QAFP1864UrUN_yDSk"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"services": {
|
|
||||||
"appinvite_service": {
|
|
||||||
"other_platform_oauth_client": [
|
|
||||||
{
|
|
||||||
"client_id": "136771801992-ncuib3rbu7p4ro4eo5su4vaudn2u4qrv.apps.googleusercontent.com",
|
|
||||||
"client_type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"client_id": "136771801992-e585bm1n9b3lv89t4phrl9u0glsg52ua.apps.googleusercontent.com",
|
|
||||||
"client_type": 2,
|
|
||||||
"ios_info": {
|
|
||||||
"bundle_id": "com.example.example"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"configuration_version": "1"
|
|
||||||
}
|
|
||||||
-8
@@ -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>
|
|
||||||
-8
@@ -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>
|
|
||||||
@@ -29,4 +29,4 @@ dev_dependencies:
|
|||||||
bloc_test: ^9.1.0
|
bloc_test: ^9.1.0
|
||||||
wyatt_analysis:
|
wyatt_analysis:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
version: ^2.4.2
|
version: ^2.5.0
|
||||||
|
|||||||
-8
@@ -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>
|
|
||||||
-8
@@ -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>
|
|
||||||
@@ -30,4 +30,4 @@ dev_dependencies:
|
|||||||
|
|
||||||
wyatt_analysis:
|
wyatt_analysis:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/
|
||||||
version: ^2.4.2
|
version: ^2.5.0
|
||||||
|
|||||||
@@ -15,4 +15,4 @@ dependencies:
|
|||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
wyatt_analysis:
|
wyatt_analysis:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
version: ^2.4.2
|
version: ^2.5.0
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ dev_dependencies:
|
|||||||
flutter_test: { sdk: flutter }
|
flutter_test: { sdk: flutter }
|
||||||
wyatt_analysis:
|
wyatt_analysis:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
version: ^2.4.2
|
version: ^2.5.0
|
||||||
# The following section is specific to Flutter.
|
# The following section is specific to Flutter.
|
||||||
flutter:
|
flutter:
|
||||||
uses-material-design: true
|
uses-material-design: true
|
||||||
|
|||||||
@@ -40,4 +40,4 @@ dev_dependencies:
|
|||||||
dart_code_metrics: ^5.5.1
|
dart_code_metrics: ^5.5.1
|
||||||
wyatt_analysis:
|
wyatt_analysis:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
version: ^2.4.2
|
version: ^2.5.0
|
||||||
|
|||||||
-8
@@ -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>
|
|
||||||
-8
@@ -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>
|
|
||||||
@@ -1,10 +1,12 @@
|
|||||||
name: wyatt_notification_bloc
|
name: wyatt_notification_bloc
|
||||||
description: A starting point for Dart libraries or applications.
|
description: A starting point for Dart libraries or applications.
|
||||||
|
repository: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/wyatt_notification_bloc
|
||||||
version: 1.0.0
|
version: 1.0.0
|
||||||
# homepage: https://www.example.com
|
|
||||||
|
publish_to: none
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: '>=2.18.2 <3.0.0'
|
sdk: ">=2.18.2 <3.0.0"
|
||||||
|
|
||||||
# dependencies:
|
# dependencies:
|
||||||
# path: ^1.8.0
|
# path: ^1.8.0
|
||||||
|
|||||||
@@ -34,10 +34,5 @@ dependencies:
|
|||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
wyatt_analysis:
|
wyatt_analysis:
|
||||||
git:
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
url: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages
|
version: ^2.5.0
|
||||||
ref: wyatt_analysis-v2.4.2
|
|
||||||
path: packages/wyatt_analysis
|
|
||||||
# For information on the generic Dart part of this file, see the
|
|
||||||
# following page: https://dart.dev/tools/pub/pubspec
|
|
||||||
|
|
||||||
|
|||||||
@@ -13,4 +13,4 @@ dev_dependencies:
|
|||||||
|
|
||||||
wyatt_analysis:
|
wyatt_analysis:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
version: ^2.4.2
|
version: ^2.5.0
|
||||||
|
|||||||
@@ -1,3 +1,19 @@
|
|||||||
|
## 0.2.0
|
||||||
|
|
||||||
|
> Note: This release has breaking changes.
|
||||||
|
|
||||||
|
- **FIX**(gen): rename builder correctly. (cef73aa6)
|
||||||
|
- **FEAT**(ui_components): make textwrapper toString useful. (96369e24)
|
||||||
|
- **FEAT**(ui): add pricing card. (bfbeabe7)
|
||||||
|
- **FEAT**(ui): update default extension implementation. (01a5619d)
|
||||||
|
- **FEAT**(ui): add animated decorated box + animate all buttons + customize duration in style. (4ebb679a)
|
||||||
|
- **FEAT**(ui): add colors and rework ComponentThemeData. (abd5e1b5)
|
||||||
|
- **FEAT**(ui): make components more coherent + docs. (01269027)
|
||||||
|
- **FEAT**(ui): make gradient as component. (0d5109fc)
|
||||||
|
- **FEAT**(ui): fix, rename, rewrite some helpers. (3fb40205)
|
||||||
|
- **BREAKING** **FEAT**(ui): move last extensions + add extension provider. (4097a420)
|
||||||
|
- **BREAKING** **FEAT**(ui): rework theme resolver mechanism + move theme extension implementations. (8f5e3923)
|
||||||
|
|
||||||
## 0.1.0
|
## 0.1.0
|
||||||
|
|
||||||
> Note: This release has breaking changes.
|
> Note: This release has breaking changes.
|
||||||
|
|||||||
@@ -99,6 +99,12 @@ If you need specific settings, or pass parameters to your component, call `copyW
|
|||||||
)
|
)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Default implementation
|
||||||
|
|
||||||
|
To use this package, you have to create your own implementation of the components. You can check out [Wyatt UI Kit](https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/wyatt_ui_kit) package for an example.
|
||||||
|
|
||||||
|
But default theme extensions (used in all implementations as fallback for styles) are available in `lib/src/domain/theme_extensions` folder.
|
||||||
|
|
||||||
## Development
|
## Development
|
||||||
|
|
||||||
> Common to this, and Wyatt UI Kit packages.
|
> Common to this, and Wyatt UI Kit packages.
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ targets:
|
|||||||
$default:
|
$default:
|
||||||
builders:
|
builders:
|
||||||
# Typically the builder key is just the package name, run `pub run build_runner doctor` to check your config.
|
# Typically the builder key is just the package name, run `pub run build_runner doctor` to check your config.
|
||||||
wyatt_component_copy_with_gen:component_copy_with_gen:
|
wyatt_component_copy_with_gen:wyatt_component_copy_with_gen:
|
||||||
generate_for:
|
generate_for:
|
||||||
# Example glob for only the Dart files under `lib/models`
|
# Example glob for only the Dart files under `lib/models`
|
||||||
- lib/**/*.dart
|
- lib/**/*.dart
|
||||||
- example/lib/**/*.dart
|
- example/lib/**/*.dart
|
||||||
|
|||||||
@@ -2,13 +2,13 @@ import 'package:wyatt_ui_components/wyatt_ui_components.dart';
|
|||||||
import 'package:wyatt_ui_components_example/components/custom_app_bar.dart';
|
import 'package:wyatt_ui_components_example/components/custom_app_bar.dart';
|
||||||
import 'package:wyatt_ui_components_example/components/custom_bottom_bar.dart';
|
import 'package:wyatt_ui_components_example/components/custom_bottom_bar.dart';
|
||||||
import 'package:wyatt_ui_components_example/components/custom_error_widget.dart';
|
import 'package:wyatt_ui_components_example/components/custom_error_widget.dart';
|
||||||
import 'package:wyatt_ui_components_example/components/custom_loading_widget.dart';
|
import 'package:wyatt_ui_components_example/components/custom_loader_widget.dart';
|
||||||
|
|
||||||
class AppThemeComponent {
|
class AppThemeComponent {
|
||||||
static ComponentThemeData get components => const ComponentThemeData.raw(
|
static ComponentThemeData get components => const ComponentThemeData.raw(
|
||||||
appBar: CustomAppBar(),
|
topAppBar: CustomAppBar(),
|
||||||
bottomNavigationBar: CustomBottomNavigationBar(),
|
bottomNavigationBar: CustomBottomNavigationBar(),
|
||||||
errorWidget: CustomErrorWidget(),
|
error: CustomErrorWidget(),
|
||||||
loadingWidget: CustomLoadingWidget(),
|
loader: CustomLoaderWidget(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,13 +5,17 @@ import 'package:wyatt_ui_components/wyatt_ui_components.dart';
|
|||||||
part 'custom_error_widget.g.dart';
|
part 'custom_error_widget.g.dart';
|
||||||
|
|
||||||
@ComponentCopyWithExtension()
|
@ComponentCopyWithExtension()
|
||||||
class CustomErrorWidget extends ErrorWidgetComponent
|
class CustomErrorWidget extends ErrorComponent with $CustomErrorWidgetCWMixin {
|
||||||
with $CustomErrorWidgetCWMixin {
|
const CustomErrorWidget({
|
||||||
const CustomErrorWidget({super.error, super.key});
|
super.colors,
|
||||||
|
super.message,
|
||||||
|
super.details,
|
||||||
|
super.key,
|
||||||
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) => ColoredBox(
|
Widget build(BuildContext context) => ColoredBox(
|
||||||
color: Colors.red,
|
color: colors?.color ?? Colors.red,
|
||||||
child: Center(child: Text(error?.data ?? 'Error')),
|
child: Center(child: Text(message?.data ?? 'Error')),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,25 +6,38 @@ part of 'custom_error_widget.dart';
|
|||||||
// ComponentCopyWithGenerator
|
// ComponentCopyWithGenerator
|
||||||
// **************************************************************************
|
// **************************************************************************
|
||||||
|
|
||||||
class $CustomErrorWidgetCWProxyImpl implements $ErrorWidgetComponentCWProxy {
|
class $CustomErrorWidgetCWProxyImpl implements $ErrorComponentCWProxy {
|
||||||
const $CustomErrorWidgetCWProxyImpl(this._value);
|
const $CustomErrorWidgetCWProxyImpl(this._value);
|
||||||
final CustomErrorWidget _value;
|
final CustomErrorWidget _value;
|
||||||
@override
|
@override
|
||||||
CustomErrorWidget error(TextWrapper? error) => this(error: error);
|
CustomErrorWidget colors(MultiColor? colors) => this(colors: colors);
|
||||||
|
@override
|
||||||
|
CustomErrorWidget message(TextWrapper? message) => this(message: message);
|
||||||
|
@override
|
||||||
|
CustomErrorWidget details(TextWrapper? details) => this(details: details);
|
||||||
|
@override
|
||||||
|
CustomErrorWidget themeResolver(
|
||||||
|
ThemeResolver<dynamic, dynamic, dynamic>? themeResolver) =>
|
||||||
|
this(themeResolver: themeResolver);
|
||||||
@override
|
@override
|
||||||
CustomErrorWidget key(Key? key) => this(key: key);
|
CustomErrorWidget key(Key? key) => this(key: key);
|
||||||
@override
|
@override
|
||||||
CustomErrorWidget call({
|
CustomErrorWidget call({
|
||||||
TextWrapper? error,
|
MultiColor? colors,
|
||||||
|
TextWrapper? message,
|
||||||
|
TextWrapper? details,
|
||||||
|
ThemeResolver<dynamic, dynamic, dynamic>? themeResolver,
|
||||||
Key? key,
|
Key? key,
|
||||||
}) =>
|
}) =>
|
||||||
CustomErrorWidget(
|
CustomErrorWidget(
|
||||||
error: error ?? _value.error,
|
colors: colors ?? _value.colors,
|
||||||
|
message: message ?? _value.message,
|
||||||
|
details: details ?? _value.details,
|
||||||
key: key ?? _value.key,
|
key: key ?? _value.key,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
mixin $CustomErrorWidgetCWMixin on Component {
|
mixin $CustomErrorWidgetCWMixin on Component {
|
||||||
$ErrorWidgetComponentCWProxy get copyWith =>
|
$ErrorComponentCWProxy get copyWith =>
|
||||||
$CustomErrorWidgetCWProxyImpl(this as CustomErrorWidget);
|
$CustomErrorWidgetCWProxyImpl(this as CustomErrorWidget);
|
||||||
}
|
}
|
||||||
|
|||||||
+12
-5
@@ -2,17 +2,24 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:wyatt_component_copy_with_extension/wyatt_component_copy_with_extension.dart';
|
import 'package:wyatt_component_copy_with_extension/wyatt_component_copy_with_extension.dart';
|
||||||
import 'package:wyatt_ui_components/wyatt_ui_components.dart';
|
import 'package:wyatt_ui_components/wyatt_ui_components.dart';
|
||||||
|
|
||||||
part 'custom_loading_widget.g.dart';
|
part 'custom_loader_widget.g.dart';
|
||||||
|
|
||||||
@ComponentCopyWithExtension()
|
@ComponentCopyWithExtension()
|
||||||
class CustomLoadingWidget extends LoadingWidgetComponent
|
class CustomLoaderWidget extends LoaderComponent
|
||||||
with $CustomLoadingWidgetCWMixin {
|
with $CustomLoaderWidgetCWMixin {
|
||||||
const CustomLoadingWidget({super.color, super.key});
|
const CustomLoaderWidget({
|
||||||
|
super.colors,
|
||||||
|
super.duration,
|
||||||
|
super.flip,
|
||||||
|
super.radius,
|
||||||
|
super.stroke,
|
||||||
|
super.key,
|
||||||
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) => Center(
|
Widget build(BuildContext context) => Center(
|
||||||
child: CircularProgressIndicator(
|
child: CircularProgressIndicator(
|
||||||
color: color,
|
color: colors?.color ?? Colors.blue,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||||
|
|
||||||
|
part of 'custom_loader_widget.dart';
|
||||||
|
|
||||||
|
// **************************************************************************
|
||||||
|
// ComponentCopyWithGenerator
|
||||||
|
// **************************************************************************
|
||||||
|
|
||||||
|
class $CustomLoaderWidgetCWProxyImpl implements $LoaderComponentCWProxy {
|
||||||
|
const $CustomLoaderWidgetCWProxyImpl(this._value);
|
||||||
|
final CustomLoaderWidget _value;
|
||||||
|
@override
|
||||||
|
CustomLoaderWidget colors(MultiColor? colors) => this(colors: colors);
|
||||||
|
@override
|
||||||
|
CustomLoaderWidget radius(double? radius) => this(radius: radius);
|
||||||
|
@override
|
||||||
|
CustomLoaderWidget stroke(double? stroke) => this(stroke: stroke);
|
||||||
|
@override
|
||||||
|
CustomLoaderWidget duration(Duration? duration) => this(duration: duration);
|
||||||
|
@override
|
||||||
|
CustomLoaderWidget flip(bool? flip) => this(flip: flip);
|
||||||
|
@override
|
||||||
|
CustomLoaderWidget themeResolver(
|
||||||
|
ThemeResolver<dynamic, dynamic, dynamic>? themeResolver) =>
|
||||||
|
this(themeResolver: themeResolver);
|
||||||
|
@override
|
||||||
|
CustomLoaderWidget key(Key? key) => this(key: key);
|
||||||
|
@override
|
||||||
|
CustomLoaderWidget call({
|
||||||
|
MultiColor? colors,
|
||||||
|
double? radius,
|
||||||
|
double? stroke,
|
||||||
|
Duration? duration,
|
||||||
|
bool? flip,
|
||||||
|
ThemeResolver<dynamic, dynamic, dynamic>? themeResolver,
|
||||||
|
Key? key,
|
||||||
|
}) =>
|
||||||
|
CustomLoaderWidget(
|
||||||
|
colors: colors ?? _value.colors,
|
||||||
|
duration: duration ?? _value.duration,
|
||||||
|
flip: flip ?? _value.flip,
|
||||||
|
radius: radius ?? _value.radius,
|
||||||
|
stroke: stroke ?? _value.stroke,
|
||||||
|
key: key ?? _value.key,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
mixin $CustomLoaderWidgetCWMixin on Component {
|
||||||
|
$LoaderComponentCWProxy get copyWith =>
|
||||||
|
$CustomLoaderWidgetCWProxyImpl(this as CustomLoaderWidget);
|
||||||
|
}
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
|
||||||
|
|
||||||
part of 'custom_loading_widget.dart';
|
|
||||||
|
|
||||||
// **************************************************************************
|
|
||||||
// ComponentCopyWithGenerator
|
|
||||||
// **************************************************************************
|
|
||||||
|
|
||||||
class $CustomLoadingWidgetCWProxyImpl
|
|
||||||
implements $LoadingWidgetComponentCWProxy {
|
|
||||||
const $CustomLoadingWidgetCWProxyImpl(this._value);
|
|
||||||
final CustomLoadingWidget _value;
|
|
||||||
@override
|
|
||||||
CustomLoadingWidget color(Color? color) => this(color: color);
|
|
||||||
@override
|
|
||||||
CustomLoadingWidget key(Key? key) => this(key: key);
|
|
||||||
@override
|
|
||||||
CustomLoadingWidget call({
|
|
||||||
Color? color,
|
|
||||||
Key? key,
|
|
||||||
}) =>
|
|
||||||
CustomLoadingWidget(
|
|
||||||
color: color ?? _value.color,
|
|
||||||
key: key ?? _value.key,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
mixin $CustomLoadingWidgetCWMixin on Component {
|
|
||||||
$LoadingWidgetComponentCWProxy get copyWith =>
|
|
||||||
$CustomLoadingWidgetCWProxyImpl(this as CustomLoadingWidget);
|
|
||||||
}
|
|
||||||
@@ -28,7 +28,7 @@ class MyApp extends StatelessWidget {
|
|||||||
// This widget is the root of your application.
|
// This widget is the root of your application.
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) => ComponentTheme(
|
Widget build(BuildContext context) => ComponentTheme(
|
||||||
componentThemeWidget: AppThemeComponent.components,
|
data: AppThemeComponent.components,
|
||||||
child: MaterialApp(
|
child: MaterialApp(
|
||||||
title: 'Wyatt Ui Components Example',
|
title: 'Wyatt Ui Components Example',
|
||||||
theme: ThemeData(
|
theme: ThemeData(
|
||||||
@@ -48,24 +48,23 @@ class Home extends StatelessWidget {
|
|||||||
Widget build(BuildContext context) => Scaffold(
|
Widget build(BuildContext context) => Scaffold(
|
||||||
appBar: PreferredSize(
|
appBar: PreferredSize(
|
||||||
preferredSize: const Size.fromHeight(60),
|
preferredSize: const Size.fromHeight(60),
|
||||||
child: context.components.appBar?.copyWith
|
child: context.components.topAppBarComponent
|
||||||
.title('Example title'.wrap()) ??
|
.title(const TextWrapper('Example title')),
|
||||||
const SizedBox.shrink(),
|
|
||||||
),
|
),
|
||||||
body: Column(
|
body: Column(
|
||||||
children: [
|
children: [
|
||||||
Expanded(
|
Expanded(
|
||||||
child: context.components.errorWidget
|
child: context.components.errorComponent.call(
|
||||||
?.copyWith(error: 'Example erreur'.wrap()) ??
|
message: const TextWrapper('Example error'),
|
||||||
const SizedBox.shrink(),
|
),
|
||||||
),
|
),
|
||||||
const SizedBox(
|
const SizedBox(
|
||||||
height: 10,
|
height: 10,
|
||||||
),
|
),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: context.components.loadingWidget
|
child: context.components.loaderComponent.call(
|
||||||
?.copyWith(color: Colors.green) ??
|
colors: const MultiColor.single(Colors.green),
|
||||||
const SizedBox.shrink(),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -27,32 +27,26 @@ environment:
|
|||||||
# the latest version available on pub.dev. To see which dependencies have newer
|
# the latest version available on pub.dev. To see which dependencies have newer
|
||||||
# versions available, run `flutter pub outdated`.
|
# versions available, run `flutter pub outdated`.
|
||||||
dependencies:
|
dependencies:
|
||||||
flutter:
|
flutter: { sdk: flutter }
|
||||||
sdk: flutter
|
|
||||||
|
|
||||||
wyatt_ui_components:
|
wyatt_ui_components:
|
||||||
path: "../"
|
path: "../"
|
||||||
|
|
||||||
wyatt_component_copy_with_extension:
|
wyatt_component_copy_with_extension:
|
||||||
git:
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
url: ssh://git@git.wyatt-studio.fr:993/Wyatt-FOSS/wyatt-packages.git
|
version: ^2.0.1
|
||||||
path: packages/wyatt_component_copy_with_extension
|
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test: { sdk: flutter }
|
||||||
sdk: flutter
|
|
||||||
|
|
||||||
build_runner: ^2.3.3
|
build_runner: ^2.3.3
|
||||||
|
|
||||||
wyatt_component_copy_with_gen:
|
wyatt_component_copy_with_gen:
|
||||||
git:
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
url: ssh://git@git.wyatt-studio.fr:993/Wyatt-FOSS/wyatt-packages.git
|
version: ^2.0.1
|
||||||
path: packages/wyatt_component_copy_with_gen
|
|
||||||
|
|
||||||
wyatt_analysis:
|
wyatt_analysis:
|
||||||
git:
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
url: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages
|
version: ^2.5.0
|
||||||
ref: wyatt_analysis-v2.4.2
|
|
||||||
path: packages/wyatt_analysis
|
|
||||||
|
|
||||||
# For information on the generic Dart part of this file, see the
|
# For information on the generic Dart part of this file, see the
|
||||||
# following page: https://dart.dev/tools/pub/pubspec
|
# following page: https://dart.dev/tools/pub/pubspec
|
||||||
|
|||||||
@@ -16,6 +16,5 @@
|
|||||||
|
|
||||||
export 'enums/enums.dart';
|
export 'enums/enums.dart';
|
||||||
export 'extensions/build_context_extensions.dart';
|
export 'extensions/build_context_extensions.dart';
|
||||||
export 'extensions/string_extension.dart';
|
|
||||||
export 'mixins/copy_with_mixin.dart';
|
export 'mixins/copy_with_mixin.dart';
|
||||||
export 'utils/utils.dart';
|
export 'utils/utils.dart';
|
||||||
|
|||||||
+15
-3
@@ -17,10 +17,22 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:wyatt_ui_components/wyatt_ui_components.dart';
|
import 'package:wyatt_ui_components/wyatt_ui_components.dart';
|
||||||
|
|
||||||
class LinearGradientHelper {
|
abstract class GradientHelper {
|
||||||
static LinearGradient? fromNullableColors(List<Color>? colors) =>
|
static LinearGradient? linearFromNullableColors(List<Color>? colors) =>
|
||||||
colors != null ? LinearGradient(colors: colors) : null;
|
colors != null ? LinearGradient(colors: colors) : null;
|
||||||
|
|
||||||
static LinearGradient? fromMultiColor(MultiColor multiColor) =>
|
static LinearGradient? linearFromMultiColor(MultiColor multiColor) =>
|
||||||
multiColor.isGradient ? LinearGradient(colors: multiColor.colors) : null;
|
multiColor.isGradient ? LinearGradient(colors: multiColor.colors) : null;
|
||||||
|
|
||||||
|
static RadialGradient? radialFromNullableColors(List<Color>? colors) =>
|
||||||
|
colors != null ? RadialGradient(colors: colors) : null;
|
||||||
|
|
||||||
|
static RadialGradient? radialFromMultiColor(MultiColor multiColor) =>
|
||||||
|
multiColor.isGradient ? RadialGradient(colors: multiColor.colors) : null;
|
||||||
|
|
||||||
|
static SweepGradient? sweepFromNullableColors(List<Color>? colors) =>
|
||||||
|
colors != null ? SweepGradient(colors: colors) : null;
|
||||||
|
|
||||||
|
static SweepGradient? sweepFromMultiColor(MultiColor multiColor) =>
|
||||||
|
multiColor.isGradient ? SweepGradient(colors: multiColor.colors) : null;
|
||||||
}
|
}
|
||||||
@@ -36,15 +36,28 @@ class TextWrapper {
|
|||||||
});
|
});
|
||||||
|
|
||||||
/// Creates a [TextWrapper] from a [Text] widget.
|
/// Creates a [TextWrapper] from a [Text] widget.
|
||||||
const TextWrapper.text(this.data)
|
TextWrapper.text(Text text)
|
||||||
: style = null,
|
: data = text.data!,
|
||||||
|
style = text.style,
|
||||||
gradientColors = null,
|
gradientColors = null,
|
||||||
textAlign = null,
|
textAlign = text.textAlign,
|
||||||
textDirection = null,
|
textDirection = text.textDirection,
|
||||||
softWrap = null,
|
softWrap = text.softWrap,
|
||||||
overflow = null,
|
overflow = text.overflow,
|
||||||
maxLines = null,
|
maxLines = text.maxLines,
|
||||||
selectionColor = null;
|
selectionColor = text.selectionColor;
|
||||||
|
|
||||||
|
/// Creates a [TextWrapper] from a [RichText] widget.
|
||||||
|
TextWrapper.rich(RichText richText)
|
||||||
|
: data = richText.text.toPlainText(),
|
||||||
|
style = richText.text.style,
|
||||||
|
gradientColors = null,
|
||||||
|
textAlign = richText.textAlign,
|
||||||
|
textDirection = richText.textDirection,
|
||||||
|
softWrap = richText.softWrap,
|
||||||
|
overflow = richText.overflow,
|
||||||
|
maxLines = richText.maxLines,
|
||||||
|
selectionColor = richText.selectionColor;
|
||||||
|
|
||||||
/// Text to be displayed
|
/// Text to be displayed
|
||||||
final String data;
|
final String data;
|
||||||
@@ -108,4 +121,7 @@ class TextWrapper {
|
|||||||
/// that, the selection color defaults to [DefaultSelectionStyle.defaultColor]
|
/// that, the selection color defaults to [DefaultSelectionStyle.defaultColor]
|
||||||
/// (semi-transparent grey).
|
/// (semi-transparent grey).
|
||||||
final Color? selectionColor;
|
final Color? selectionColor;
|
||||||
|
|
||||||
|
@override
|
||||||
|
String toString() => data;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,35 +14,84 @@
|
|||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with super program. If not, see <https://www.gnu.org/licenses/>.
|
// along with super program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
/// A helper class for getting theme elements.
|
/// A helper class for getting theme elements.
|
||||||
abstract class ThemeHelper {
|
abstract class ThemeHelper {
|
||||||
/// Gets a theme element from a list of styles.
|
/// Gets a nullable theme element from a list of styles.
|
||||||
|
/// {@template getElement}
|
||||||
/// Styles are checked in order, and the first one that passes the
|
/// Styles are checked in order, and the first one that passes the
|
||||||
/// [valueValidator] is returned.
|
/// [valueValidator] is returned.
|
||||||
/// Style elements are transformed using the [transform] function.
|
/// Style elements are transformed using the [transform] function.
|
||||||
///
|
///
|
||||||
/// [styles]: A list of styles that need to be checked.
|
/// - [styles] : A list of styles that need to be checked.
|
||||||
/// [transform]: A function that transforms each style element
|
///
|
||||||
/// to a [T] type.
|
/// - [transform] : An optional function that transforms each style element
|
||||||
/// [valueValidator]: An optional validation function that
|
/// to a [T] type after it passes the [valueValidator]. *(default: returns
|
||||||
/// determines if a style element is valid.
|
/// element as is)*
|
||||||
/// [combine]: A function that combines two [P] type objects to create
|
///
|
||||||
/// a new object.
|
/// - [valueValidator] : An optional validation function that
|
||||||
static T? getThemeElement<P, T>(
|
/// determines if a style element is valid. *(default: checks if element
|
||||||
|
/// is not null)*
|
||||||
|
///
|
||||||
|
/// - [combine] : A function that combines two [P] type objects to create
|
||||||
|
/// a new object. *(default: returns the first element)*
|
||||||
|
///
|
||||||
|
/// So, if you only pass a [styles] list, the first valid style element
|
||||||
|
/// will be returned as is.
|
||||||
|
/// If you pass a [transform] function, the first valid style element
|
||||||
|
/// will be transformed to a [T] type.
|
||||||
|
/// {@endtemplate}
|
||||||
|
static T? maybeGetElement<P, T>(
|
||||||
List<P?>? styles, {
|
List<P?>? styles, {
|
||||||
required T? Function(P?)? transform,
|
T? Function(P?)? transform,
|
||||||
bool? Function(P?)? valueValidator,
|
bool? Function(P?)? valueValidator,
|
||||||
P? Function(P?, P?)? combine,
|
P? Function(P?, P?)? combine,
|
||||||
}) {
|
}) {
|
||||||
|
// List of valid styles
|
||||||
final Iterable<P?>? validStyles = styles?.where(
|
final Iterable<P?>? validStyles = styles?.where(
|
||||||
(element) => valueValidator?.call(element) ?? (element != null),
|
(element) => valueValidator?.call(element) ?? (element != null),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// tranformation function
|
||||||
|
final transformation = transform ?? (element) => element as T?;
|
||||||
|
|
||||||
return (validStyles?.isNotEmpty ?? false)
|
return (validStyles?.isNotEmpty ?? false)
|
||||||
? transform?.call(
|
? transformation.call(
|
||||||
validStyles?.reduce(
|
validStyles?.reduce(
|
||||||
(value, element) => combine?.call(value, element) ?? value,
|
(value, element) => combine?.call(value, element) ?? value,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
: null;
|
: null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Gets a theme element from a list of styles. Throws an exception if no
|
||||||
|
/// valid style is found.
|
||||||
|
///
|
||||||
|
/// See [maybeGetElement] for more details.
|
||||||
|
///
|
||||||
|
/// {@macro getElement}
|
||||||
|
static T getElement<P, T>(
|
||||||
|
List<P?>? styles, {
|
||||||
|
T? Function(P?)? transform,
|
||||||
|
bool? Function(P?)? valueValidator,
|
||||||
|
P? Function(P?, P?)? combine,
|
||||||
|
}) {
|
||||||
|
final result = maybeGetElement<P, T>(
|
||||||
|
styles,
|
||||||
|
transform: transform,
|
||||||
|
valueValidator: valueValidator,
|
||||||
|
combine: combine,
|
||||||
|
);
|
||||||
|
|
||||||
|
if (result == null) {
|
||||||
|
throw FlutterError(
|
||||||
|
'No valid style found.\nPlease check your theme configuration.\n'
|
||||||
|
'Searching for: $P in $styles (transform to $T)\n'
|
||||||
|
'If this value can be null, use maybeGetElement instead.',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,39 @@
|
|||||||
|
// Copyright (C) 2023 WYATT GROUP
|
||||||
|
// Please see the AUTHORS file for details.
|
||||||
|
//
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
abstract class ThemeImporter {
|
||||||
|
/// Imports a [ThemeData] from either a [BuildContext] or a [ThemeData].
|
||||||
|
///
|
||||||
|
/// Throws an [ArgumentError] if the type of [from] is not a [BuildContext]
|
||||||
|
/// or a [ThemeData].
|
||||||
|
static ThemeData importFrom<T>(T from) {
|
||||||
|
ThemeData theme;
|
||||||
|
|
||||||
|
if (from is BuildContext) {
|
||||||
|
theme = Theme.of(from);
|
||||||
|
} else if (from is ThemeData) {
|
||||||
|
theme = from;
|
||||||
|
} else {
|
||||||
|
throw ArgumentError(
|
||||||
|
'from must be either a BuildContext or a ThemeData',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return theme;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -26,47 +26,82 @@ import 'package:wyatt_ui_components/src/domain/entities/theme_style.dart';
|
|||||||
/// 1) Pass the "radius" into the constructor, `Component(radius: 12)`.
|
/// 1) Pass the "radius" into the constructor, `Component(radius: 12)`.
|
||||||
/// 2) Set up a theme extension `ComponentThemeExtension(radius: 15)`.
|
/// 2) Set up a theme extension `ComponentThemeExtension(radius: 15)`.
|
||||||
/// 3) Let `wyatt_ui_kit` "negotiate" and try to find a suitable style in the
|
/// 3) Let `wyatt_ui_kit` "negotiate" and try to find a suitable style in the
|
||||||
/// flutter theme.
|
/// flutter theme, or use a hardcoded value.
|
||||||
///
|
///
|
||||||
/// If this negotiation phase fails, then:
|
/// If a negotiation phase fails, it will fallback to the next one.
|
||||||
/// - If the value is mandatory: a hardcoded value in "wyatt_ui_kit" is chosen.
|
///
|
||||||
/// - If not, the style is simply not applied.
|
/// This resolver uses [ThemeHelper] to negotiate and merge styles.
|
||||||
/// {@endtemplate}
|
/// {@endtemplate}
|
||||||
abstract class ThemeResolver<S extends ThemeStyle<S>, T, E> {
|
abstract class ThemeResolver<Style extends ThemeStyle<Style>, Extension,
|
||||||
|
Extra> {
|
||||||
/// {@macro theme_resolver}
|
/// {@macro theme_resolver}
|
||||||
const ThemeResolver();
|
const ThemeResolver();
|
||||||
|
|
||||||
S? Function(BuildContext context, {E? extra}) get customStyleFn;
|
/// Compute extension value from a given extension.
|
||||||
|
Style? computeExtensionValueFn(
|
||||||
|
BuildContext context,
|
||||||
|
Extension? themeExtension, {
|
||||||
|
Extra? extra,
|
||||||
|
});
|
||||||
|
|
||||||
|
/// Return the default extension containing Flutter's default values and
|
||||||
|
/// hardcoded values.
|
||||||
|
Extension? getDefaultExtension(BuildContext context);
|
||||||
|
|
||||||
/// Compute default value from Flutter Theme or with hardcoded values.
|
/// Compute default value from Flutter Theme or with hardcoded values.
|
||||||
S computeDefaultValue(
|
///
|
||||||
|
/// If no default value is found, it will throw a [FlutterError].
|
||||||
|
Style computeDefaultValue(
|
||||||
BuildContext context, {
|
BuildContext context, {
|
||||||
E? extra,
|
Extra? extra,
|
||||||
});
|
}) {
|
||||||
|
final extension = getDefaultExtension(context);
|
||||||
|
if (extension == null) {
|
||||||
|
throw FlutterError('No default extension found for $Extension\n'
|
||||||
|
'Please provide a default extension in your theme using '
|
||||||
|
'`wyatt_ui_components` default extensions kit.');
|
||||||
|
}
|
||||||
|
|
||||||
/// Compute extension value from custom component extension.
|
final style = computeExtensionValueFn(context, extension, extra: extra);
|
||||||
S? computeExtensionValueFn(
|
|
||||||
BuildContext context,
|
if (style == null) {
|
||||||
T? themeExtension, {
|
throw FlutterError(
|
||||||
E? extra,
|
'No default style found for $Style in '
|
||||||
});
|
'$Extension${extra != null ? ' with $extra' : ''}',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return style;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Compute custom style from context.
|
||||||
|
Style? Function(BuildContext context, {Extra? extra}) get customStyleFn;
|
||||||
|
|
||||||
/// Choose most suitable style for a given context.
|
/// Choose most suitable style for a given context.
|
||||||
S negotiate(BuildContext context, {E? extra}) {
|
Style negotiate(BuildContext context, {Extra? extra}) {
|
||||||
|
// 1) Custom style passed in constructor (cannot be null)
|
||||||
final style = computeDefaultValue(context, extra: extra);
|
final style = computeDefaultValue(context, extra: extra);
|
||||||
return ThemeHelper.getThemeElement<S, S>(
|
return ThemeHelper.getElement<Style, Style>(
|
||||||
[
|
[
|
||||||
style,
|
// 3) Default
|
||||||
computeExtensionValueFn(
|
style,
|
||||||
context,
|
|
||||||
Theme.of(context).extension<T>(),
|
// -> then, try to find better style, and merge it with the default
|
||||||
extra: extra,
|
|
||||||
),
|
// 2) Theme extension
|
||||||
customStyleFn(context, extra: extra)
|
computeExtensionValueFn(
|
||||||
],
|
context,
|
||||||
transform: (value) => value,
|
Theme.of(context).extension<Extension>(),
|
||||||
combine: (value, element) => value?.mergeWith(element),
|
extra: extra,
|
||||||
) ??
|
),
|
||||||
style;
|
|
||||||
|
// -> then, try to find better style, and merge it with the one above
|
||||||
|
|
||||||
|
// 1) Custom style passed in constructor
|
||||||
|
customStyleFn(context, extra: extra),
|
||||||
|
],
|
||||||
|
transform: (value) => value,
|
||||||
|
combine: (value, element) => value?.mergeWith(element),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
export 'gradient_helper.dart';
|
||||||
export 'multi_color.dart';
|
export 'multi_color.dart';
|
||||||
export 'text_wrapper.dart';
|
export 'text_wrapper.dart';
|
||||||
export 'theme_helper.dart';
|
export 'theme_helper.dart';
|
||||||
|
|||||||
+1
-9
@@ -14,12 +14,4 @@
|
|||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
import 'package:flutter/widgets.dart';
|
export 'theme_extensions/theme_extensions.dart';
|
||||||
import 'package:wyatt_ui_components/wyatt_ui_components.dart';
|
|
||||||
|
|
||||||
extension StringExtension on String? {
|
|
||||||
TextWrapper? wrap({TextStyle? style, MultiColor? gradientColors}) =>
|
|
||||||
this != null
|
|
||||||
? TextWrapper(this!, style: style, gradientColors: gradientColors)
|
|
||||||
: null;
|
|
||||||
}
|
|
||||||
+4
-16
@@ -14,19 +14,7 @@
|
|||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
export 'file_selection_button_theme_extension_default.dart';
|
||||||
import 'package:wyatt_ui_components/wyatt_ui_components.dart';
|
export 'flat_button_theme_extension_default.dart';
|
||||||
|
export 'simple_icon_button_theme_extension_default.dart';
|
||||||
abstract class LoaderThemeExtension
|
export 'symbol_button_theme_extension_default.dart';
|
||||||
extends ThemeExtension<LoaderThemeExtension> {
|
|
||||||
const LoaderThemeExtension({
|
|
||||||
this.colors,
|
|
||||||
this.stroke,
|
|
||||||
});
|
|
||||||
|
|
||||||
/// Gradient colors from start to end.
|
|
||||||
final MultiColor? colors;
|
|
||||||
|
|
||||||
/// Loader stroke width
|
|
||||||
final double? stroke;
|
|
||||||
}
|
|
||||||
+82
@@ -0,0 +1,82 @@
|
|||||||
|
// Copyright (C) 2023 WYATT GROUP
|
||||||
|
// Please see the AUTHORS file for details.
|
||||||
|
//
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:wyatt_ui_components/wyatt_ui_components.dart';
|
||||||
|
|
||||||
|
/// {@template file_selection_button_theme_extension}
|
||||||
|
/// Default file selection button theme extension using Flutter's
|
||||||
|
/// default theme and opinionated defaults.
|
||||||
|
/// {@endtemplate}
|
||||||
|
class FileSelectionButtonThemeExtensionDefault
|
||||||
|
extends FileSelectionButtonThemeExtension {
|
||||||
|
/// {@macro file_selection_button_theme_extension}
|
||||||
|
const FileSelectionButtonThemeExtensionDefault({
|
||||||
|
required super.disabledStyle,
|
||||||
|
required super.focusedStyle,
|
||||||
|
required super.hoveredStyle,
|
||||||
|
required super.normalStyle,
|
||||||
|
required super.tappedStyle,
|
||||||
|
required super.selectedStyle,
|
||||||
|
required super.invalidStyle,
|
||||||
|
});
|
||||||
|
|
||||||
|
/// Creates a [FileSelectionButtonThemeExtensionDefault] given a [ThemeData]
|
||||||
|
///
|
||||||
|
/// {@macro file_selection_button_theme_extension}
|
||||||
|
factory FileSelectionButtonThemeExtensionDefault.from(ThemeData theme) {
|
||||||
|
final style = FileSelectionButtonStyle(
|
||||||
|
titleStyle: theme.textTheme.labelLarge,
|
||||||
|
subtitleStyle: theme.textTheme.labelSmall,
|
||||||
|
radius: (theme.buttonTheme.shape is RoundedRectangleBorder)
|
||||||
|
? (theme.buttonTheme.shape as RoundedRectangleBorder).borderRadius
|
||||||
|
: null,
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 10),
|
||||||
|
foregroundColors: MultiColor.single(theme.colorScheme.onPrimary),
|
||||||
|
backgroundColors: MultiColor.single(theme.colorScheme.primary),
|
||||||
|
animationDuration: Duration.zero,
|
||||||
|
);
|
||||||
|
|
||||||
|
return FileSelectionButtonThemeExtensionDefault(
|
||||||
|
normalStyle: style,
|
||||||
|
focusedStyle: style,
|
||||||
|
hoveredStyle: style.copyWith(
|
||||||
|
backgroundColors:
|
||||||
|
MultiColor.single(theme.colorScheme.primary.withOpacity(0.80)),
|
||||||
|
),
|
||||||
|
tappedStyle: style.copyWith(
|
||||||
|
backgroundColors:
|
||||||
|
MultiColor.single(theme.colorScheme.primary.withOpacity(0.75)),
|
||||||
|
),
|
||||||
|
selectedStyle: style,
|
||||||
|
disabledStyle: style.copyWith(
|
||||||
|
foregroundColors:
|
||||||
|
MultiColor.single(theme.colorScheme.onSurface.withOpacity(0.12)),
|
||||||
|
backgroundColors:
|
||||||
|
MultiColor.single(theme.colorScheme.onSurface.withOpacity(0.38)),
|
||||||
|
),
|
||||||
|
invalidStyle: style,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Creates a [FileSelectionButtonThemeExtensionDefault] from a dark theme
|
||||||
|
factory FileSelectionButtonThemeExtensionDefault.dark() =>
|
||||||
|
FileSelectionButtonThemeExtensionDefault.from(ThemeData.dark());
|
||||||
|
|
||||||
|
/// Creates a [FileSelectionButtonThemeExtensionDefault] from a light theme
|
||||||
|
factory FileSelectionButtonThemeExtensionDefault.light() =>
|
||||||
|
FileSelectionButtonThemeExtensionDefault.from(ThemeData.light());
|
||||||
|
}
|
||||||
+79
@@ -0,0 +1,79 @@
|
|||||||
|
// Copyright (C) 2023 WYATT GROUP
|
||||||
|
// Please see the AUTHORS file for details.
|
||||||
|
//
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:wyatt_ui_components/wyatt_ui_components.dart';
|
||||||
|
|
||||||
|
/// {@template flat_button_theme_extension_default}
|
||||||
|
/// Default flat button theme extension using Flutter's default values.
|
||||||
|
/// {@endtemplate}
|
||||||
|
class FlatButtonThemeExtensionDefault extends FlatButtonThemeExtension {
|
||||||
|
/// {@macro flat_button_theme_extension_default}
|
||||||
|
const FlatButtonThemeExtensionDefault({
|
||||||
|
required super.disabledStyle,
|
||||||
|
required super.focusedStyle,
|
||||||
|
required super.hoveredStyle,
|
||||||
|
required super.normalStyle,
|
||||||
|
required super.tappedStyle,
|
||||||
|
});
|
||||||
|
|
||||||
|
/// Creates a [FlatButtonThemeExtensionDefault] given a [ThemeData]
|
||||||
|
///
|
||||||
|
/// {@macro flat_button_theme_extension_default}
|
||||||
|
factory FlatButtonThemeExtensionDefault.from(ThemeData theme) {
|
||||||
|
final backgroundColor = MultiColor.single(theme.colorScheme.primary);
|
||||||
|
final foregroundColor = MultiColor.single(theme.colorScheme.onPrimary);
|
||||||
|
|
||||||
|
final style = FlatButtonStyle(
|
||||||
|
labelStyle:
|
||||||
|
theme.textTheme.labelLarge?.copyWith(color: foregroundColor.color),
|
||||||
|
radius: (theme.buttonTheme.shape is RoundedRectangleBorder)
|
||||||
|
? (theme.buttonTheme.shape as RoundedRectangleBorder).borderRadius
|
||||||
|
: null,
|
||||||
|
padding: theme.buttonTheme.padding,
|
||||||
|
foregroundColors: foregroundColor,
|
||||||
|
backgroundColors: backgroundColor,
|
||||||
|
animationDuration: Duration.zero,
|
||||||
|
);
|
||||||
|
|
||||||
|
return FlatButtonThemeExtensionDefault(
|
||||||
|
normalStyle: style,
|
||||||
|
focusedStyle: style,
|
||||||
|
hoveredStyle: style.copyWith(
|
||||||
|
backgroundColors:
|
||||||
|
MultiColor.single(theme.colorScheme.primary.withOpacity(0.92)),
|
||||||
|
),
|
||||||
|
tappedStyle: style.copyWith(
|
||||||
|
backgroundColors:
|
||||||
|
MultiColor.single(theme.colorScheme.primary.withOpacity(0.92)),
|
||||||
|
),
|
||||||
|
disabledStyle: style.copyWith(
|
||||||
|
foregroundColors:
|
||||||
|
MultiColor.single(theme.colorScheme.onSurface.withOpacity(0.12)),
|
||||||
|
backgroundColors:
|
||||||
|
MultiColor.single(theme.colorScheme.onSurface.withOpacity(0.38)),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Creates a [FlatButtonThemeExtensionDefault] from a dark theme
|
||||||
|
factory FlatButtonThemeExtensionDefault.dark() =>
|
||||||
|
FlatButtonThemeExtensionDefault.from(ThemeData.dark());
|
||||||
|
|
||||||
|
/// Creates a [FlatButtonThemeExtensionDefault] from a light theme
|
||||||
|
factory FlatButtonThemeExtensionDefault.light() =>
|
||||||
|
FlatButtonThemeExtensionDefault.from(ThemeData.light());
|
||||||
|
}
|
||||||
+79
@@ -0,0 +1,79 @@
|
|||||||
|
// Copyright (C) 2023 WYATT GROUP
|
||||||
|
// Please see the AUTHORS file for details.
|
||||||
|
//
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:wyatt_ui_components/wyatt_ui_components.dart';
|
||||||
|
|
||||||
|
/// {@template simple_icon_button_theme_extension}
|
||||||
|
/// Default simple icon button theme extension using Flutter's default values.
|
||||||
|
/// {@endtemplate}
|
||||||
|
class SimpleIconButtonThemeExtensionDefault
|
||||||
|
extends SimpleIconButtonThemeExtension {
|
||||||
|
/// {@macro simple_icon_button_theme_extension}
|
||||||
|
const SimpleIconButtonThemeExtensionDefault({
|
||||||
|
required super.disabledStyle,
|
||||||
|
required super.focusedStyle,
|
||||||
|
required super.hoveredStyle,
|
||||||
|
required super.normalStyle,
|
||||||
|
required super.tappedStyle,
|
||||||
|
});
|
||||||
|
|
||||||
|
/// Creates a [SimpleIconButtonThemeExtensionDefault] given a [ThemeData]
|
||||||
|
///
|
||||||
|
/// {@macro file_selection_button_theme_extension}
|
||||||
|
factory SimpleIconButtonThemeExtensionDefault.from(ThemeData theme) {
|
||||||
|
final backgroundColor = MultiColor.single(theme.colorScheme.primary);
|
||||||
|
final foregroundColor = MultiColor.single(theme.colorScheme.onPrimary);
|
||||||
|
|
||||||
|
final style = SimpleIconButtonStyle(
|
||||||
|
dimension: theme.buttonTheme.height,
|
||||||
|
radius: (theme.buttonTheme.shape is RoundedRectangleBorder)
|
||||||
|
? (theme.buttonTheme.shape as RoundedRectangleBorder).borderRadius
|
||||||
|
: null,
|
||||||
|
padding: const EdgeInsets.all(5),
|
||||||
|
foregroundColors: foregroundColor,
|
||||||
|
backgroundColors: backgroundColor,
|
||||||
|
animationDuration: Duration.zero,
|
||||||
|
);
|
||||||
|
|
||||||
|
return SimpleIconButtonThemeExtensionDefault(
|
||||||
|
normalStyle: style,
|
||||||
|
focusedStyle: style,
|
||||||
|
hoveredStyle: style.copyWith(
|
||||||
|
backgroundColors:
|
||||||
|
MultiColor.single(theme.colorScheme.primary.withOpacity(0.80)),
|
||||||
|
),
|
||||||
|
tappedStyle: style.copyWith(
|
||||||
|
backgroundColors:
|
||||||
|
MultiColor.single(theme.colorScheme.primary.withOpacity(0.75)),
|
||||||
|
),
|
||||||
|
disabledStyle: style.copyWith(
|
||||||
|
foregroundColors:
|
||||||
|
MultiColor.single(theme.colorScheme.onSurface.withOpacity(0.12)),
|
||||||
|
backgroundColors:
|
||||||
|
MultiColor.single(theme.colorScheme.onSurface.withOpacity(0.38)),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Creates a [SimpleIconButtonThemeExtensionDefault] from a dark theme
|
||||||
|
factory SimpleIconButtonThemeExtensionDefault.dark() =>
|
||||||
|
SimpleIconButtonThemeExtensionDefault.from(ThemeData.dark());
|
||||||
|
|
||||||
|
/// Creates a [SimpleIconButtonThemeExtensionDefault] from a light theme
|
||||||
|
factory SimpleIconButtonThemeExtensionDefault.light() =>
|
||||||
|
SimpleIconButtonThemeExtensionDefault.from(ThemeData.light());
|
||||||
|
}
|
||||||
+87
@@ -0,0 +1,87 @@
|
|||||||
|
// Copyright (C) 2023 WYATT GROUP
|
||||||
|
// Please see the AUTHORS file for details.
|
||||||
|
//
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:wyatt_ui_components/wyatt_ui_components.dart';
|
||||||
|
|
||||||
|
/// {@template symbol_button_theme_extension}
|
||||||
|
/// Default symbol button theme extension using Flutter's default values.
|
||||||
|
/// {@endtemplate}
|
||||||
|
class SymbolButtonThemeExtensionDefault extends SymbolButtonThemeExtension {
|
||||||
|
/// {@macro flat_button_theme_extension}
|
||||||
|
const SymbolButtonThemeExtensionDefault({
|
||||||
|
required super.disabledStyle,
|
||||||
|
required super.focusedStyle,
|
||||||
|
required super.hoveredStyle,
|
||||||
|
required super.normalStyle,
|
||||||
|
required super.tappedStyle,
|
||||||
|
required super.selectedStyle,
|
||||||
|
});
|
||||||
|
|
||||||
|
/// Creates a [SymbolButtonThemeExtensionDefault] given a [ThemeData]
|
||||||
|
///
|
||||||
|
/// {@macro file_selection_button_theme_extension}
|
||||||
|
factory SymbolButtonThemeExtensionDefault.from(ThemeData theme) {
|
||||||
|
final backgroundColor = MultiColor.single(theme.colorScheme.primary);
|
||||||
|
final foregroundColor = MultiColor.single(theme.colorScheme.onPrimary);
|
||||||
|
final textColor = MultiColor.single(theme.textTheme.bodyMedium?.color);
|
||||||
|
|
||||||
|
final style = SymbolButtonStyle(
|
||||||
|
labelStyle: theme.textTheme.labelLarge?.copyWith(color: textColor.color),
|
||||||
|
dimension: theme.buttonTheme.height * 1.5,
|
||||||
|
radius: (theme.buttonTheme.shape is RoundedRectangleBorder)
|
||||||
|
? (theme.buttonTheme.shape as RoundedRectangleBorder).borderRadius
|
||||||
|
: null,
|
||||||
|
padding: theme.buttonTheme.padding,
|
||||||
|
foregroundColors: foregroundColor,
|
||||||
|
backgroundColors: backgroundColor,
|
||||||
|
animationDuration: Duration.zero,
|
||||||
|
);
|
||||||
|
|
||||||
|
return SymbolButtonThemeExtensionDefault(
|
||||||
|
normalStyle: style,
|
||||||
|
focusedStyle: style,
|
||||||
|
hoveredStyle: style.copyWith(
|
||||||
|
backgroundColors:
|
||||||
|
MultiColor.single(theme.colorScheme.primary.withOpacity(0.80)),
|
||||||
|
),
|
||||||
|
tappedStyle: style.copyWith(
|
||||||
|
backgroundColors:
|
||||||
|
MultiColor.single(theme.colorScheme.primary.withOpacity(0.75)),
|
||||||
|
),
|
||||||
|
disabledStyle: style.copyWith(
|
||||||
|
foregroundColors:
|
||||||
|
MultiColor.single(theme.colorScheme.onSurface.withOpacity(0.12)),
|
||||||
|
backgroundColors:
|
||||||
|
MultiColor.single(theme.colorScheme.onSurface.withOpacity(0.38)),
|
||||||
|
),
|
||||||
|
selectedStyle: style.copyWith(
|
||||||
|
backgroundColors:
|
||||||
|
MultiColor.single(theme.colorScheme.primary.withOpacity(0.92)),
|
||||||
|
borderColors: textColor,
|
||||||
|
stroke: 3,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Creates a [SymbolButtonThemeExtensionDefault] from a dark theme
|
||||||
|
factory SymbolButtonThemeExtensionDefault.dark() =>
|
||||||
|
SymbolButtonThemeExtensionDefault.from(ThemeData.dark());
|
||||||
|
|
||||||
|
/// Creates a [SymbolButtonThemeExtensionDefault] from a light theme
|
||||||
|
factory SymbolButtonThemeExtensionDefault.light() =>
|
||||||
|
SymbolButtonThemeExtensionDefault.from(ThemeData.light());
|
||||||
|
}
|
||||||
+67
@@ -0,0 +1,67 @@
|
|||||||
|
// Copyright (C) 2023 WYATT GROUP
|
||||||
|
// Please see the AUTHORS file for details.
|
||||||
|
//
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:wyatt_ui_components/src/core/utils/multi_color.dart';
|
||||||
|
import 'package:wyatt_ui_components/src/domain/theme_extensions/theme_extensions.dart';
|
||||||
|
|
||||||
|
/// {@template card_theme_extension_default}
|
||||||
|
/// Default card theme extension using Flutter's default card theme and
|
||||||
|
/// opinionated defaults.
|
||||||
|
/// {@endtemplate}
|
||||||
|
class CardThemeExtensionDefault extends CardThemeExtension {
|
||||||
|
/// {@macro card_theme_extension_default}
|
||||||
|
const CardThemeExtensionDefault({
|
||||||
|
required super.radius,
|
||||||
|
required super.padding,
|
||||||
|
required super.backgroundColors,
|
||||||
|
required super.borderColors,
|
||||||
|
required super.stroke,
|
||||||
|
required super.shadow,
|
||||||
|
required super.minSize,
|
||||||
|
required super.maxSize,
|
||||||
|
required super.titleStyle,
|
||||||
|
required super.subtitleStyle,
|
||||||
|
required super.bodyStyle,
|
||||||
|
});
|
||||||
|
|
||||||
|
/// Creates a [CardThemeExtensionDefault] from a [ThemeData]
|
||||||
|
/// and opinionated defaults.
|
||||||
|
///
|
||||||
|
/// {@macro card_theme_extension_default}
|
||||||
|
factory CardThemeExtensionDefault.from(ThemeData theme) =>
|
||||||
|
CardThemeExtensionDefault(
|
||||||
|
radius: const BorderRadius.all(Radius.circular(12)),
|
||||||
|
padding: theme.cardTheme.margin ?? const EdgeInsets.all(15),
|
||||||
|
backgroundColors: MultiColor.single(theme.cardColor),
|
||||||
|
borderColors: MultiColor.single(theme.canvasColor),
|
||||||
|
minSize: const Size(330, 0),
|
||||||
|
maxSize: const Size(390, double.infinity),
|
||||||
|
titleStyle: theme.textTheme.titleLarge,
|
||||||
|
subtitleStyle: theme.textTheme.titleMedium,
|
||||||
|
bodyStyle: theme.textTheme.bodyMedium,
|
||||||
|
stroke: 0,
|
||||||
|
shadow: null,
|
||||||
|
);
|
||||||
|
|
||||||
|
/// Creates a [CardThemeExtensionDefault] from a dark [ThemeData]
|
||||||
|
factory CardThemeExtensionDefault.dark() =>
|
||||||
|
CardThemeExtensionDefault.from(ThemeData.dark());
|
||||||
|
|
||||||
|
/// Creates a [CardThemeExtensionDefault] from a light [ThemeData]
|
||||||
|
factory CardThemeExtensionDefault.light() =>
|
||||||
|
CardThemeExtensionDefault.from(ThemeData.light());
|
||||||
|
}
|
||||||
+50
@@ -0,0 +1,50 @@
|
|||||||
|
// Copyright (C) 2023 WYATT GROUP
|
||||||
|
// Please see the AUTHORS file for details.
|
||||||
|
//
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:wyatt_ui_components/wyatt_ui_components.dart';
|
||||||
|
|
||||||
|
/// {@template loader_theme_extension_default}
|
||||||
|
/// The default [LoaderThemeExtension].
|
||||||
|
/// {@endtemplate}
|
||||||
|
class LoaderThemeExtensionDefault extends LoaderThemeExtension {
|
||||||
|
/// {@macro loader_theme_extension_default}
|
||||||
|
const LoaderThemeExtensionDefault({
|
||||||
|
required super.colors,
|
||||||
|
required super.stroke,
|
||||||
|
});
|
||||||
|
|
||||||
|
/// Creates a [LoaderThemeExtensionDefault] from a [ThemeData]
|
||||||
|
/// and opinionated defaults.
|
||||||
|
///
|
||||||
|
/// {@macro card_theme_extension_default}
|
||||||
|
factory LoaderThemeExtensionDefault.from(ThemeData theme) =>
|
||||||
|
LoaderThemeExtensionDefault(
|
||||||
|
colors: MultiColor([
|
||||||
|
theme.progressIndicatorTheme.color ?? theme.colorScheme.primary,
|
||||||
|
Colors.transparent,
|
||||||
|
]),
|
||||||
|
stroke: 4,
|
||||||
|
);
|
||||||
|
|
||||||
|
/// Creates a [LoaderThemeExtensionDefault] from a dark [ThemeData]
|
||||||
|
factory LoaderThemeExtensionDefault.dark() =>
|
||||||
|
LoaderThemeExtensionDefault.from(ThemeData.dark());
|
||||||
|
|
||||||
|
/// Creates a [LoaderThemeExtensionDefault] from a light [ThemeData]
|
||||||
|
factory LoaderThemeExtensionDefault.light() =>
|
||||||
|
LoaderThemeExtensionDefault.from(ThemeData.light());
|
||||||
|
}
|
||||||
+73
@@ -0,0 +1,73 @@
|
|||||||
|
// Copyright (C) 2023 WYATT GROUP
|
||||||
|
// Please see the AUTHORS file for details.
|
||||||
|
//
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:wyatt_ui_components/src/domain/theme_extensions/rich_text_builder_theme_extension.dart';
|
||||||
|
|
||||||
|
class RichTextBuilderThemeExtensionDefault
|
||||||
|
extends RichTextBuilderThemeExtension {
|
||||||
|
const RichTextBuilderThemeExtensionDefault({
|
||||||
|
required super.defaultStyle,
|
||||||
|
required super.styles,
|
||||||
|
});
|
||||||
|
|
||||||
|
/// Creates a [RichTextBuilderThemeExtensionDefault] from a [ThemeData]
|
||||||
|
/// and opinionated defaults.
|
||||||
|
///
|
||||||
|
/// {@macro card_theme_extension_default}
|
||||||
|
factory RichTextBuilderThemeExtensionDefault.from(ThemeData theme) =>
|
||||||
|
RichTextBuilderThemeExtensionDefault(
|
||||||
|
defaultStyle: theme.textTheme.bodyMedium,
|
||||||
|
styles: {
|
||||||
|
'blue': theme.textTheme.bodyMedium?.copyWith(
|
||||||
|
color: Colors.blue,
|
||||||
|
) ??
|
||||||
|
const TextStyle(
|
||||||
|
color: Colors.blue,
|
||||||
|
),
|
||||||
|
'red': theme.textTheme.bodyMedium?.copyWith(
|
||||||
|
color: Colors.red,
|
||||||
|
) ??
|
||||||
|
const TextStyle(
|
||||||
|
color: Colors.red,
|
||||||
|
),
|
||||||
|
'green': theme.textTheme.bodyMedium?.copyWith(
|
||||||
|
color: Colors.green,
|
||||||
|
) ??
|
||||||
|
const TextStyle(
|
||||||
|
color: Colors.green,
|
||||||
|
),
|
||||||
|
'bold': theme.textTheme.bodyMedium?.copyWith(
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
) ??
|
||||||
|
const TextStyle(
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
),
|
||||||
|
'italic': theme.textTheme.bodyMedium?.copyWith(
|
||||||
|
fontStyle: FontStyle.italic,
|
||||||
|
) ??
|
||||||
|
const TextStyle(fontStyle: FontStyle.italic),
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
/// Creates a [RichTextBuilderThemeExtensionDefault] from a dark [ThemeData]
|
||||||
|
factory RichTextBuilderThemeExtensionDefault.dark() =>
|
||||||
|
RichTextBuilderThemeExtensionDefault.from(ThemeData.dark());
|
||||||
|
|
||||||
|
/// Creates a [RichTextBuilderThemeExtensionDefault] from a light [ThemeData]
|
||||||
|
factory RichTextBuilderThemeExtensionDefault.light() =>
|
||||||
|
RichTextBuilderThemeExtensionDefault.from(ThemeData.light());
|
||||||
|
}
|
||||||
+97
@@ -0,0 +1,97 @@
|
|||||||
|
// Copyright (C) 2023 WYATT GROUP
|
||||||
|
// Please see the AUTHORS file for details.
|
||||||
|
//
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:wyatt_ui_components/src/domain/entities/text_inputs/text_input_style.dart';
|
||||||
|
import 'package:wyatt_ui_components/src/domain/theme_extensions/text_input_theme_extension.dart';
|
||||||
|
|
||||||
|
/// {@template text_input_theme_extension_default}
|
||||||
|
/// The default implementation of [TextInputThemeExtension].
|
||||||
|
/// {@endtemplate}
|
||||||
|
class TextInputThemeExtensionDefault extends TextInputThemeExtension {
|
||||||
|
/// {@macro text_input_theme_extension_default}
|
||||||
|
const TextInputThemeExtensionDefault({
|
||||||
|
required super.normalStyle,
|
||||||
|
required super.focusedStyle,
|
||||||
|
required super.disabledStyle,
|
||||||
|
required super.invalidStyle,
|
||||||
|
});
|
||||||
|
|
||||||
|
/// Creates a [TextInputThemeExtensionDefault] from a [ThemeData].
|
||||||
|
///
|
||||||
|
/// {@macro text_input_theme_extension_default}
|
||||||
|
factory TextInputThemeExtensionDefault.from(ThemeData theme) {
|
||||||
|
final labelStyle = theme.textTheme.labelLarge
|
||||||
|
?.copyWith(color: theme.unselectedWidgetColor);
|
||||||
|
|
||||||
|
final hintStyle = theme.textTheme.labelLarge;
|
||||||
|
final prefixStyle = theme.textTheme.bodyMedium;
|
||||||
|
final suffixStyle = theme.textTheme.bodyMedium;
|
||||||
|
final inputStyle = theme.textTheme.bodyMedium;
|
||||||
|
|
||||||
|
final iconColor = theme.colorScheme.inversePrimary;
|
||||||
|
final prefixIconColor = theme.unselectedWidgetColor;
|
||||||
|
final suffixIconColor = theme.unselectedWidgetColor;
|
||||||
|
|
||||||
|
final borderColors = theme.unselectedWidgetColor;
|
||||||
|
|
||||||
|
final style = TextInputStyle(
|
||||||
|
labelStyle: labelStyle,
|
||||||
|
hintStyle: hintStyle,
|
||||||
|
iconColor: iconColor,
|
||||||
|
prefixIconColor: prefixIconColor,
|
||||||
|
prefixStyle: prefixStyle,
|
||||||
|
suffixStyle: suffixStyle,
|
||||||
|
suffixIconColor: suffixIconColor,
|
||||||
|
borderColors: borderColors,
|
||||||
|
inputStyle: inputStyle,
|
||||||
|
);
|
||||||
|
|
||||||
|
return TextInputThemeExtensionDefault(
|
||||||
|
normalStyle: style,
|
||||||
|
focusedStyle: style.copyWith(
|
||||||
|
prefixIconColor: theme.colorScheme.primary,
|
||||||
|
suffixIconColor: theme.colorScheme.primary,
|
||||||
|
iconColor: theme.colorScheme.primary,
|
||||||
|
borderColors: theme.colorScheme.primary,
|
||||||
|
labelStyle: labelStyle?.copyWith(color: theme.colorScheme.primary),
|
||||||
|
),
|
||||||
|
disabledStyle: style.copyWith(
|
||||||
|
labelStyle: labelStyle?.copyWith(color: theme.disabledColor),
|
||||||
|
hintStyle: hintStyle?.copyWith(color: theme.disabledColor),
|
||||||
|
prefixStyle: prefixStyle?.copyWith(color: theme.disabledColor),
|
||||||
|
suffixStyle: suffixStyle?.copyWith(color: theme.disabledColor),
|
||||||
|
inputStyle: inputStyle?.copyWith(color: theme.disabledColor),
|
||||||
|
borderColors: theme.disabledColor,
|
||||||
|
prefixIconColor: theme.disabledColor,
|
||||||
|
suffixIconColor: theme.disabledColor,
|
||||||
|
),
|
||||||
|
invalidStyle: style.copyWith(
|
||||||
|
labelStyle: theme.textTheme.labelLarge
|
||||||
|
?.copyWith(color: theme.colorScheme.error),
|
||||||
|
borderColors: theme.colorScheme.error,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Creates a [TextInputThemeExtensionDefault] from a [ThemeData.light].
|
||||||
|
factory TextInputThemeExtensionDefault.light() =>
|
||||||
|
TextInputThemeExtensionDefault.from(ThemeData.light());
|
||||||
|
|
||||||
|
/// Creates a [TextInputThemeExtensionDefault] from a [ThemeData.dark].
|
||||||
|
factory TextInputThemeExtensionDefault.dark() =>
|
||||||
|
TextInputThemeExtensionDefault.from(ThemeData.dark());
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
// Copyright (C) 2023 WYATT GROUP
|
||||||
|
// Please see the AUTHORS file for details.
|
||||||
|
//
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
export 'button_theme_extension/button_theme_extension.dart';
|
||||||
|
export 'card_theme_extension_default.dart';
|
||||||
|
export 'loader_theme_extension_default.dart';
|
||||||
|
export 'rich_text_builder_theme_extension_default.dart';
|
||||||
|
export 'text_input_theme_extension_default.dart';
|
||||||
|
export 'top_bar_theme_extension_default.dart';
|
||||||
+54
@@ -0,0 +1,54 @@
|
|||||||
|
// Copyright (C) 2023 WYATT GROUP
|
||||||
|
// Please see the AUTHORS file for details.
|
||||||
|
//
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:wyatt_ui_components/wyatt_ui_components.dart';
|
||||||
|
|
||||||
|
class TopBarThemeExtensionDefault extends TopBarThemeExtension {
|
||||||
|
const TopBarThemeExtensionDefault({
|
||||||
|
required super.iconTheme,
|
||||||
|
required super.backgroundColors,
|
||||||
|
required super.titleStyle,
|
||||||
|
required super.subtitleStyle,
|
||||||
|
required super.selectedIndicatorColors,
|
||||||
|
required super.selectedIndicatorSize,
|
||||||
|
required super.dividerColor,
|
||||||
|
});
|
||||||
|
|
||||||
|
/// Creates a [TopBarThemeExtensionDefault] from a [ThemeData]
|
||||||
|
/// and opinionated defaults.
|
||||||
|
///
|
||||||
|
/// {@macro card_theme_extension_default}
|
||||||
|
factory TopBarThemeExtensionDefault.from(ThemeData theme) =>
|
||||||
|
TopBarThemeExtensionDefault(
|
||||||
|
backgroundColors: MultiColor.single(theme.appBarTheme.backgroundColor),
|
||||||
|
titleStyle:
|
||||||
|
theme.appBarTheme.titleTextStyle ?? theme.textTheme.titleMedium,
|
||||||
|
subtitleStyle: theme.textTheme.bodyMedium,
|
||||||
|
selectedIndicatorColors: MultiColor.single(theme.colorScheme.primary),
|
||||||
|
selectedIndicatorSize: const Size(70, 5),
|
||||||
|
iconTheme: theme.iconTheme,
|
||||||
|
dividerColor: theme.colorScheme.onSurface.withOpacity(0.12),
|
||||||
|
);
|
||||||
|
|
||||||
|
/// Creates a [TopBarThemeExtensionDefault] from a dark [ThemeData]
|
||||||
|
factory TopBarThemeExtensionDefault.dark() =>
|
||||||
|
TopBarThemeExtensionDefault.from(ThemeData.dark());
|
||||||
|
|
||||||
|
/// Creates a [TopBarThemeExtensionDefault] from a light [ThemeData]
|
||||||
|
factory TopBarThemeExtensionDefault.light() =>
|
||||||
|
TopBarThemeExtensionDefault.from(ThemeData.light());
|
||||||
|
}
|
||||||
@@ -15,3 +15,4 @@
|
|||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
export './entities/entities.dart';
|
export './entities/entities.dart';
|
||||||
|
export './theme_extensions/theme_extensions.dart';
|
||||||
|
|||||||
@@ -17,7 +17,11 @@
|
|||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:wyatt_ui_components/wyatt_ui_components.dart';
|
import 'package:wyatt_ui_components/wyatt_ui_components.dart';
|
||||||
|
|
||||||
|
/// {@template button_component}
|
||||||
|
/// A button component is a component that can be pressed.
|
||||||
|
/// {@endtemplate}
|
||||||
abstract class ButtonComponent extends Component {
|
abstract class ButtonComponent extends Component {
|
||||||
|
/// {@macro button_component}
|
||||||
const ButtonComponent({
|
const ButtonComponent({
|
||||||
this.disabledStyle,
|
this.disabledStyle,
|
||||||
this.normalStyle,
|
this.normalStyle,
|
||||||
|
|||||||
@@ -18,7 +18,11 @@ import 'package:flutter/widgets.dart';
|
|||||||
import 'package:wyatt_ui_components/src/core/utils/multi_color.dart';
|
import 'package:wyatt_ui_components/src/core/utils/multi_color.dart';
|
||||||
import 'package:wyatt_ui_components/src/domain/entities/theme_style.dart';
|
import 'package:wyatt_ui_components/src/domain/entities/theme_style.dart';
|
||||||
|
|
||||||
|
/// {@template button_style}
|
||||||
|
/// Base class for button styles.
|
||||||
|
/// {@endtemplate}
|
||||||
abstract class ButtonStyle<T> extends ThemeStyle<T> {
|
abstract class ButtonStyle<T> extends ThemeStyle<T> {
|
||||||
|
/// {@macro button_style}
|
||||||
const ButtonStyle({
|
const ButtonStyle({
|
||||||
this.radius,
|
this.radius,
|
||||||
this.padding,
|
this.padding,
|
||||||
@@ -27,6 +31,7 @@ abstract class ButtonStyle<T> extends ThemeStyle<T> {
|
|||||||
this.borderColors,
|
this.borderColors,
|
||||||
this.stroke,
|
this.stroke,
|
||||||
this.shadow,
|
this.shadow,
|
||||||
|
this.animationDuration,
|
||||||
});
|
});
|
||||||
|
|
||||||
/// Button radius
|
/// Button radius
|
||||||
@@ -64,9 +69,15 @@ abstract class ButtonStyle<T> extends ThemeStyle<T> {
|
|||||||
/// Default to `null`
|
/// Default to `null`
|
||||||
final BoxShadow? shadow;
|
final BoxShadow? shadow;
|
||||||
|
|
||||||
|
/// Animation duration
|
||||||
|
///
|
||||||
|
/// Default to `Duration.zero`
|
||||||
|
final Duration? animationDuration;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String toString() =>
|
String toString() =>
|
||||||
'ButtonStyle(radius: $radius, padding: $padding, foregroundColors: '
|
'ButtonStyle(radius: $radius, padding: $padding, foregroundColors: '
|
||||||
'$foregroundColors, backgroundColors: $backgroundColors, borderColors: '
|
'$foregroundColors, backgroundColors: $backgroundColors, borderColors: '
|
||||||
'$borderColors, stroke: $stroke, shadow: $shadow)';
|
'$borderColors, stroke: $stroke, shadow: $shadow, '
|
||||||
|
'animationDuration: $animationDuration)';
|
||||||
}
|
}
|
||||||
|
|||||||
+10
-3
@@ -24,10 +24,10 @@ part 'file_selection_button_component.g.dart';
|
|||||||
abstract class FileSelectionButtonComponent extends ButtonComponent
|
abstract class FileSelectionButtonComponent extends ButtonComponent
|
||||||
with CopyWithMixin<$FileSelectionButtonComponentCWProxy> {
|
with CopyWithMixin<$FileSelectionButtonComponentCWProxy> {
|
||||||
const FileSelectionButtonComponent({
|
const FileSelectionButtonComponent({
|
||||||
this.mainAxisSize = MainAxisSize.min,
|
this.mainAxisSize,
|
||||||
this.leading,
|
this.leading,
|
||||||
this.title,
|
this.title,
|
||||||
this.subTitle,
|
this.subtitle,
|
||||||
super.disabledStyle,
|
super.disabledStyle,
|
||||||
super.normalStyle,
|
super.normalStyle,
|
||||||
super.hoveredStyle,
|
super.hoveredStyle,
|
||||||
@@ -64,8 +64,15 @@ abstract class FileSelectionButtonComponent extends ButtonComponent
|
|||||||
@override
|
@override
|
||||||
FileSelectionButtonStyle? get invalidStyle;
|
FileSelectionButtonStyle? get invalidStyle;
|
||||||
|
|
||||||
|
/// The main axis size of the button
|
||||||
final MainAxisSize? mainAxisSize;
|
final MainAxisSize? mainAxisSize;
|
||||||
|
|
||||||
|
/// The leading widget of the button
|
||||||
final Widget? leading;
|
final Widget? leading;
|
||||||
|
|
||||||
|
/// The title of the button
|
||||||
final TextWrapper? title;
|
final TextWrapper? title;
|
||||||
final TextWrapper? subTitle;
|
|
||||||
|
/// The subtitle of the button
|
||||||
|
final TextWrapper? subtitle;
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -10,7 +10,7 @@ abstract class $FileSelectionButtonComponentCWProxy {
|
|||||||
FileSelectionButtonComponent mainAxisSize(MainAxisSize? mainAxisSize);
|
FileSelectionButtonComponent mainAxisSize(MainAxisSize? mainAxisSize);
|
||||||
FileSelectionButtonComponent leading(Widget? leading);
|
FileSelectionButtonComponent leading(Widget? leading);
|
||||||
FileSelectionButtonComponent title(TextWrapper? title);
|
FileSelectionButtonComponent title(TextWrapper? title);
|
||||||
FileSelectionButtonComponent subTitle(TextWrapper? subTitle);
|
FileSelectionButtonComponent subtitle(TextWrapper? subtitle);
|
||||||
FileSelectionButtonComponent disabledStyle(
|
FileSelectionButtonComponent disabledStyle(
|
||||||
ButtonStyle<dynamic>? disabledStyle);
|
ButtonStyle<dynamic>? disabledStyle);
|
||||||
FileSelectionButtonComponent normalStyle(ButtonStyle<dynamic>? normalStyle);
|
FileSelectionButtonComponent normalStyle(ButtonStyle<dynamic>? normalStyle);
|
||||||
@@ -30,7 +30,7 @@ abstract class $FileSelectionButtonComponentCWProxy {
|
|||||||
MainAxisSize? mainAxisSize,
|
MainAxisSize? mainAxisSize,
|
||||||
Widget? leading,
|
Widget? leading,
|
||||||
TextWrapper? title,
|
TextWrapper? title,
|
||||||
TextWrapper? subTitle,
|
TextWrapper? subtitle,
|
||||||
ButtonStyle<dynamic>? disabledStyle,
|
ButtonStyle<dynamic>? disabledStyle,
|
||||||
ButtonStyle<dynamic>? normalStyle,
|
ButtonStyle<dynamic>? normalStyle,
|
||||||
ButtonStyle<dynamic>? hoveredStyle,
|
ButtonStyle<dynamic>? hoveredStyle,
|
||||||
|
|||||||
+28
-12
@@ -16,14 +16,21 @@
|
|||||||
|
|
||||||
import 'dart:ui';
|
import 'dart:ui';
|
||||||
|
|
||||||
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/widgets.dart';
|
import 'package:flutter/widgets.dart';
|
||||||
import 'package:wyatt_ui_components/src/core/utils/multi_color.dart';
|
import 'package:wyatt_ui_components/src/core/utils/multi_color.dart';
|
||||||
import 'package:wyatt_ui_components/src/domain/entities/buttons/button_style.dart';
|
import 'package:wyatt_ui_components/src/domain/entities/buttons/button_style.dart';
|
||||||
|
|
||||||
|
/// {@template file_selection_button_style}
|
||||||
|
/// File selection button style.
|
||||||
|
///
|
||||||
|
/// This style is used for the FileSelectionButton widget.
|
||||||
|
/// {@endtemplate}
|
||||||
class FileSelectionButtonStyle extends ButtonStyle<FileSelectionButtonStyle> {
|
class FileSelectionButtonStyle extends ButtonStyle<FileSelectionButtonStyle> {
|
||||||
|
/// {@macro file_selection_button_style}
|
||||||
const FileSelectionButtonStyle({
|
const FileSelectionButtonStyle({
|
||||||
this.title,
|
this.titleStyle,
|
||||||
this.subTitle,
|
this.subtitleStyle,
|
||||||
super.radius,
|
super.radius,
|
||||||
super.padding,
|
super.padding,
|
||||||
super.foregroundColors,
|
super.foregroundColors,
|
||||||
@@ -31,6 +38,7 @@ class FileSelectionButtonStyle extends ButtonStyle<FileSelectionButtonStyle> {
|
|||||||
super.borderColors,
|
super.borderColors,
|
||||||
super.stroke,
|
super.stroke,
|
||||||
super.shadow,
|
super.shadow,
|
||||||
|
super.animationDuration,
|
||||||
});
|
});
|
||||||
|
|
||||||
/// Merges non-null `b` attributes in `a`
|
/// Merges non-null `b` attributes in `a`
|
||||||
@@ -46,8 +54,8 @@ class FileSelectionButtonStyle extends ButtonStyle<FileSelectionButtonStyle> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return a.copyWith(
|
return a.copyWith(
|
||||||
title: b.title,
|
titleStyle: b.titleStyle,
|
||||||
subTitle: b.subTitle,
|
subtitleStyle: b.subtitleStyle,
|
||||||
radius: b.radius,
|
radius: b.radius,
|
||||||
padding: b.padding,
|
padding: b.padding,
|
||||||
foregroundColors: b.foregroundColors,
|
foregroundColors: b.foregroundColors,
|
||||||
@@ -55,6 +63,7 @@ class FileSelectionButtonStyle extends ButtonStyle<FileSelectionButtonStyle> {
|
|||||||
borderColors: b.borderColors,
|
borderColors: b.borderColors,
|
||||||
stroke: b.stroke,
|
stroke: b.stroke,
|
||||||
shadow: b.shadow,
|
shadow: b.shadow,
|
||||||
|
animationDuration: b.animationDuration,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -69,8 +78,8 @@ class FileSelectionButtonStyle extends ButtonStyle<FileSelectionButtonStyle> {
|
|||||||
}
|
}
|
||||||
// b.copyWith to return b attributes even if they are not lerped
|
// b.copyWith to return b attributes even if they are not lerped
|
||||||
return b.copyWith(
|
return b.copyWith(
|
||||||
title: TextStyle.lerp(a.title, b.title, t),
|
titleStyle: TextStyle.lerp(a.titleStyle, b.titleStyle, t),
|
||||||
subTitle: TextStyle.lerp(a.title, b.title, t),
|
subtitleStyle: TextStyle.lerp(a.subtitleStyle, b.subtitleStyle, t),
|
||||||
foregroundColors: MultiColor.lerp(
|
foregroundColors: MultiColor.lerp(
|
||||||
a.foregroundColors,
|
a.foregroundColors,
|
||||||
b.foregroundColors,
|
b.foregroundColors,
|
||||||
@@ -90,18 +99,23 @@ class FileSelectionButtonStyle extends ButtonStyle<FileSelectionButtonStyle> {
|
|||||||
padding: EdgeInsetsGeometry.lerp(a.padding, b.padding, t),
|
padding: EdgeInsetsGeometry.lerp(a.padding, b.padding, t),
|
||||||
stroke: lerpDouble(a.stroke, b.stroke, t),
|
stroke: lerpDouble(a.stroke, b.stroke, t),
|
||||||
shadow: BoxShadow.lerp(a.shadow, b.shadow, t),
|
shadow: BoxShadow.lerp(a.shadow, b.shadow, t),
|
||||||
|
animationDuration: lerpDuration(
|
||||||
|
a.animationDuration ?? Duration.zero,
|
||||||
|
b.animationDuration ?? Duration.zero,
|
||||||
|
t,
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Title text style
|
/// Title text style
|
||||||
///
|
///
|
||||||
/// Default to `TextTheme.labelLarge`
|
/// Default to `TextTheme.labelLarge`
|
||||||
final TextStyle? title;
|
final TextStyle? titleStyle;
|
||||||
|
|
||||||
/// Sub title text style
|
/// Sub title text style
|
||||||
///
|
///
|
||||||
/// Default to `TextTheme.labelSmall`
|
/// Default to `TextTheme.labelSmall`
|
||||||
final TextStyle? subTitle;
|
final TextStyle? subtitleStyle;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
FileSelectionButtonStyle? mergeWith(FileSelectionButtonStyle? other) =>
|
FileSelectionButtonStyle? mergeWith(FileSelectionButtonStyle? other) =>
|
||||||
@@ -109,8 +123,8 @@ class FileSelectionButtonStyle extends ButtonStyle<FileSelectionButtonStyle> {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
FileSelectionButtonStyle? copyWith({
|
FileSelectionButtonStyle? copyWith({
|
||||||
TextStyle? title,
|
TextStyle? titleStyle,
|
||||||
TextStyle? subTitle,
|
TextStyle? subtitleStyle,
|
||||||
BorderRadiusGeometry? radius,
|
BorderRadiusGeometry? radius,
|
||||||
EdgeInsetsGeometry? padding,
|
EdgeInsetsGeometry? padding,
|
||||||
MultiColor? foregroundColors,
|
MultiColor? foregroundColors,
|
||||||
@@ -118,10 +132,11 @@ class FileSelectionButtonStyle extends ButtonStyle<FileSelectionButtonStyle> {
|
|||||||
MultiColor? borderColors,
|
MultiColor? borderColors,
|
||||||
double? stroke,
|
double? stroke,
|
||||||
BoxShadow? shadow,
|
BoxShadow? shadow,
|
||||||
|
Duration? animationDuration,
|
||||||
}) =>
|
}) =>
|
||||||
FileSelectionButtonStyle(
|
FileSelectionButtonStyle(
|
||||||
title: title ?? this.title,
|
titleStyle: titleStyle ?? this.titleStyle,
|
||||||
subTitle: subTitle ?? this.subTitle,
|
subtitleStyle: subtitleStyle ?? this.subtitleStyle,
|
||||||
radius: radius ?? this.radius,
|
radius: radius ?? this.radius,
|
||||||
padding: padding ?? this.padding,
|
padding: padding ?? this.padding,
|
||||||
foregroundColors: foregroundColors ?? this.foregroundColors,
|
foregroundColors: foregroundColors ?? this.foregroundColors,
|
||||||
@@ -129,5 +144,6 @@ class FileSelectionButtonStyle extends ButtonStyle<FileSelectionButtonStyle> {
|
|||||||
borderColors: borderColors ?? this.borderColors,
|
borderColors: borderColors ?? this.borderColors,
|
||||||
stroke: stroke ?? this.stroke,
|
stroke: stroke ?? this.stroke,
|
||||||
shadow: shadow ?? this.shadow,
|
shadow: shadow ?? this.shadow,
|
||||||
|
animationDuration: animationDuration ?? this.animationDuration,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
+7
@@ -54,8 +54,15 @@ abstract class FlatButtonComponent extends ButtonComponent
|
|||||||
@override
|
@override
|
||||||
FlatButtonStyle? get tappedStyle;
|
FlatButtonStyle? get tappedStyle;
|
||||||
|
|
||||||
|
/// The main axis size of the button.
|
||||||
final MainAxisSize? mainAxisSize;
|
final MainAxisSize? mainAxisSize;
|
||||||
|
|
||||||
|
/// The prefix widget of the button.
|
||||||
final Widget? prefix;
|
final Widget? prefix;
|
||||||
|
|
||||||
|
/// The suffix widget of the button.
|
||||||
final Widget? suffix;
|
final Widget? suffix;
|
||||||
|
|
||||||
|
/// The label widget of the button.
|
||||||
final TextWrapper? label;
|
final TextWrapper? label;
|
||||||
}
|
}
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user