Compare commits

..

No commits in common. 'master' and 'WORK-EKA' have entirely different histories.

@ -1,43 +0,0 @@
kind: pipeline
type: docker
name: JustMusic
trigger:
event:
- push
steps:
- name: app-build
image: ghcr.io/cirruslabs/flutter:3.13.9
commands:
- cd ./Sources/justMUSIC/
- flutter build apk
- name: build-web
image: ghcr.io/cirruslabs/flutter:3.13.9
environment:
FIREBASE_TOKEN:
from_secret: FIREBASE_TOKEN
commands:
- cd ./Sources/justMUSIC/
- flutter build web --web-renderer canvaskit
- curl -sL https://firebase.tools | bash
- firebase deploy --token $${FIREBASE_TOKEN}
when:
branch:
- PROD-WEB
- name: code-analysis
image: ghcr.io/cirruslabs/flutter:3.13.9
environment:
SONAR_TOKEN:
from_secret: SONAR_TOKEN
commands:
- export SONAR_SCANNER_VERSION=4.7.0.2747
- export SONAR_SCANNER_HOME=$HOME/.sonar/sonar-scanner-$SONAR_SCANNER_VERSION-linux
- curl --create-dirs -sSLo $HOME/.sonar/sonar-scanner.zip https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-$SONAR_SCANNER_VERSION-linux.zip
- unzip -o $HOME/.sonar/sonar-scanner.zip -d $HOME/.sonar/
- export PATH=$SONAR_SCANNER_HOME/bin:$PATH
- export SONAR_SCANNER_OPTS="-server"
- sonar-scanner -D sonar.projectKey=JustMusic -D sonar.sources=./Sources/justMUSIC -D sonar.host.url=https://codefirst.iut.uca.fr/sonar
ddepends_on: [app-build]

@ -12,144 +12,6 @@
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/.pub" /> <excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/.dart_tool" /> <excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/build" /> <excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/firebase_core/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/firebase_core/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/firebase_core/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/geolocator_apple/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/geolocator_apple/example/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/geolocator_apple/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/google_sign_in_ios/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/google_sign_in_ios/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/google_sign_in_ios/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/firebase_auth/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/firebase_auth/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/firebase_auth/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/sqflite/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/sqflite/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/sqflite/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/sqflite/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/sqflite/example/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/sqflite/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/path_provider_foundation/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/path_provider_foundation/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/path_provider_foundation/example/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/image_picker_ios/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/image_picker_ios/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/image_picker_ios/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/firebase_core/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/firebase_core/example/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/firebase_core/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/firebase_storage/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/firebase_storage/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/firebase_storage/example/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/google_sign_in_ios/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/google_sign_in_ios/example/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/google_sign_in_ios/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/path_provider_foundation/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/path_provider_foundation/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/path_provider_foundation/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/firebase_auth/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/firebase_auth/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/firebase_auth/example/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/cloud_firestore/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/cloud_firestore/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/cloud_firestore/example/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/image_picker_ios/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/image_picker_ios/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/image_picker_ios/example/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/geolocator_apple/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/geolocator_apple/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/geolocator_apple/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/cloud_firestore/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/cloud_firestore/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/cloud_firestore/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/firebase_messaging/example/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/firebase_messaging/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/firebase_messaging/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/flutter_keyboard_visibility/example/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/flutter_keyboard_visibility/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/flutter_keyboard_visibility/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/audioplayers_darwin/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/audioplayers_darwin/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/audioplayers_darwin/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/firebase_messaging/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/firebase_messaging/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/firebase_messaging/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/firebase_storage/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/firebase_storage/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/firebase_storage/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/flutter_keyboard_visibility/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/flutter_keyboard_visibility/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justmusic/ios/.symlinks/plugins/flutter_keyboard_visibility/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/firebase_storage/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/firebase_storage/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/firebase_storage/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/cloud_firestore/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/cloud_firestore/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/cloud_firestore/example/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/firebase_auth/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/firebase_auth/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/firebase_auth/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/path_provider_foundation/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/path_provider_foundation/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/path_provider_foundation/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/firebase_auth/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/firebase_auth/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/firebase_auth/example/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/google_sign_in_ios/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/google_sign_in_ios/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/google_sign_in_ios/example/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/audioplayers_darwin/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/audioplayers_darwin/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/audioplayers_darwin/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/firebase_storage/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/firebase_storage/example/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/firebase_storage/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/geolocator_apple/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/geolocator_apple/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/geolocator_apple/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/flutter_keyboard_visibility/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/flutter_keyboard_visibility/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/flutter_keyboard_visibility/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/sqflite/example/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/sqflite/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/sqflite/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/firebase_messaging/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/firebase_messaging/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/firebase_messaging/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/firebase_core/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/firebase_core/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/firebase_core/example/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/flutter_keyboard_visibility/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/flutter_keyboard_visibility/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/flutter_keyboard_visibility/example/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/firebase_messaging/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/firebase_messaging/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/firebase_messaging/example/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/firebase_core/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/firebase_core/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/firebase_core/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/sqflite/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/sqflite/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/sqflite/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/cloud_firestore/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/cloud_firestore/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/cloud_firestore/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/image_picker_ios/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/image_picker_ios/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/image_picker_ios/example/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/image_picker_ios/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/image_picker_ios/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/image_picker_ios/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/google_sign_in_ios/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/google_sign_in_ios/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/google_sign_in_ios/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/geolocator_apple/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/geolocator_apple/example/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/geolocator_apple/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/path_provider_foundation/example/build" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/path_provider_foundation/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/Sources/justMUSIC/ios/.symlinks/plugins/path_provider_foundation/example/.dart_tool" />
</content> </content>
<orderEntry type="inheritedJdk" /> <orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />

File diff suppressed because it is too large Load Diff

@ -1,27 +1,26 @@
<component name="libraryTable"> <component name="libraryTable">
<library name="Dart SDK"> <library name="Dart SDK">
<CLASSES> <CLASSES>
<root url="file:///opt/homebrew/opt/dart/libexec/lib/async" /> <root url="file://$PROJECT_DIR$/../../../../src/flutter/bin/cache/dart-sdk/lib/async" />
<root url="file:///opt/homebrew/opt/dart/libexec/lib/cli" /> <root url="file://$PROJECT_DIR$/../../../../src/flutter/bin/cache/dart-sdk/lib/cli" />
<root url="file:///opt/homebrew/opt/dart/libexec/lib/collection" /> <root url="file://$PROJECT_DIR$/../../../../src/flutter/bin/cache/dart-sdk/lib/collection" />
<root url="file:///opt/homebrew/opt/dart/libexec/lib/convert" /> <root url="file://$PROJECT_DIR$/../../../../src/flutter/bin/cache/dart-sdk/lib/convert" />
<root url="file:///opt/homebrew/opt/dart/libexec/lib/core" /> <root url="file://$PROJECT_DIR$/../../../../src/flutter/bin/cache/dart-sdk/lib/core" />
<root url="file:///opt/homebrew/opt/dart/libexec/lib/developer" /> <root url="file://$PROJECT_DIR$/../../../../src/flutter/bin/cache/dart-sdk/lib/developer" />
<root url="file:///opt/homebrew/opt/dart/libexec/lib/ffi" /> <root url="file://$PROJECT_DIR$/../../../../src/flutter/bin/cache/dart-sdk/lib/ffi" />
<root url="file:///opt/homebrew/opt/dart/libexec/lib/html" /> <root url="file://$PROJECT_DIR$/../../../../src/flutter/bin/cache/dart-sdk/lib/html" />
<root url="file:///opt/homebrew/opt/dart/libexec/lib/indexed_db" /> <root url="file://$PROJECT_DIR$/../../../../src/flutter/bin/cache/dart-sdk/lib/indexed_db" />
<root url="file:///opt/homebrew/opt/dart/libexec/lib/io" /> <root url="file://$PROJECT_DIR$/../../../../src/flutter/bin/cache/dart-sdk/lib/io" />
<root url="file:///opt/homebrew/opt/dart/libexec/lib/isolate" /> <root url="file://$PROJECT_DIR$/../../../../src/flutter/bin/cache/dart-sdk/lib/isolate" />
<root url="file:///opt/homebrew/opt/dart/libexec/lib/js" /> <root url="file://$PROJECT_DIR$/../../../../src/flutter/bin/cache/dart-sdk/lib/js" />
<root url="file:///opt/homebrew/opt/dart/libexec/lib/js_interop" /> <root url="file://$PROJECT_DIR$/../../../../src/flutter/bin/cache/dart-sdk/lib/js_interop" />
<root url="file:///opt/homebrew/opt/dart/libexec/lib/js_interop_unsafe" /> <root url="file://$PROJECT_DIR$/../../../../src/flutter/bin/cache/dart-sdk/lib/js_util" />
<root url="file:///opt/homebrew/opt/dart/libexec/lib/js_util" /> <root url="file://$PROJECT_DIR$/../../../../src/flutter/bin/cache/dart-sdk/lib/math" />
<root url="file:///opt/homebrew/opt/dart/libexec/lib/math" /> <root url="file://$PROJECT_DIR$/../../../../src/flutter/bin/cache/dart-sdk/lib/mirrors" />
<root url="file:///opt/homebrew/opt/dart/libexec/lib/mirrors" /> <root url="file://$PROJECT_DIR$/../../../../src/flutter/bin/cache/dart-sdk/lib/svg" />
<root url="file:///opt/homebrew/opt/dart/libexec/lib/svg" /> <root url="file://$PROJECT_DIR$/../../../../src/flutter/bin/cache/dart-sdk/lib/typed_data" />
<root url="file:///opt/homebrew/opt/dart/libexec/lib/typed_data" /> <root url="file://$PROJECT_DIR$/../../../../src/flutter/bin/cache/dart-sdk/lib/web_audio" />
<root url="file:///opt/homebrew/opt/dart/libexec/lib/web_audio" /> <root url="file://$PROJECT_DIR$/../../../../src/flutter/bin/cache/dart-sdk/lib/web_gl" />
<root url="file:///opt/homebrew/opt/dart/libexec/lib/web_gl" />
</CLASSES> </CLASSES>
<JAVADOC /> <JAVADOC />
<SOURCES /> <SOURCES />

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 844 KiB

@ -4,10 +4,8 @@
--- ---
&nbsp; ![Firebase](https://img.shields.io/badge/Firebase-FFCA28.svg?style=for-the-badge&logo=Firebase&logoColor=black)
&nbsp; ![Dart](https://img.shields.io/badge/Dart-000?style=for-the-badge&logo=dart&logoColor=blue&color=white) &nbsp; ![Dart](https://img.shields.io/badge/Dart-000?style=for-the-badge&logo=dart&logoColor=blue&color=white)
&nbsp; ![Flutter](https://img.shields.io/badge/Flutter-000?style=for-the-badge&logo=flutter&logoColor=blue&color=white) &nbsp; ![Flutter](https://img.shields.io/badge/Flutter-000?style=for-the-badge&logo=flutter&logoColor=blue&color=white)
&nbsp; ![Spotify](https://img.shields.io/badge/Spotify-1DB954.svg?style=for-the-badge&logo=Spotify&logoColor=white)
--- ---
@ -33,15 +31,13 @@ JustMusic est un projet collaboratif à but lucratif pour Android/IOS utilisant
C'est un réseau social donc l'utilisateur pourra publier et commenter des posts. Il pourra s'abonner à d'autre utilisateurs pour voir leurs post sur son fil d'actualité. C'est un réseau social donc l'utilisateur pourra publier et commenter des posts. Il pourra s'abonner à d'autre utilisateurs pour voir leurs post sur son fil d'actualité.
**Lien pour tester la version web:** [Just Music](https://justmusic-435d5.web.app) 🎶
## Répartition du Gitlab ## Répartition du Gitlab
La racine de notre gitlab est composé de deux dossier essentielles au projet: La racine de notre gitlab est composé de deux dossier essentielles au projet:
[**Sources**](Sources) : **Code de l'application** [**src**](src) : **Code de l'application**
[**Documentation**](Documentation) : **Regroupe l'entièreté de la documentation** [**doc**](doc) : **Regroupe l'entièreté de la documentation**
</br> </br>
@ -49,33 +45,10 @@ La racine de notre gitlab est composé de deux dossier essentielles au projet:
## Fonctionnement ## Fonctionnement
<div align = center>
<img src="Documentation/Images/Overview.png" />
</div>
### Feeds
Une fois authentifié vous aurez la possibilité de voir les posts capsules de vos amis, de voir les musiques qu'ils mettent en avant accompagner éventuellement d'une image, d'une description, de leurs localisations... (Vous n'avez pas d'amis, pas de soucis, cliquer seulement sur l'icon en haut a gauche de la page pour suivre nimporte quel personne que vous voulez), Mais aussi juste d'un simple mouvement du doigt swiper pour vous retrouvez sur la page Discovery où vous verrais les posts récents en tendance dans le monde 🌎
Amuser vous à cliquer sur les posts pour ecouter la music mais aussi connaître les détails et savoir qui a commenter 💬 et liker ❤️. Si la musique vous plaît enregistrer la et vous la retrouverez lorsque vous aurez envie de poster.
### Post
Pour participer à cette aventure musicale avec des gens du monde entier, cliquez simplement sur l'icône JustMusic. Gardez à l'esprit que vous ne pourrez poster qu'une fois par jour, donc réfléchissez bien à la musique que vous souhaitez mettre en avant. N'hésitez pas à ajouter une photo et une description pour rendre votre publication plus chaleureuse 😃.
### Profil
Consultez l'aperçu de votre profil pour savoir combien de personnes vous suivent et que vous suivez. Vous pouvez également voir le nombre de capsules que vous avez publiées, personnaliser les paramètres de votre compte selon vos préférences, et explorez votre historique de capsules pour vous remémorer vos précédentes publications 🎧.
#### Bonne aventure musicale 🎵🌟
## Deploiement ## Deploiement
- [x] &nbsp; ![IOS](https://img.shields.io/badge/IOS-000?style=for-the-badge&logo=apple&logoColor=black&color=white) - [x] &nbsp; ![IOS](https://img.shields.io/badge/IOS-000?style=for-the-badge&logo=apple&logoColor=black&color=white)
- [x] &nbsp; ![Android](https://img.shields.io/badge/Android-000?style=for-the-badge&logo=android&logoColor=white&color=green) - [x] &nbsp; ![Android](https://img.shields.io/badge/Android-000?style=for-the-badge&logo=android&logoColor=white&color=green)
- [x] &nbsp; ![Safari](https://img.shields.io/badge/Safari-000000.svg?style=for-the-badge&logo=Safari&logoColor=white)
## Techniciens ## Techniciens
@ -84,10 +57,10 @@ Consultez l'aperçu de votre profil pour savoir combien de personnes vous suiven
<img src ="https://codefirst.iut.uca.fr/git/avatars/6a3835d734392fccff3949f7c82a63b9?size=870" height="50px"> <img src ="https://codefirst.iut.uca.fr/git/avatars/6a3835d734392fccff3949f7c82a63b9?size=870" height="50px">
</a> </a>
<a href = "https://codefirst.iut.uca.fr/git/emre.kartal"> <a href = "https://codefirst.iut.uca.fr/git/emre.kartal">
<img src ="https://codefirst.iut.uca.fr/git/avatars/1ff65c9c5ab0e8c8883fb48adbcf972f?size=870" height="50px"> <img src ="https://codefirst.iut.uca.fr/git/avatars/402cf312e853192f42c0135a888725c2?size=870" height="50px">
</a> </a>
<a href = "https://codefirst.iut.uca.fr/git/david.d_almeida"> <a href = "https://codefirst.iut.uca.fr/git/david.d_almeida">
<img src ="https://codefirst.iut.uca.fr/git/avatars/a16fa2dc52ceae18d8923c91121caa66?size=870" height="50px"> <img src ="https://codefirst.iut.uca.fr/git/avatars/0f8eaaad1e26d3de644ca522eccaea7c?size=870" height="50px">
</a> </a>
<a href = "https://codefirst.iut.uca.fr/git/rayhan.hassou"> <a href = "https://codefirst.iut.uca.fr/git/rayhan.hassou">
<img src ="https://codefirst.iut.uca.fr/git/avatars/84062b2bb326d9e9154a9859b375e599?size=870" height="50px"> <img src ="https://codefirst.iut.uca.fr/git/avatars/84062b2bb326d9e9154a9859b375e599?size=870" height="50px">

@ -1,5 +0,0 @@
{
"projects": {
"default": "justmusic-435d5"
}
}

@ -30,7 +30,6 @@ migrate_working_dir/
.packages .packages
.pub-cache/ .pub-cache/
.pub/ .pub/
lib/values/keys.dart
/build/ /build/
# Symbolication related # Symbolication related

@ -1,11 +1,11 @@
# This file tracks properties of this Flutter project. # This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc. # Used by Flutter tool to assess capabilities and perform upgrades etc.
# #
# This file should be version controlled and should not be manually edited. # This file should be version controlled.
version: version:
revision: "db7ef5bf9f59442b0e200a90587e8fa5e0c6336a" revision: 18a827f3933c19f51862dde3fa472197683249d6
channel: "stable" channel: stable
project_type: app project_type: app
@ -13,26 +13,26 @@ project_type: app
migration: migration:
platforms: platforms:
- platform: root - platform: root
create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a create_revision: 18a827f3933c19f51862dde3fa472197683249d6
base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a base_revision: 18a827f3933c19f51862dde3fa472197683249d6
- platform: android - platform: android
create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a create_revision: 18a827f3933c19f51862dde3fa472197683249d6
base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a base_revision: 18a827f3933c19f51862dde3fa472197683249d6
- platform: ios - platform: ios
create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a create_revision: 18a827f3933c19f51862dde3fa472197683249d6
base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a base_revision: 18a827f3933c19f51862dde3fa472197683249d6
- platform: linux - platform: linux
create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a create_revision: 18a827f3933c19f51862dde3fa472197683249d6
base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a base_revision: 18a827f3933c19f51862dde3fa472197683249d6
- platform: macos - platform: macos
create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a create_revision: 18a827f3933c19f51862dde3fa472197683249d6
base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a base_revision: 18a827f3933c19f51862dde3fa472197683249d6
- platform: web - platform: web
create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a create_revision: 18a827f3933c19f51862dde3fa472197683249d6
base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a base_revision: 18a827f3933c19f51862dde3fa472197683249d6
- platform: windows - platform: windows
create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a create_revision: 18a827f3933c19f51862dde3fa472197683249d6
base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a base_revision: 18a827f3933c19f51862dde3fa472197683249d6
# User provided section # User provided section

@ -1,5 +1,4 @@
def localProperties = new Properties() def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties') def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) { if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader -> localPropertiesFile.withReader('UTF-8') { reader ->
@ -24,15 +23,12 @@ if (flutterVersionName == null) {
apply plugin: 'com.android.application' apply plugin: 'com.android.application'
apply plugin: 'kotlin-android' apply plugin: 'kotlin-android'
apply plugin: 'com.google.gms.google-services'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
android { android {
namespace "com.justdev.justmusic"
compileSdkVersion 33 compileSdkVersion 33
ndkVersion flutter.ndkVersion ndkVersion flutter.ndkVersion
compileOptions { compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8 sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8
@ -48,10 +44,10 @@ android {
defaultConfig { defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.justdev.justmusic" applicationId "com.example.justmusic"
// You can update the following values to match your application needs. // You can update the following values to match your application needs.
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration.
minSdkVersion 19 minSdkVersion flutter.minSdkVersion
targetSdkVersion flutter.targetSdkVersion targetSdkVersion flutter.targetSdkVersion
versionCode flutterVersionCode.toInteger() versionCode flutterVersionCode.toInteger()
versionName flutterVersionName versionName flutterVersionName
@ -70,10 +66,6 @@ flutter {
source '../..' source '../..'
} }
dependencies { dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation(platform("com.google.firebase:firebase-bom:32.2.0"))
implementation 'com.google.firebase:firebase-analytics-ktx'
} }
apply plugin: 'com.google.gms.google-services'

@ -1,98 +0,0 @@
{
"project_info": {
"project_number": "994903990520",
"project_id": "justmusic-435d5",
"storage_bucket": "justmusic-435d5.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:994903990520:android:02a445b6561bf2820a9b0d",
"android_client_info": {
"package_name": "com.example.justmusic"
}
},
"oauth_client": [
{
"client_id": "994903990520-a3im0ap1qqrs6j2u97v302v119e4jgbo.apps.googleusercontent.com",
"client_type": 1,
"android_info": {
"package_name": "com.example.justmusic",
"certificate_hash": "b08e11598626ceeaaf75c6a3f71dce7af0846a07"
}
},
{
"client_id": "994903990520-tbbnoqubdo6eeo1d5iv94g7dofsdjnma.apps.googleusercontent.com",
"client_type": 1,
"android_info": {
"package_name": "com.example.justmusic",
"certificate_hash": "883f6f500f08166c76009ec56ce77d98bb9fb831"
}
},
{
"client_id": "994903990520-rdk6ldrmbi71ddqt84qfhtuficm7ngon.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyCjkofl0nvfzQqRZPv_-H99WoyYa7O660g"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "994903990520-9jsnq9ipdn7smk7tlbdd20i7j6sl3jcd.apps.googleusercontent.com",
"client_type": 3
},
{
"client_id": "994903990520-n6jd98ena56kb1tvtrd67tvb5et3nfbf.apps.googleusercontent.com",
"client_type": 2,
"ios_info": {
"bundle_id": "com.example.justmusic"
}
}
]
}
}
},
{
"client_info": {
"mobilesdk_app_id": "1:994903990520:android:056f0394b9fb14410a9b0d",
"android_client_info": {
"package_name": "com.justdev.justmusic"
}
},
"oauth_client": [
{
"client_id": "994903990520-rdk6ldrmbi71ddqt84qfhtuficm7ngon.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyCjkofl0nvfzQqRZPv_-H99WoyYa7O660g"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "994903990520-9jsnq9ipdn7smk7tlbdd20i7j6sl3jcd.apps.googleusercontent.com",
"client_type": 3
},
{
"client_id": "994903990520-n6jd98ena56kb1tvtrd67tvb5et3nfbf.apps.googleusercontent.com",
"client_type": 2,
"ios_info": {
"bundle_id": "com.example.justmusic"
}
}
]
}
}
}
],
"configuration_version": "1"
}

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

@ -1,10 +1,9 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.justdev.justmusic"> package="com.example.justmusic">
<application <application
android:label="JustMUSIC" android:label="justmusic"
android:name="${applicationName}" android:name="${applicationName}"
android:icon="@mipmap/ic_launcher"> android:icon="@mipmap/ic_launcher">
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"
android:exported="true" android:exported="true"
@ -31,8 +30,5 @@ package="com.justdev.justmusic">
<meta-data <meta-data
android:name="flutterEmbedding" android:name="flutterEmbedding"
android:value="2" /> android:value="2" />
</application> </application>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
</manifest> </manifest>

@ -1,25 +0,0 @@
// Generated file.
//
// If you wish to remove Flutter's multidex support, delete this entire file.
//
// Modifications to this file should be done in a copy under a different name
// as this file may be regenerated.
package io.flutter.app;
import android.app.Application;
import android.content.Context;
import androidx.annotation.CallSuper;
import androidx.multidex.MultiDex;
/**
* Extension of {@link android.app.Application}, adding multidex support.
*/
public class FlutterMultiDexApplication extends Application {
@Override
@CallSuper
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}

@ -1,4 +1,4 @@
package com.justdev.justmusic package com.example.justmusic
import io.flutter.embedding.android.FlutterActivity import io.flutter.embedding.android.FlutterActivity

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

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 544 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 442 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 KiB

After

Width:  |  Height:  |  Size: 721 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

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

@ -7,7 +7,6 @@ buildscript {
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:7.1.2' classpath 'com.android.tools.build:gradle:7.1.2'
classpath 'com.google.gms:google-services:4.3.15'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
} }
} }

@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1 +0,0 @@
{"nm":"newScene","ddd":0,"h":506,"w":246,"meta":{"g":"LottieFiles Figma v38"},"layers":[{"ty":4,"nm":"","sr":1,"st":0,"op":55,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"nm":"","it":[{"ty":"sh","bm":0,"hd":false,"nm":"","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[18.31699999999998,-14.117000000000019],[0,0],[4.924000000000007,-5.552999999999997],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-2.176000000000016,8.12299999999999],[0,0],[-4.0330000000000155,15.050000000000011],[0,0],[0,0]],"o":[[-15.049000000000007,-4.031999999999982],[0,0],[-8.12299999999999,-2.1759999999999877],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[7.271000000000015,-1.488999999999976],[0,0],[21.383999999999986,-8.803999999999974],[0,0],[0,0],[0,0]],"v":[[229.562,323.522],[173.235,338.521],[161.993,335.509],[142.666,343.701],[136.075,351.133],[146.207,353.848],[156.351,356.566],[164.059,369.916],[171.766,383.266],[169.048,393.41],[166.333,403.542],[176.065,401.551],[192.823,388.908],[195.836,377.666],[236.989,336.385],[239.707,326.24],[229.562,323.522]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[1.0389999999999873,-3.8759999999999764],[3.8770000000000095,1.038000000000011],[-1.0389999999999873,3.8770000000000095],[-3.8770000000000095,-1.0389999999999873]],"o":[[3.8760000000000048,1.038000000000011],[-1.0390000000000157,3.8770000000000095],[-3.8770000000000095,-1.0389999999999873],[1.038000000000011,-3.8770000000000095],[0,0]],"v":[[205.989,339.775],[211.127,348.674],[202.227,353.813],[197.089,344.913],[205.989,339.775]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[-7.138000000000005,4.120999999999981],[0,0],[0,0]],"o":[[0,0],[-6.4269999999999925,3.7110000000000127],[0,0],[0,0],[0,0],[0,0]],"v":[[149.08,369.664],[144.63,372.233],[132.909,387.9],[152.338,385.583],[156.788,383.014],[149.08,369.664]]}}},{"ty":"fl","bm":0,"hd":false,"nm":"","c":{"a":0,"k":[0.0471,0.0471,0.0471]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"r":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[90],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[90],"t":5},{"s":[0],"t":25}]},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":5},{"s":[100],"t":25}]}}]}],"ind":1}],"v":"5.7.0","fr":60,"op":55,"ip":0,"assets":[]}

@ -1,3 +0,0 @@
<svg width="24" height="25" viewBox="0 0 24 25" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M1.75444 22.8646C3.50887 24.619 6.3326 24.619 11.9801 24.619C17.6275 24.619 20.4513 24.619 22.2056 22.8646C23.9601 21.1102 23.9601 18.2864 23.9601 12.639C23.9601 6.99153 23.9601 4.16781 22.2056 2.41338C20.4513 0.658936 17.6275 0.658936 11.9801 0.658936C6.3326 0.658936 3.50887 0.658936 1.75444 2.41338C0 4.16781 0 6.99153 0 12.639C0 18.2864 0 21.1102 1.75444 22.8646ZM12.8785 9.0449C12.8785 8.54868 12.4762 8.1464 11.98 8.1464C11.4838 8.1464 11.0815 8.54868 11.0815 9.0449V11.7404H8.38597C7.88974 11.7404 7.48746 12.1427 7.48746 12.6389C7.48746 13.1351 7.88974 13.5374 8.38597 13.5374H11.0815V16.2329C11.0815 16.7291 11.4838 17.1314 11.98 17.1314C12.4762 17.1314 12.8785 16.7291 12.8785 16.2329V13.5374H15.574C16.0702 13.5374 16.4725 13.1351 16.4725 12.6389C16.4725 12.1427 16.0702 11.7404 15.574 11.7404H12.8785V9.0449Z" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 989 B

@ -1,4 +0,0 @@
<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.1376 26.2263L12.4586 25.6842C12.9728 24.8153 13.23 24.3809 13.6396 24.1386C14.0493 23.8962 14.5835 23.8791 15.6522 23.8449C16.6542 23.8129 17.3278 23.7254 17.9035 23.487C19.1159 22.9847 20.0791 22.0215 20.5812 20.8092C20.958 19.8999 20.958 18.7473 20.958 16.4418V15.4523C20.958 12.213 20.958 10.5934 20.2288 9.4036C19.8208 8.73784 19.261 8.1781 18.5953 7.77012C17.4056 7.04102 15.7859 7.04102 12.5466 7.04102H9.57799C6.33874 7.04102 4.71912 7.04102 3.52933 7.77012C2.86357 8.1781 2.30383 8.73784 1.89586 9.4036C1.16675 10.5934 1.16675 12.213 1.16675 15.4523V16.4418C1.16675 18.7473 1.16675 19.8999 1.54337 20.8092C2.04555 22.0215 3.00875 22.9847 4.2211 23.487C4.79692 23.7254 5.47037 23.8129 6.4724 23.8449C7.54104 23.8791 8.07536 23.8962 8.48499 24.1386C8.89463 24.3809 9.15178 24.8153 9.66608 25.6842L9.98698 26.2263C10.4651 27.0341 11.6595 27.0341 12.1376 26.2263ZM15.3917 16.9366C16.0748 16.9366 16.6286 16.3828 16.6286 15.6996C16.6286 15.0165 16.0748 14.4627 15.3917 14.4627C14.7085 14.4627 14.1547 15.0165 14.1547 15.6996C14.1547 16.3828 14.7085 16.9366 15.3917 16.9366ZM12.2993 15.6996C12.2993 16.3828 11.7455 16.9366 11.0623 16.9366C10.3792 16.9366 9.82539 16.3828 9.82539 15.6996C9.82539 15.0165 10.3792 14.4627 11.0623 14.4627C11.7455 14.4627 12.2993 15.0165 12.2993 15.6996ZM6.73301 16.9366C7.41616 16.9366 7.96997 16.3828 7.96997 15.6996C7.96997 15.0165 7.41616 14.4627 6.73301 14.4627C6.04987 14.4627 5.49606 15.0165 5.49606 15.6996C5.49606 16.3828 6.04987 16.9366 6.73301 16.9366Z" fill="white"/>
<path opacity="0.5" d="M18.0669 1.16675C19.545 1.16674 20.7203 1.16673 21.6629 1.25636C22.6294 1.34826 23.4467 1.54089 24.1747 1.987C24.9237 2.44597 25.5533 3.07568 26.0123 3.82466C26.4584 4.55264 26.651 5.36984 26.743 6.33639C26.8326 7.279 26.8326 8.45442 26.8326 9.93242V10.9419C26.8326 11.9938 26.8326 12.8305 26.7862 13.5089C26.7389 14.2031 26.6401 14.799 26.4088 15.3571C25.8439 16.7211 24.7603 17.8047 23.3964 18.3696C23.3623 18.3837 23.328 18.3974 23.2936 18.4105C23.129 18.4734 22.9878 18.5274 22.864 18.5676H20.9389C20.9578 17.9854 20.9578 17.2921 20.9578 16.4419V15.4523C20.9578 12.2131 20.9578 10.5935 20.2286 9.40368C19.8207 8.73792 19.2609 8.17818 18.5952 7.77021C17.4054 7.0411 15.7857 7.0411 12.5465 7.0411H9.57783C8.42819 7.0411 7.48256 7.0411 6.68774 7.07369V5.14823C6.72591 5.01598 6.7782 4.86439 6.83956 4.68646C6.94394 4.38384 7.07586 4.09764 7.24315 3.82466C7.70211 3.07568 8.33182 2.44597 9.0808 1.987C9.80878 1.54089 10.626 1.34826 11.5925 1.25636C12.5352 1.16673 13.7105 1.16674 15.1885 1.16675H18.0669Z" fill="#8B8B8B"/>
</svg>

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 345 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

@ -1,3 +0,0 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M10.1328 22.8086C6.62274 20.1042 2.5 16.9278 2.5 11.4214C2.5 5.34276 9.3752 1.03189 15 6.87585L17.5 9.37416C17.8661 9.74021 18.4597 9.7401 18.8259 9.37391C19.1919 9.00774 19.1917 8.41415 18.8256 8.0481L16.4106 5.63396C21.7106 1.75393 27.5 5.84338 27.5 11.4214C27.5 16.9278 23.3772 20.1042 19.8671 22.8086C19.5024 23.0897 19.1441 23.3657 18.7979 23.6387C17.5 24.6618 16.25 25.6251 15 25.6251C13.75 25.6251 12.5 24.6618 11.2022 23.6387C10.8559 23.3657 10.4977 23.0897 10.1328 22.8086Z" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 611 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 983 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

@ -1,5 +0,0 @@
<svg width="27" height="26" viewBox="0 0 27 26" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M24.7935 13.0001C24.7935 7.01699 19.9432 2.16675 13.9602 2.16675C7.97708 2.16675 3.12683 7.01699 3.12683 13.0001C3.12683 18.9831 7.97708 23.8334 13.9602 23.8334C19.9432 23.8334 24.7935 18.9831 24.7935 13.0001Z" fill="white"/>
<path d="M13.9602 6.77075C14.4089 6.77075 14.7727 7.13452 14.7727 7.58325V14.0833C14.7727 14.532 14.4089 14.8958 13.9602 14.8958C13.5115 14.8958 13.1477 14.532 13.1477 14.0833V7.58325C13.1477 7.13452 13.5115 6.77075 13.9602 6.77075Z" fill="#515151"/>
<path d="M13.9602 18.4167C14.5585 18.4167 15.0435 17.9317 15.0435 17.3333C15.0435 16.735 14.5585 16.25 13.9602 16.25C13.3618 16.25 12.8768 16.735 12.8768 17.3333C12.8768 17.9317 13.3618 18.4167 13.9602 18.4167Z" fill="#515151"/>
</svg>

Before

Width:  |  Height:  |  Size: 818 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

@ -1,4 +0,0 @@
<svg width="31" height="30" viewBox="0 0 31 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M16.6571 21.8771C16.4792 22.0747 16.226 22.1875 15.9602 22.1875C15.6945 22.1875 15.4412 22.0747 15.2633 21.8771L11.5134 17.7105C11.167 17.3256 11.1982 16.7329 11.5831 16.3865C11.9679 16.0401 12.5607 16.0714 12.9071 16.4561L15.0227 18.8069V8.75002H5.96021C5.77152 8.75006 5.51671 8.7501 5.33521 8.74756V16.25C5.33521 20.9641 5.3352 23.3211 6.79967 24.7855C8.26414 26.25 10.6212 26.25 15.3352 26.25H16.5852C21.2992 26.25 23.6563 26.25 25.1207 24.7855C26.5852 23.3211 26.5852 20.9641 26.5852 16.25V8.74756C26.4037 8.7501 26.1488 8.75006 25.9602 8.75002H16.8977V18.8069L19.0133 16.4561C19.3597 16.0714 19.9525 16.0401 20.3373 16.3865C20.7222 16.7329 20.7535 17.3256 20.4071 17.7105L16.6571 21.8771Z" fill="white"/>
<path d="M3.46021 6.25C3.46021 5.07149 3.46021 4.48224 3.82632 4.11611C4.19244 3.75 4.78169 3.75 5.9602 3.75H25.9602C27.1387 3.75 27.728 3.75 28.0941 4.11611C28.4602 4.48224 28.4602 5.07149 28.4602 6.25C28.4602 7.42851 28.4602 8.01776 28.0941 8.38389C27.728 8.75 27.1387 8.75 25.9602 8.75H5.9602C4.78169 8.75 4.19244 8.75 3.82632 8.38389C3.46021 8.01776 3.46021 7.42851 3.46021 6.25Z" fill="#515151"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

@ -1,17 +0,0 @@
{
"hosting": {
"site": "justmusic-435d5",
"public": "build/web",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
]
}
}

@ -1,2 +1 @@
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
#include "Generated.xcconfig" #include "Generated.xcconfig"

@ -1,2 +1 @@
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
#include "Generated.xcconfig" #include "Generated.xcconfig"

@ -1,44 +0,0 @@
# Uncomment this line to define a global platform for your project
platform :ios, '11.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
project 'Runner', {
'Debug' => :debug,
'Profile' => :release,
'Release' => :release,
}
def flutter_root
generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
unless File.exist?(generated_xcode_build_settings_path)
raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
end
File.foreach(generated_xcode_build_settings_path) do |line|
matches = line.match(/FLUTTER_ROOT\=(.*)/)
return matches[1].strip if matches
end
raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
end
require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
flutter_ios_podfile_setup
target 'Runner' do
use_frameworks!
use_modular_headers!
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
target 'RunnerTests' do
inherit! :search_paths
end
end
post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
end
end

@ -1,958 +0,0 @@
PODS:
- abseil/algorithm (1.20220623.0):
- abseil/algorithm/algorithm (= 1.20220623.0)
- abseil/algorithm/container (= 1.20220623.0)
- abseil/algorithm/algorithm (1.20220623.0):
- abseil/base/config
- abseil/algorithm/container (1.20220623.0):
- abseil/algorithm/algorithm
- abseil/base/core_headers
- abseil/meta/type_traits
- abseil/base (1.20220623.0):
- abseil/base/atomic_hook (= 1.20220623.0)
- abseil/base/base (= 1.20220623.0)
- abseil/base/base_internal (= 1.20220623.0)
- abseil/base/config (= 1.20220623.0)
- abseil/base/core_headers (= 1.20220623.0)
- abseil/base/dynamic_annotations (= 1.20220623.0)
- abseil/base/endian (= 1.20220623.0)
- abseil/base/errno_saver (= 1.20220623.0)
- abseil/base/fast_type_id (= 1.20220623.0)
- abseil/base/log_severity (= 1.20220623.0)
- abseil/base/malloc_internal (= 1.20220623.0)
- abseil/base/prefetch (= 1.20220623.0)
- abseil/base/pretty_function (= 1.20220623.0)
- abseil/base/raw_logging_internal (= 1.20220623.0)
- abseil/base/spinlock_wait (= 1.20220623.0)
- abseil/base/strerror (= 1.20220623.0)
- abseil/base/throw_delegate (= 1.20220623.0)
- abseil/base/atomic_hook (1.20220623.0):
- abseil/base/config
- abseil/base/core_headers
- abseil/base/base (1.20220623.0):
- abseil/base/atomic_hook
- abseil/base/base_internal
- abseil/base/config
- abseil/base/core_headers
- abseil/base/dynamic_annotations
- abseil/base/log_severity
- abseil/base/raw_logging_internal
- abseil/base/spinlock_wait
- abseil/meta/type_traits
- abseil/base/base_internal (1.20220623.0):
- abseil/base/config
- abseil/meta/type_traits
- abseil/base/config (1.20220623.0)
- abseil/base/core_headers (1.20220623.0):
- abseil/base/config
- abseil/base/dynamic_annotations (1.20220623.0):
- abseil/base/config
- abseil/base/core_headers
- abseil/base/endian (1.20220623.0):
- abseil/base/base
- abseil/base/config
- abseil/base/core_headers
- abseil/base/errno_saver (1.20220623.0):
- abseil/base/config
- abseil/base/fast_type_id (1.20220623.0):
- abseil/base/config
- abseil/base/log_severity (1.20220623.0):
- abseil/base/config
- abseil/base/core_headers
- abseil/base/malloc_internal (1.20220623.0):
- abseil/base/base
- abseil/base/base_internal
- abseil/base/config
- abseil/base/core_headers
- abseil/base/dynamic_annotations
- abseil/base/raw_logging_internal
- abseil/base/prefetch (1.20220623.0):
- abseil/base/config
- abseil/base/pretty_function (1.20220623.0)
- abseil/base/raw_logging_internal (1.20220623.0):
- abseil/base/atomic_hook
- abseil/base/config
- abseil/base/core_headers
- abseil/base/errno_saver
- abseil/base/log_severity
- abseil/base/spinlock_wait (1.20220623.0):
- abseil/base/base_internal
- abseil/base/core_headers
- abseil/base/errno_saver
- abseil/base/strerror (1.20220623.0):
- abseil/base/config
- abseil/base/core_headers
- abseil/base/errno_saver
- abseil/base/throw_delegate (1.20220623.0):
- abseil/base/config
- abseil/base/raw_logging_internal
- abseil/cleanup/cleanup (1.20220623.0):
- abseil/base/config
- abseil/base/core_headers
- abseil/cleanup/cleanup_internal
- abseil/cleanup/cleanup_internal (1.20220623.0):
- abseil/base/base_internal
- abseil/base/core_headers
- abseil/utility/utility
- abseil/container/common (1.20220623.0):
- abseil/meta/type_traits
- abseil/types/optional
- abseil/container/compressed_tuple (1.20220623.0):
- abseil/utility/utility
- abseil/container/container_memory (1.20220623.0):
- abseil/base/config
- abseil/memory/memory
- abseil/meta/type_traits
- abseil/utility/utility
- abseil/container/fixed_array (1.20220623.0):
- abseil/algorithm/algorithm
- abseil/base/config
- abseil/base/core_headers
- abseil/base/dynamic_annotations
- abseil/base/throw_delegate
- abseil/container/compressed_tuple
- abseil/memory/memory
- abseil/container/flat_hash_map (1.20220623.0):
- abseil/algorithm/container
- abseil/base/core_headers
- abseil/container/container_memory
- abseil/container/hash_function_defaults
- abseil/container/raw_hash_map
- abseil/memory/memory
- abseil/container/flat_hash_set (1.20220623.0):
- abseil/algorithm/container
- abseil/base/core_headers
- abseil/container/container_memory
- abseil/container/hash_function_defaults
- abseil/container/raw_hash_set
- abseil/memory/memory
- abseil/container/hash_function_defaults (1.20220623.0):
- abseil/base/config
- abseil/hash/hash
- abseil/strings/cord
- abseil/strings/strings
- abseil/container/hash_policy_traits (1.20220623.0):
- abseil/meta/type_traits
- abseil/container/hashtable_debug_hooks (1.20220623.0):
- abseil/base/config
- abseil/container/hashtablez_sampler (1.20220623.0):
- abseil/base/base
- abseil/base/config
- abseil/base/core_headers
- abseil/debugging/stacktrace
- abseil/memory/memory
- abseil/profiling/exponential_biased
- abseil/profiling/sample_recorder
- abseil/synchronization/synchronization
- abseil/utility/utility
- abseil/container/inlined_vector (1.20220623.0):
- abseil/algorithm/algorithm
- abseil/base/core_headers
- abseil/base/throw_delegate
- abseil/container/inlined_vector_internal
- abseil/memory/memory
- abseil/container/inlined_vector_internal (1.20220623.0):
- abseil/base/core_headers
- abseil/container/compressed_tuple
- abseil/memory/memory
- abseil/meta/type_traits
- abseil/types/span
- abseil/container/layout (1.20220623.0):
- abseil/base/config
- abseil/base/core_headers
- abseil/meta/type_traits
- abseil/strings/strings
- abseil/types/span
- abseil/utility/utility
- abseil/container/raw_hash_map (1.20220623.0):
- abseil/base/throw_delegate
- abseil/container/container_memory
- abseil/container/raw_hash_set
- abseil/container/raw_hash_set (1.20220623.0):
- abseil/base/config
- abseil/base/core_headers
- abseil/base/endian
- abseil/base/prefetch
- abseil/container/common
- abseil/container/compressed_tuple
- abseil/container/container_memory
- abseil/container/hash_policy_traits
- abseil/container/hashtable_debug_hooks
- abseil/container/hashtablez_sampler
- abseil/memory/memory
- abseil/meta/type_traits
- abseil/numeric/bits
- abseil/utility/utility
- abseil/debugging/debugging_internal (1.20220623.0):
- abseil/base/config
- abseil/base/core_headers
- abseil/base/dynamic_annotations
- abseil/base/errno_saver
- abseil/base/raw_logging_internal
- abseil/debugging/demangle_internal (1.20220623.0):
- abseil/base/base
- abseil/base/config
- abseil/base/core_headers
- abseil/debugging/stacktrace (1.20220623.0):
- abseil/base/config
- abseil/base/core_headers
- abseil/debugging/debugging_internal
- abseil/debugging/symbolize (1.20220623.0):
- abseil/base/base
- abseil/base/config
- abseil/base/core_headers
- abseil/base/dynamic_annotations
- abseil/base/malloc_internal
- abseil/base/raw_logging_internal
- abseil/debugging/debugging_internal
- abseil/debugging/demangle_internal
- abseil/strings/strings
- abseil/functional/any_invocable (1.20220623.0):
- abseil/base/base_internal
- abseil/base/config
- abseil/base/core_headers
- abseil/meta/type_traits
- abseil/utility/utility
- abseil/functional/bind_front (1.20220623.0):
- abseil/base/base_internal
- abseil/container/compressed_tuple
- abseil/meta/type_traits
- abseil/utility/utility
- abseil/functional/function_ref (1.20220623.0):
- abseil/base/base_internal
- abseil/base/core_headers
- abseil/meta/type_traits
- abseil/hash/city (1.20220623.0):
- abseil/base/config
- abseil/base/core_headers
- abseil/base/endian
- abseil/hash/hash (1.20220623.0):
- abseil/base/config
- abseil/base/core_headers
- abseil/base/endian
- abseil/container/fixed_array
- abseil/functional/function_ref
- abseil/hash/city
- abseil/hash/low_level_hash
- abseil/meta/type_traits
- abseil/numeric/int128
- abseil/strings/strings
- abseil/types/optional
- abseil/types/variant
- abseil/utility/utility
- abseil/hash/low_level_hash (1.20220623.0):
- abseil/base/config
- abseil/base/endian
- abseil/numeric/bits
- abseil/numeric/int128
- abseil/memory (1.20220623.0):
- abseil/memory/memory (= 1.20220623.0)
- abseil/memory/memory (1.20220623.0):
- abseil/base/core_headers
- abseil/meta/type_traits
- abseil/meta (1.20220623.0):
- abseil/meta/type_traits (= 1.20220623.0)
- abseil/meta/type_traits (1.20220623.0):
- abseil/base/config
- abseil/numeric/bits (1.20220623.0):
- abseil/base/config
- abseil/base/core_headers
- abseil/numeric/int128 (1.20220623.0):
- abseil/base/config
- abseil/base/core_headers
- abseil/numeric/bits
- abseil/numeric/representation (1.20220623.0):
- abseil/base/config
- abseil/profiling/exponential_biased (1.20220623.0):
- abseil/base/config
- abseil/base/core_headers
- abseil/profiling/sample_recorder (1.20220623.0):
- abseil/base/config
- abseil/base/core_headers
- abseil/synchronization/synchronization
- abseil/time/time
- abseil/random/distributions (1.20220623.0):
- abseil/base/base_internal
- abseil/base/config
- abseil/base/core_headers
- abseil/meta/type_traits
- abseil/numeric/bits
- abseil/random/internal/distribution_caller
- abseil/random/internal/fast_uniform_bits
- abseil/random/internal/fastmath
- abseil/random/internal/generate_real
- abseil/random/internal/iostream_state_saver
- abseil/random/internal/traits
- abseil/random/internal/uniform_helper
- abseil/random/internal/wide_multiply
- abseil/strings/strings
- abseil/random/internal/distribution_caller (1.20220623.0):
- abseil/base/config
- abseil/base/fast_type_id
- abseil/utility/utility
- abseil/random/internal/fast_uniform_bits (1.20220623.0):
- abseil/base/config
- abseil/meta/type_traits
- abseil/random/internal/traits
- abseil/random/internal/fastmath (1.20220623.0):
- abseil/numeric/bits
- abseil/random/internal/generate_real (1.20220623.0):
- abseil/meta/type_traits
- abseil/numeric/bits
- abseil/random/internal/fastmath
- abseil/random/internal/traits
- abseil/random/internal/iostream_state_saver (1.20220623.0):
- abseil/meta/type_traits
- abseil/numeric/int128
- abseil/random/internal/nonsecure_base (1.20220623.0):
- abseil/base/core_headers
- abseil/container/inlined_vector
- abseil/meta/type_traits
- abseil/random/internal/pool_urbg
- abseil/random/internal/salted_seed_seq
- abseil/random/internal/seed_material
- abseil/types/span
- abseil/random/internal/pcg_engine (1.20220623.0):
- abseil/base/config
- abseil/meta/type_traits
- abseil/numeric/bits
- abseil/numeric/int128
- abseil/random/internal/fastmath
- abseil/random/internal/iostream_state_saver
- abseil/random/internal/platform (1.20220623.0):
- abseil/base/config
- abseil/random/internal/pool_urbg (1.20220623.0):
- abseil/base/base
- abseil/base/config
- abseil/base/core_headers
- abseil/base/endian
- abseil/base/raw_logging_internal
- abseil/random/internal/randen
- abseil/random/internal/seed_material
- abseil/random/internal/traits
- abseil/random/seed_gen_exception
- abseil/types/span
- abseil/random/internal/randen (1.20220623.0):
- abseil/base/raw_logging_internal
- abseil/random/internal/platform
- abseil/random/internal/randen_hwaes
- abseil/random/internal/randen_slow
- abseil/random/internal/randen_engine (1.20220623.0):
- abseil/base/endian
- abseil/meta/type_traits
- abseil/random/internal/iostream_state_saver
- abseil/random/internal/randen
- abseil/random/internal/randen_hwaes (1.20220623.0):
- abseil/base/config
- abseil/random/internal/platform
- abseil/random/internal/randen_hwaes_impl
- abseil/random/internal/randen_hwaes_impl (1.20220623.0):
- abseil/base/config
- abseil/base/core_headers
- abseil/numeric/int128
- abseil/random/internal/platform
- abseil/random/internal/randen_slow (1.20220623.0):
- abseil/base/config
- abseil/base/core_headers
- abseil/base/endian
- abseil/numeric/int128
- abseil/random/internal/platform
- abseil/random/internal/salted_seed_seq (1.20220623.0):
- abseil/container/inlined_vector
- abseil/meta/type_traits
- abseil/random/internal/seed_material
- abseil/types/optional
- abseil/types/span
- abseil/random/internal/seed_material (1.20220623.0):
- abseil/base/core_headers
- abseil/base/dynamic_annotations
- abseil/base/raw_logging_internal
- abseil/random/internal/fast_uniform_bits
- abseil/strings/strings
- abseil/types/optional
- abseil/types/span
- abseil/random/internal/traits (1.20220623.0):
- abseil/base/config
- abseil/numeric/bits
- abseil/numeric/int128
- abseil/random/internal/uniform_helper (1.20220623.0):
- abseil/base/config
- abseil/meta/type_traits
- abseil/numeric/int128
- abseil/random/internal/traits
- abseil/random/internal/wide_multiply (1.20220623.0):
- abseil/base/config
- abseil/numeric/bits
- abseil/numeric/int128
- abseil/random/internal/traits
- abseil/random/random (1.20220623.0):
- abseil/random/distributions
- abseil/random/internal/nonsecure_base
- abseil/random/internal/pcg_engine
- abseil/random/internal/pool_urbg
- abseil/random/internal/randen_engine
- abseil/random/seed_sequences
- abseil/random/seed_gen_exception (1.20220623.0):
- abseil/base/config
- abseil/random/seed_sequences (1.20220623.0):
- abseil/base/config
- abseil/random/internal/pool_urbg
- abseil/random/internal/salted_seed_seq
- abseil/random/internal/seed_material
- abseil/random/seed_gen_exception
- abseil/types/span
- abseil/status/status (1.20220623.0):
- abseil/base/atomic_hook
- abseil/base/core_headers
- abseil/base/raw_logging_internal
- abseil/base/strerror
- abseil/container/inlined_vector
- abseil/debugging/stacktrace
- abseil/debugging/symbolize
- abseil/functional/function_ref
- abseil/strings/cord
- abseil/strings/str_format
- abseil/strings/strings
- abseil/types/optional
- abseil/status/statusor (1.20220623.0):
- abseil/base/base
- abseil/base/core_headers
- abseil/base/raw_logging_internal
- abseil/meta/type_traits
- abseil/status/status
- abseil/strings/strings
- abseil/types/variant
- abseil/utility/utility
- abseil/strings/cord (1.20220623.0):
- abseil/base/base
- abseil/base/config
- abseil/base/core_headers
- abseil/base/endian
- abseil/base/raw_logging_internal
- abseil/container/fixed_array
- abseil/container/inlined_vector
- abseil/functional/function_ref
- abseil/meta/type_traits
- abseil/numeric/bits
- abseil/strings/cord_internal
- abseil/strings/cordz_functions
- abseil/strings/cordz_info
- abseil/strings/cordz_statistics
- abseil/strings/cordz_update_scope
- abseil/strings/cordz_update_tracker
- abseil/strings/internal
- abseil/strings/str_format
- abseil/strings/strings
- abseil/types/optional
- abseil/types/span
- abseil/strings/cord_internal (1.20220623.0):
- abseil/base/base_internal
- abseil/base/config
- abseil/base/core_headers
- abseil/base/endian
- abseil/base/raw_logging_internal
- abseil/base/throw_delegate
- abseil/container/compressed_tuple
- abseil/container/inlined_vector
- abseil/container/layout
- abseil/functional/function_ref
- abseil/meta/type_traits
- abseil/strings/strings
- abseil/types/span
- abseil/strings/cordz_functions (1.20220623.0):
- abseil/base/config
- abseil/base/core_headers
- abseil/base/raw_logging_internal
- abseil/profiling/exponential_biased
- abseil/strings/cordz_handle (1.20220623.0):
- abseil/base/base
- abseil/base/config
- abseil/base/raw_logging_internal
- abseil/synchronization/synchronization
- abseil/strings/cordz_info (1.20220623.0):
- abseil/base/base
- abseil/base/config
- abseil/base/core_headers
- abseil/base/raw_logging_internal
- abseil/container/inlined_vector
- abseil/debugging/stacktrace
- abseil/strings/cord_internal
- abseil/strings/cordz_functions
- abseil/strings/cordz_handle
- abseil/strings/cordz_statistics
- abseil/strings/cordz_update_tracker
- abseil/synchronization/synchronization
- abseil/types/span
- abseil/strings/cordz_statistics (1.20220623.0):
- abseil/base/config
- abseil/strings/cordz_update_tracker
- abseil/strings/cordz_update_scope (1.20220623.0):
- abseil/base/config
- abseil/base/core_headers
- abseil/strings/cord_internal
- abseil/strings/cordz_info
- abseil/strings/cordz_update_tracker
- abseil/strings/cordz_update_tracker (1.20220623.0):
- abseil/base/config
- abseil/strings/internal (1.20220623.0):
- abseil/base/config
- abseil/base/core_headers
- abseil/base/endian
- abseil/base/raw_logging_internal
- abseil/meta/type_traits
- abseil/strings/str_format (1.20220623.0):
- abseil/strings/str_format_internal
- abseil/strings/str_format_internal (1.20220623.0):
- abseil/base/config
- abseil/base/core_headers
- abseil/functional/function_ref
- abseil/meta/type_traits
- abseil/numeric/bits
- abseil/numeric/int128
- abseil/numeric/representation
- abseil/strings/strings
- abseil/types/optional
- abseil/types/span
- abseil/utility/utility
- abseil/strings/strings (1.20220623.0):
- abseil/base/base
- abseil/base/config
- abseil/base/core_headers
- abseil/base/endian
- abseil/base/raw_logging_internal
- abseil/base/throw_delegate
- abseil/memory/memory
- abseil/meta/type_traits
- abseil/numeric/bits
- abseil/numeric/int128
- abseil/strings/internal
- abseil/synchronization/graphcycles_internal (1.20220623.0):
- abseil/base/base
- abseil/base/base_internal
- abseil/base/config
- abseil/base/core_headers
- abseil/base/malloc_internal
- abseil/base/raw_logging_internal
- abseil/synchronization/kernel_timeout_internal (1.20220623.0):
- abseil/base/core_headers
- abseil/base/raw_logging_internal
- abseil/time/time
- abseil/synchronization/synchronization (1.20220623.0):
- abseil/base/atomic_hook
- abseil/base/base
- abseil/base/base_internal
- abseil/base/config
- abseil/base/core_headers
- abseil/base/dynamic_annotations
- abseil/base/malloc_internal
- abseil/base/raw_logging_internal
- abseil/debugging/stacktrace
- abseil/debugging/symbolize
- abseil/synchronization/graphcycles_internal
- abseil/synchronization/kernel_timeout_internal
- abseil/time/time
- abseil/time (1.20220623.0):
- abseil/time/internal (= 1.20220623.0)
- abseil/time/time (= 1.20220623.0)
- abseil/time/internal (1.20220623.0):
- abseil/time/internal/cctz (= 1.20220623.0)
- abseil/time/internal/cctz (1.20220623.0):
- abseil/time/internal/cctz/civil_time (= 1.20220623.0)
- abseil/time/internal/cctz/time_zone (= 1.20220623.0)
- abseil/time/internal/cctz/civil_time (1.20220623.0):
- abseil/base/config
- abseil/time/internal/cctz/time_zone (1.20220623.0):
- abseil/base/config
- abseil/time/internal/cctz/civil_time
- abseil/time/time (1.20220623.0):
- abseil/base/base
- abseil/base/core_headers
- abseil/base/raw_logging_internal
- abseil/numeric/int128
- abseil/strings/strings
- abseil/time/internal/cctz/civil_time
- abseil/time/internal/cctz/time_zone
- abseil/types (1.20220623.0):
- abseil/types/any (= 1.20220623.0)
- abseil/types/bad_any_cast (= 1.20220623.0)
- abseil/types/bad_any_cast_impl (= 1.20220623.0)
- abseil/types/bad_optional_access (= 1.20220623.0)
- abseil/types/bad_variant_access (= 1.20220623.0)
- abseil/types/compare (= 1.20220623.0)
- abseil/types/optional (= 1.20220623.0)
- abseil/types/span (= 1.20220623.0)
- abseil/types/variant (= 1.20220623.0)
- abseil/types/any (1.20220623.0):
- abseil/base/config
- abseil/base/core_headers
- abseil/base/fast_type_id
- abseil/meta/type_traits
- abseil/types/bad_any_cast
- abseil/utility/utility
- abseil/types/bad_any_cast (1.20220623.0):
- abseil/base/config
- abseil/types/bad_any_cast_impl
- abseil/types/bad_any_cast_impl (1.20220623.0):
- abseil/base/config
- abseil/base/raw_logging_internal
- abseil/types/bad_optional_access (1.20220623.0):
- abseil/base/config
- abseil/base/raw_logging_internal
- abseil/types/bad_variant_access (1.20220623.0):
- abseil/base/config
- abseil/base/raw_logging_internal
- abseil/types/compare (1.20220623.0):
- abseil/base/core_headers
- abseil/meta/type_traits
- abseil/types/optional (1.20220623.0):
- abseil/base/base_internal
- abseil/base/config
- abseil/base/core_headers
- abseil/memory/memory
- abseil/meta/type_traits
- abseil/types/bad_optional_access
- abseil/utility/utility
- abseil/types/span (1.20220623.0):
- abseil/algorithm/algorithm
- abseil/base/core_headers
- abseil/base/throw_delegate
- abseil/meta/type_traits
- abseil/types/variant (1.20220623.0):
- abseil/base/base_internal
- abseil/base/config
- abseil/base/core_headers
- abseil/meta/type_traits
- abseil/types/bad_variant_access
- abseil/utility/utility
- abseil/utility/utility (1.20220623.0):
- abseil/base/base_internal
- abseil/base/config
- abseil/meta/type_traits
- AppAuth (1.6.2):
- AppAuth/Core (= 1.6.2)
- AppAuth/ExternalUserAgent (= 1.6.2)
- AppAuth/Core (1.6.2)
- AppAuth/ExternalUserAgent (1.6.2):
- AppAuth/Core
- audioplayers_darwin (0.0.1):
- Flutter
- BoringSSL-GRPC (0.0.24):
- BoringSSL-GRPC/Implementation (= 0.0.24)
- BoringSSL-GRPC/Interface (= 0.0.24)
- BoringSSL-GRPC/Implementation (0.0.24):
- BoringSSL-GRPC/Interface (= 0.0.24)
- BoringSSL-GRPC/Interface (0.0.24)
- cloud_firestore (4.8.4):
- Firebase/Firestore (= 10.12.0)
- firebase_core
- Flutter
- nanopb (< 2.30910.0, >= 2.30908.0)
- Firebase/Auth (10.12.0):
- Firebase/CoreOnly
- FirebaseAuth (~> 10.12.0)
- Firebase/CoreOnly (10.12.0):
- FirebaseCore (= 10.12.0)
- Firebase/Firestore (10.12.0):
- Firebase/CoreOnly
- FirebaseFirestore (~> 10.12.0)
- Firebase/Messaging (10.12.0):
- Firebase/CoreOnly
- FirebaseMessaging (~> 10.12.0)
- Firebase/Storage (10.12.0):
- Firebase/CoreOnly
- FirebaseStorage (~> 10.12.0)
- firebase_auth (4.7.2):
- Firebase/Auth (= 10.12.0)
- firebase_core
- Flutter
- firebase_core (2.15.0):
- Firebase/CoreOnly (= 10.12.0)
- Flutter
- firebase_messaging (14.6.5):
- Firebase/Messaging (= 10.12.0)
- firebase_core
- Flutter
- firebase_storage (11.2.5):
- Firebase/Storage (= 10.12.0)
- firebase_core
- Flutter
- FirebaseAppCheckInterop (10.14.0)
- FirebaseAuth (10.12.0):
- FirebaseAppCheckInterop (~> 10.0)
- FirebaseCore (~> 10.0)
- GoogleUtilities/AppDelegateSwizzler (~> 7.8)
- GoogleUtilities/Environment (~> 7.8)
- GTMSessionFetcher/Core (< 4.0, >= 2.1)
- FirebaseAuthInterop (10.14.0)
- FirebaseCore (10.12.0):
- FirebaseCoreInternal (~> 10.0)
- GoogleUtilities/Environment (~> 7.8)
- GoogleUtilities/Logger (~> 7.8)
- FirebaseCoreExtension (10.14.0):
- FirebaseCore (~> 10.0)
- FirebaseCoreInternal (10.14.0):
- "GoogleUtilities/NSData+zlib (~> 7.8)"
- FirebaseFirestore (10.12.0):
- abseil/algorithm (~> 1.20220623.0)
- abseil/base (~> 1.20220623.0)
- abseil/container/flat_hash_map (~> 1.20220623.0)
- abseil/memory (~> 1.20220623.0)
- abseil/meta (~> 1.20220623.0)
- abseil/strings/strings (~> 1.20220623.0)
- abseil/time (~> 1.20220623.0)
- abseil/types (~> 1.20220623.0)
- FirebaseCore (~> 10.0)
- "gRPC-C++ (~> 1.50.1)"
- leveldb-library (~> 1.22)
- nanopb (< 2.30910.0, >= 2.30908.0)
- FirebaseInstallations (10.14.0):
- FirebaseCore (~> 10.0)
- GoogleUtilities/Environment (~> 7.8)
- GoogleUtilities/UserDefaults (~> 7.8)
- PromisesObjC (~> 2.1)
- FirebaseMessaging (10.12.0):
- FirebaseCore (~> 10.0)
- FirebaseInstallations (~> 10.0)
- GoogleDataTransport (~> 9.2)
- GoogleUtilities/AppDelegateSwizzler (~> 7.8)
- GoogleUtilities/Environment (~> 7.8)
- GoogleUtilities/Reachability (~> 7.8)
- GoogleUtilities/UserDefaults (~> 7.8)
- nanopb (< 2.30910.0, >= 2.30908.0)
- FirebaseStorage (10.12.0):
- FirebaseAppCheckInterop (~> 10.0)
- FirebaseAuthInterop (~> 10.0)
- FirebaseCore (~> 10.0)
- FirebaseCoreExtension (~> 10.0)
- GTMSessionFetcher/Core (< 4.0, >= 2.1)
- Flutter (1.0.0)
- flutter_keyboard_visibility (0.0.1):
- Flutter
- FMDB (2.7.5):
- FMDB/standard (= 2.7.5)
- FMDB/standard (2.7.5)
- geolocator_apple (1.2.0):
- Flutter
- google_sign_in_ios (0.0.1):
- Flutter
- GoogleSignIn (~> 6.2)
- GoogleDataTransport (9.2.5):
- GoogleUtilities/Environment (~> 7.7)
- nanopb (< 2.30910.0, >= 2.30908.0)
- PromisesObjC (< 3.0, >= 1.2)
- GoogleSignIn (6.2.4):
- AppAuth (~> 1.5)
- GTMAppAuth (~> 1.3)
- GTMSessionFetcher/Core (< 3.0, >= 1.1)
- GoogleUtilities/AppDelegateSwizzler (7.11.5):
- GoogleUtilities/Environment
- GoogleUtilities/Logger
- GoogleUtilities/Network
- GoogleUtilities/Environment (7.11.5):
- PromisesObjC (< 3.0, >= 1.2)
- GoogleUtilities/Logger (7.11.5):
- GoogleUtilities/Environment
- GoogleUtilities/Network (7.11.5):
- GoogleUtilities/Logger
- "GoogleUtilities/NSData+zlib"
- GoogleUtilities/Reachability
- "GoogleUtilities/NSData+zlib (7.11.5)"
- GoogleUtilities/Reachability (7.11.5):
- GoogleUtilities/Logger
- GoogleUtilities/UserDefaults (7.11.5):
- GoogleUtilities/Logger
- "gRPC-C++ (1.50.1)":
- "gRPC-C++/Implementation (= 1.50.1)"
- "gRPC-C++/Interface (= 1.50.1)"
- "gRPC-C++/Implementation (1.50.1)":
- abseil/base/base (= 1.20220623.0)
- abseil/base/core_headers (= 1.20220623.0)
- abseil/cleanup/cleanup (= 1.20220623.0)
- abseil/container/flat_hash_map (= 1.20220623.0)
- abseil/container/flat_hash_set (= 1.20220623.0)
- abseil/container/inlined_vector (= 1.20220623.0)
- abseil/functional/any_invocable (= 1.20220623.0)
- abseil/functional/bind_front (= 1.20220623.0)
- abseil/functional/function_ref (= 1.20220623.0)
- abseil/hash/hash (= 1.20220623.0)
- abseil/memory/memory (= 1.20220623.0)
- abseil/meta/type_traits (= 1.20220623.0)
- abseil/random/random (= 1.20220623.0)
- abseil/status/status (= 1.20220623.0)
- abseil/status/statusor (= 1.20220623.0)
- abseil/strings/cord (= 1.20220623.0)
- abseil/strings/str_format (= 1.20220623.0)
- abseil/strings/strings (= 1.20220623.0)
- abseil/synchronization/synchronization (= 1.20220623.0)
- abseil/time/time (= 1.20220623.0)
- abseil/types/optional (= 1.20220623.0)
- abseil/types/span (= 1.20220623.0)
- abseil/types/variant (= 1.20220623.0)
- abseil/utility/utility (= 1.20220623.0)
- "gRPC-C++/Interface (= 1.50.1)"
- gRPC-Core (= 1.50.1)
- "gRPC-C++/Interface (1.50.1)"
- gRPC-Core (1.50.1):
- gRPC-Core/Implementation (= 1.50.1)
- gRPC-Core/Interface (= 1.50.1)
- gRPC-Core/Implementation (1.50.1):
- abseil/base/base (= 1.20220623.0)
- abseil/base/core_headers (= 1.20220623.0)
- abseil/container/flat_hash_map (= 1.20220623.0)
- abseil/container/flat_hash_set (= 1.20220623.0)
- abseil/container/inlined_vector (= 1.20220623.0)
- abseil/functional/any_invocable (= 1.20220623.0)
- abseil/functional/bind_front (= 1.20220623.0)
- abseil/functional/function_ref (= 1.20220623.0)
- abseil/hash/hash (= 1.20220623.0)
- abseil/memory/memory (= 1.20220623.0)
- abseil/meta/type_traits (= 1.20220623.0)
- abseil/random/random (= 1.20220623.0)
- abseil/status/status (= 1.20220623.0)
- abseil/status/statusor (= 1.20220623.0)
- abseil/strings/cord (= 1.20220623.0)
- abseil/strings/str_format (= 1.20220623.0)
- abseil/strings/strings (= 1.20220623.0)
- abseil/synchronization/synchronization (= 1.20220623.0)
- abseil/time/time (= 1.20220623.0)
- abseil/types/optional (= 1.20220623.0)
- abseil/types/span (= 1.20220623.0)
- abseil/types/variant (= 1.20220623.0)
- abseil/utility/utility (= 1.20220623.0)
- BoringSSL-GRPC (= 0.0.24)
- gRPC-Core/Interface (= 1.50.1)
- gRPC-Core/Interface (1.50.1)
- GTMAppAuth (1.3.1):
- AppAuth/Core (~> 1.6)
- GTMSessionFetcher/Core (< 3.0, >= 1.5)
- GTMSessionFetcher/Core (2.3.0)
- image_picker_ios (0.0.1):
- Flutter
- leveldb-library (1.22.2)
- nanopb (2.30909.0):
- nanopb/decode (= 2.30909.0)
- nanopb/encode (= 2.30909.0)
- nanopb/decode (2.30909.0)
- nanopb/encode (2.30909.0)
- path_provider_foundation (0.0.1):
- Flutter
- FlutterMacOS
- PromisesObjC (2.3.1)
- sqflite (0.0.3):
- Flutter
- FMDB (>= 2.7.5)
DEPENDENCIES:
- audioplayers_darwin (from `.symlinks/plugins/audioplayers_darwin/ios`)
- cloud_firestore (from `.symlinks/plugins/cloud_firestore/ios`)
- firebase_auth (from `.symlinks/plugins/firebase_auth/ios`)
- firebase_core (from `.symlinks/plugins/firebase_core/ios`)
- firebase_messaging (from `.symlinks/plugins/firebase_messaging/ios`)
- firebase_storage (from `.symlinks/plugins/firebase_storage/ios`)
- Flutter (from `Flutter`)
- flutter_keyboard_visibility (from `.symlinks/plugins/flutter_keyboard_visibility/ios`)
- geolocator_apple (from `.symlinks/plugins/geolocator_apple/ios`)
- google_sign_in_ios (from `.symlinks/plugins/google_sign_in_ios/ios`)
- image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`)
- path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
- sqflite (from `.symlinks/plugins/sqflite/ios`)
SPEC REPOS:
trunk:
- abseil
- AppAuth
- BoringSSL-GRPC
- Firebase
- FirebaseAppCheckInterop
- FirebaseAuth
- FirebaseAuthInterop
- FirebaseCore
- FirebaseCoreExtension
- FirebaseCoreInternal
- FirebaseFirestore
- FirebaseInstallations
- FirebaseMessaging
- FirebaseStorage
- FMDB
- GoogleDataTransport
- GoogleSignIn
- GoogleUtilities
- "gRPC-C++"
- gRPC-Core
- GTMAppAuth
- GTMSessionFetcher
- leveldb-library
- nanopb
- PromisesObjC
EXTERNAL SOURCES:
audioplayers_darwin:
:path: ".symlinks/plugins/audioplayers_darwin/ios"
cloud_firestore:
:path: ".symlinks/plugins/cloud_firestore/ios"
firebase_auth:
:path: ".symlinks/plugins/firebase_auth/ios"
firebase_core:
:path: ".symlinks/plugins/firebase_core/ios"
firebase_messaging:
:path: ".symlinks/plugins/firebase_messaging/ios"
firebase_storage:
:path: ".symlinks/plugins/firebase_storage/ios"
Flutter:
:path: Flutter
flutter_keyboard_visibility:
:path: ".symlinks/plugins/flutter_keyboard_visibility/ios"
geolocator_apple:
:path: ".symlinks/plugins/geolocator_apple/ios"
google_sign_in_ios:
:path: ".symlinks/plugins/google_sign_in_ios/ios"
image_picker_ios:
:path: ".symlinks/plugins/image_picker_ios/ios"
path_provider_foundation:
:path: ".symlinks/plugins/path_provider_foundation/darwin"
sqflite:
:path: ".symlinks/plugins/sqflite/ios"
SPEC CHECKSUMS:
abseil: 926fb7a82dc6d2b8e1f2ed7f3a718bce691d1e46
AppAuth: 3bb1d1cd9340bd09f5ed189fb00b1cc28e1e8570
audioplayers_darwin: 877d9a4d06331c5c374595e46e16453ac7eafa40
BoringSSL-GRPC: 3175b25143e648463a56daeaaa499c6cb86dad33
cloud_firestore: 005e157ad342dbfb2e461cb111a9020aa71bfb22
Firebase: 07150e75d142fb9399f6777fa56a187b17f833a0
firebase_auth: 3f7820b22557dd4a1b024f4d86947d1a0ff8a10f
firebase_core: e477125798fc37cd4ab43ca6a8536bf7e0929c00
firebase_messaging: 334d68c3a36b6d4d5cd91e4f42509e0d4ae49828
firebase_storage: d5c1b95383db1230d9fed88c76cb257d8d1ec1d6
FirebaseAppCheckInterop: c87f1d5421c852413dd936b2b2340b21e62501a0
FirebaseAuth: a66c1e14ec58f41d154a4b41ce1a23ea00ad4805
FirebaseAuthInterop: 23be77be1ca68e4bd15214f403f807a6ca70d7e0
FirebaseCore: f86a1394906b97ac445ae49c92552a9425831bed
FirebaseCoreExtension: 976638051b1a46b503afce7ec80277f9161f2040
FirebaseCoreInternal: d558159ee6cc4b823c2296ecc193de9f6d9a5bb3
FirebaseFirestore: f94c9541515fa4a49af52269bbc50349009424b4
FirebaseInstallations: f672b1eda64e6381c21d424a2f680a943fd83f3b
FirebaseMessaging: bb2c4f6422a753038fe137d90ae7c1af57251316
FirebaseStorage: 1d7ca8c8953fc61ccacaa7c612696b5402968a0d
Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854
flutter_keyboard_visibility: 0339d06371254c3eb25eeb90ba8d17dca8f9c069
FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
geolocator_apple: cc556e6844d508c95df1e87e3ea6fa4e58c50401
google_sign_in_ios: 1256ff9d941db546373826966720b0c24804bcdd
GoogleDataTransport: 54dee9d48d14580407f8f5fbf2f496e92437a2f2
GoogleSignIn: 5651ce3a61e56ca864160e79b484cd9ed3f49b7a
GoogleUtilities: 13e2c67ede716b8741c7989e26893d151b2b2084
"gRPC-C++": 0968bace703459fd3e5dcb0b2bed4c573dbff046
gRPC-Core: 17108291d84332196d3c8466b48f016fc17d816d
GTMAppAuth: 0ff230db599948a9ad7470ca667337803b3fc4dd
GTMSessionFetcher: 3a63d75eecd6aa32c2fc79f578064e1214dfdec2
image_picker_ios: 4a8aadfbb6dc30ad5141a2ce3832af9214a705b5
leveldb-library: f03246171cce0484482ec291f88b6d563699ee06
nanopb: b552cce312b6c8484180ef47159bc0f65a1f0431
path_provider_foundation: 29f094ae23ebbca9d3d0cec13889cd9060c0e943
PromisesObjC: c50d2056b5253dadbd6c2bea79b0674bd5a52fa4
sqflite: 31f7eba61e3074736dff8807a9b41581e4f7f15a
PODFILE CHECKSUM: 6b9eb94e9f98a329f2ef624b852a6e42d090af2b
COCOAPODS: 1.14.3

@ -3,32 +3,18 @@
archiveVersion = 1; archiveVersion = 1;
classes = { classes = {
}; };
objectVersion = 54; objectVersion = 50;
objects = { objects = {
/* Begin PBXBuildFile section */ /* Begin PBXBuildFile section */
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; };
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
7F7390F210456EB7AFF1CF93 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C7930A860EC8743E6A941D8D /* Pods_RunnerTests.framework */; };
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
C95EC3D52B114F7D00A316A2 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = C95EC3D42B114F7D00A316A2 /* GoogleService-Info.plist */; };
DE887488687930BD9A821E09 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 895D1BE06AED43E6E7367693 /* Pods_Runner.framework */; };
/* End PBXBuildFile section */ /* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 97C146E61CF9000F007C117D /* Project object */;
proxyType = 1;
remoteGlobalIDString = 97C146ED1CF9000F007C117D;
remoteInfo = Runner;
};
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */ /* Begin PBXCopyFilesBuildPhase section */
9705A1C41CF9048500538489 /* Embed Frameworks */ = { 9705A1C41CF9048500538489 /* Embed Frameworks */ = {
isa = PBXCopyFilesBuildPhase; isa = PBXCopyFilesBuildPhase;
@ -45,18 +31,10 @@
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; }; 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
160A1A0B7CBEFB8A0DF876C4 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
1E7A433994B49CDF1BE8DE4C /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = "<group>"; };
2E9E3F1B12DC0CA59072CF15 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = "<group>"; };
331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = "<group>"; };
331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
5216BB03E33101AC0F022F4F /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
895D1BE06AED43E6E7367693 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
9652689A75201F19A551B879 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = "<group>"; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
@ -64,39 +42,19 @@
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
C7930A860EC8743E6A941D8D /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
C95EC3D42B114F7D00A316A2 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; };
F782B307897A4B77B59D0897 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
/* End PBXFileReference section */ /* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */ /* Begin PBXFrameworksBuildPhase section */
472D7C2F33BD994B5AD25717 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
7F7390F210456EB7AFF1CF93 /* Pods_RunnerTests.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
97C146EB1CF9000F007C117D /* Frameworks */ = { 97C146EB1CF9000F007C117D /* Frameworks */ = {
isa = PBXFrameworksBuildPhase; isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
DE887488687930BD9A821E09 /* Pods_Runner.framework in Frameworks */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
/* End PBXFrameworksBuildPhase section */ /* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */ /* Begin PBXGroup section */
331C8082294A63A400263BE5 /* RunnerTests */ = {
isa = PBXGroup;
children = (
331C807B294A618700263BE5 /* RunnerTests.swift */,
);
path = RunnerTests;
sourceTree = "<group>";
};
9740EEB11CF90186004384FC /* Flutter */ = { 9740EEB11CF90186004384FC /* Flutter */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
@ -114,9 +72,6 @@
9740EEB11CF90186004384FC /* Flutter */, 9740EEB11CF90186004384FC /* Flutter */,
97C146F01CF9000F007C117D /* Runner */, 97C146F01CF9000F007C117D /* Runner */,
97C146EF1CF9000F007C117D /* Products */, 97C146EF1CF9000F007C117D /* Products */,
331C8082294A63A400263BE5 /* RunnerTests */,
E285F60DA3ED5F857F86301D /* Pods */,
C51FB947EEACC99574A07057 /* Frameworks */,
); );
sourceTree = "<group>"; sourceTree = "<group>";
}; };
@ -124,7 +79,6 @@
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
97C146EE1CF9000F007C117D /* Runner.app */, 97C146EE1CF9000F007C117D /* Runner.app */,
331C8081294A63A400263BE5 /* RunnerTests.xctest */,
); );
name = Products; name = Products;
sourceTree = "<group>"; sourceTree = "<group>";
@ -132,7 +86,6 @@
97C146F01CF9000F007C117D /* Runner */ = { 97C146F01CF9000F007C117D /* Runner */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
C95EC3D42B114F7D00A316A2 /* GoogleService-Info.plist */,
97C146FA1CF9000F007C117D /* Main.storyboard */, 97C146FA1CF9000F007C117D /* Main.storyboard */,
97C146FD1CF9000F007C117D /* Assets.xcassets */, 97C146FD1CF9000F007C117D /* Assets.xcassets */,
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
@ -145,62 +98,19 @@
path = Runner; path = Runner;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
C51FB947EEACC99574A07057 /* Frameworks */ = {
isa = PBXGroup;
children = (
895D1BE06AED43E6E7367693 /* Pods_Runner.framework */,
C7930A860EC8743E6A941D8D /* Pods_RunnerTests.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
E285F60DA3ED5F857F86301D /* Pods */ = {
isa = PBXGroup;
children = (
5216BB03E33101AC0F022F4F /* Pods-Runner.debug.xcconfig */,
F782B307897A4B77B59D0897 /* Pods-Runner.release.xcconfig */,
160A1A0B7CBEFB8A0DF876C4 /* Pods-Runner.profile.xcconfig */,
9652689A75201F19A551B879 /* Pods-RunnerTests.debug.xcconfig */,
2E9E3F1B12DC0CA59072CF15 /* Pods-RunnerTests.release.xcconfig */,
1E7A433994B49CDF1BE8DE4C /* Pods-RunnerTests.profile.xcconfig */,
);
path = Pods;
sourceTree = "<group>";
};
/* End PBXGroup section */ /* End PBXGroup section */
/* Begin PBXNativeTarget section */ /* Begin PBXNativeTarget section */
331C8080294A63A400263BE5 /* RunnerTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */;
buildPhases = (
18C5F3AB1125881E89D29F2B /* [CP] Check Pods Manifest.lock */,
331C807D294A63A400263BE5 /* Sources */,
331C807F294A63A400263BE5 /* Resources */,
472D7C2F33BD994B5AD25717 /* Frameworks */,
);
buildRules = (
);
dependencies = (
331C8086294A63A400263BE5 /* PBXTargetDependency */,
);
name = RunnerTests;
productName = RunnerTests;
productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
97C146ED1CF9000F007C117D /* Runner */ = { 97C146ED1CF9000F007C117D /* Runner */ = {
isa = PBXNativeTarget; isa = PBXNativeTarget;
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
buildPhases = ( buildPhases = (
44FFFF9947EC806B7CE88500 /* [CP] Check Pods Manifest.lock */,
9740EEB61CF901F6004384FC /* Run Script */, 9740EEB61CF901F6004384FC /* Run Script */,
97C146EA1CF9000F007C117D /* Sources */, 97C146EA1CF9000F007C117D /* Sources */,
97C146EB1CF9000F007C117D /* Frameworks */, 97C146EB1CF9000F007C117D /* Frameworks */,
97C146EC1CF9000F007C117D /* Resources */, 97C146EC1CF9000F007C117D /* Resources */,
9705A1C41CF9048500538489 /* Embed Frameworks */, 9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */,
7EEED9B34346FEEF7394F416 /* [CP] Embed Pods Frameworks */,
); );
buildRules = ( buildRules = (
); );
@ -217,14 +127,9 @@
97C146E61CF9000F007C117D /* Project object */ = { 97C146E61CF9000F007C117D /* Project object */ = {
isa = PBXProject; isa = PBXProject;
attributes = { attributes = {
BuildIndependentTargetsInParallel = YES; LastUpgradeCheck = 1300;
LastUpgradeCheck = 1430;
ORGANIZATIONNAME = ""; ORGANIZATIONNAME = "";
TargetAttributes = { TargetAttributes = {
331C8080294A63A400263BE5 = {
CreatedOnToolsVersion = 14.0;
TestTargetID = 97C146ED1CF9000F007C117D;
};
97C146ED1CF9000F007C117D = { 97C146ED1CF9000F007C117D = {
CreatedOnToolsVersion = 7.3.1; CreatedOnToolsVersion = 7.3.1;
LastSwiftMigration = 1100; LastSwiftMigration = 1100;
@ -245,19 +150,11 @@
projectRoot = ""; projectRoot = "";
targets = ( targets = (
97C146ED1CF9000F007C117D /* Runner */, 97C146ED1CF9000F007C117D /* Runner */,
331C8080294A63A400263BE5 /* RunnerTests */,
); );
}; };
/* End PBXProject section */ /* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */ /* Begin PBXResourcesBuildPhase section */
331C807F294A63A400263BE5 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
97C146EC1CF9000F007C117D /* Resources */ = { 97C146EC1CF9000F007C117D /* Resources */ = {
isa = PBXResourcesBuildPhase; isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
@ -266,43 +163,18 @@
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
C95EC3D52B114F7D00A316A2 /* GoogleService-Info.plist in Resources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
/* End PBXResourcesBuildPhase section */ /* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */
18C5F3AB1125881E89D29F2B /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
isa = PBXShellScriptBuildPhase; isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
); );
inputPaths = ( inputPaths = (
"${TARGET_BUILD_DIR}/${INFOPLIST_PATH}",
); );
name = "Thin Binary"; name = "Thin Binary";
outputPaths = ( outputPaths = (
@ -311,48 +183,8 @@
shellPath = /bin/sh; shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
}; };
44FFFF9947EC806B7CE88500 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
7EEED9B34346FEEF7394F416 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
);
name = "[CP] Embed Pods Frameworks";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
9740EEB61CF901F6004384FC /* Run Script */ = { 9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase; isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
); );
@ -368,14 +200,6 @@
/* End PBXShellScriptBuildPhase section */ /* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */
331C807D294A63A400263BE5 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
97C146EA1CF9000F007C117D /* Sources */ = { 97C146EA1CF9000F007C117D /* Sources */ = {
isa = PBXSourcesBuildPhase; isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
@ -387,14 +211,6 @@
}; };
/* End PBXSourcesBuildPhase section */ /* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
331C8086294A63A400263BE5 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 97C146ED1CF9000F007C117D /* Runner */;
targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */ /* Begin PBXVariantGroup section */
97C146FA1CF9000F007C117D /* Main.storyboard */ = { 97C146FA1CF9000F007C117D /* Main.storyboard */ = {
isa = PBXVariantGroup; isa = PBXVariantGroup;
@ -438,7 +254,6 @@
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES;
@ -449,7 +264,6 @@
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO; ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GCC_C_LANGUAGE_STANDARD = gnu99; GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES; GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
@ -458,7 +272,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES; GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 12.0; IPHONEOS_DEPLOYMENT_TARGET = 11.0;
MTL_ENABLE_DEBUG_INFO = NO; MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos; SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos; SUPPORTED_PLATFORMS = iphoneos;
@ -473,77 +287,21 @@
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = 35KQ5BDC64;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_FILE = Runner/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 17.0;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
PRODUCT_BUNDLE_IDENTIFIER = com.justdev.justmusic; PRODUCT_BUNDLE_IDENTIFIER = com.example.justmusic;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic"; VERSIONING_SYSTEM = "apple-generic";
}; };
name = Profile; name = Profile;
}; };
331C8088294A63A400263BE5 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 9652689A75201F19A551B879 /* Pods-RunnerTests.debug.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.justdev.justmusic.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
};
name = Debug;
};
331C8089294A63A400263BE5 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 2E9E3F1B12DC0CA59072CF15 /* Pods-RunnerTests.release.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.justdev.justmusic.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
};
name = Release;
};
331C808A294A63A400263BE5 /* Profile */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 1E7A433994B49CDF1BE8DE4C /* Pods-RunnerTests.profile.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.justdev.justmusic.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
};
name = Profile;
};
97C147031CF9000F007C117D /* Debug */ = { 97C147031CF9000F007C117D /* Debug */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
buildSettings = { buildSettings = {
@ -567,7 +325,6 @@
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES;
@ -578,7 +335,6 @@
DEBUG_INFORMATION_FORMAT = dwarf; DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES; ENABLE_TESTABILITY = YES;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GCC_C_LANGUAGE_STANDARD = gnu99; GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO; GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES; GCC_NO_COMMON_BLOCKS = YES;
@ -593,7 +349,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES; GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 12.0; IPHONEOS_DEPLOYMENT_TARGET = 11.0;
MTL_ENABLE_DEBUG_INFO = YES; MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES; ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos; SDKROOT = iphoneos;
@ -624,7 +380,6 @@
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES;
@ -635,7 +390,6 @@
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO; ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GCC_C_LANGUAGE_STANDARD = gnu99; GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES; GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
@ -644,7 +398,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES; GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 12.0; IPHONEOS_DEPLOYMENT_TARGET = 11.0;
MTL_ENABLE_DEBUG_INFO = NO; MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos; SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos; SUPPORTED_PLATFORMS = iphoneos;
@ -661,21 +415,15 @@
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = 35KQ5BDC64;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_FILE = Runner/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 17.0;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
PRODUCT_BUNDLE_IDENTIFIER = com.justdev.justmusic; PRODUCT_BUNDLE_IDENTIFIER = com.example.justmusic;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
@ -689,21 +437,15 @@
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = 35KQ5BDC64;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_FILE = Runner/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 17.0;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
PRODUCT_BUNDLE_IDENTIFIER = com.justdev.justmusic; PRODUCT_BUNDLE_IDENTIFIER = com.example.justmusic;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic"; VERSIONING_SYSTEM = "apple-generic";
@ -713,16 +455,6 @@
/* End XCBuildConfiguration section */ /* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */ /* Begin XCConfigurationList section */
331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
331C8088294A63A400263BE5 /* Debug */,
331C8089294A63A400263BE5 /* Release */,
331C808A294A63A400263BE5 /* Profile */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
isa = XCConfigurationList; isa = XCConfigurationList;
buildConfigurations = ( buildConfigurations = (

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Scheme <Scheme
LastUpgradeVersion = "1430" LastUpgradeVersion = "1300"
version = "1.3"> version = "1.3">
<BuildAction <BuildAction
parallelizeBuildables = "YES" parallelizeBuildables = "YES"
@ -37,17 +37,6 @@
</BuildableReference> </BuildableReference>
</MacroExpansion> </MacroExpansion>
<Testables> <Testables>
<TestableReference
skipped = "NO"
parallelizable = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "331C8080294A63A400263BE5"
BuildableName = "RunnerTests.xctest"
BlueprintName = "RunnerTests"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables> </Testables>
</TestAction> </TestAction>
<LaunchAction <LaunchAction

@ -4,7 +4,4 @@
<FileRef <FileRef
location = "group:Runner.xcodeproj"> location = "group:Runner.xcodeproj">
</FileRef> </FileRef>
<FileRef
location = "group:Pods/Pods.xcodeproj">
</FileRef>
</Workspace> </Workspace>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 421 B

After

Width:  |  Height:  |  Size: 564 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 729 B

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.7 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

@ -1,36 +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>CLIENT_ID</key>
<string>994903990520-n6jd98ena56kb1tvtrd67tvb5et3nfbf.apps.googleusercontent.com</string>
<key>REVERSED_CLIENT_ID</key>
<string>com.googleusercontent.apps.994903990520-n6jd98ena56kb1tvtrd67tvb5et3nfbf</string>
<key>ANDROID_CLIENT_ID</key>
<string>994903990520-073l30b0afj0uq7apsvc8p8ukantpu6q.apps.googleusercontent.com</string>
<key>API_KEY</key>
<string>AIzaSyBbYqsR6t7JTi8_XFNEHd43IRuKlYGeI3U</string>
<key>GCM_SENDER_ID</key>
<string>994903990520</string>
<key>PLIST_VERSION</key>
<string>1</string>
<key>BUNDLE_ID</key>
<string>com.example.justmusic</string>
<key>PROJECT_ID</key>
<string>justmusic-435d5</string>
<key>STORAGE_BUCKET</key>
<string>justmusic-435d5.appspot.com</string>
<key>IS_ADS_ENABLED</key>
<false></false>
<key>IS_ANALYTICS_ENABLED</key>
<false></false>
<key>IS_APPINVITE_ENABLED</key>
<true></true>
<key>IS_GCM_ENABLED</key>
<true></true>
<key>IS_SIGNIN_ENABLED</key>
<true></true>
<key>GOOGLE_APP_ID</key>
<string>1:994903990520:ios:93188f32e320babe0a9b0d</string>
</dict>
</plist>

@ -2,8 +2,6 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"> <plist version="1.0">
<dict> <dict>
<key>CADisableMinimumFrameDurationOnPhone</key>
<true/>
<key>CFBundleDevelopmentRegion</key> <key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string> <string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key> <key>CFBundleDisplayName</key>
@ -22,31 +20,10 @@
<string>$(FLUTTER_BUILD_NAME)</string> <string>$(FLUTTER_BUILD_NAME)</string>
<key>CFBundleSignature</key> <key>CFBundleSignature</key>
<string>????</string> <string>????</string>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<string>com.googleusercontent.apps.994903990520-n6jd98ena56kb1tvtrd67tvb5et3nfbf</string>
</array>
</dict>
</array>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>$(FLUTTER_BUILD_NUMBER)</string> <string>$(FLUTTER_BUILD_NUMBER)</string>
<key>LSRequiresIPhoneOS</key> <key>LSRequiresIPhoneOS</key>
<true/> <true/>
<key>NSCameraUsageDescription</key>
<string>To capture profile photo please grant camera access</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>Votre message d'autorisation pour une utilisation continue de la localisation</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Votre message d'autorisation lorsque l'application est en cours d'utilisation</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>App needs access to photo lib for profile images</string>
<key>UIApplicationSupportsIndirectInputEvents</key>
<true/>
<key>UILaunchStoryboardName</key> <key>UILaunchStoryboardName</key>
<string>LaunchScreen</string> <string>LaunchScreen</string>
<key>UIMainStoryboardFile</key> <key>UIMainStoryboardFile</key>
@ -64,5 +41,11 @@
<string>UIInterfaceOrientationLandscapeLeft</string> <string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string> <string>UIInterfaceOrientationLandscapeRight</string>
</array> </array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>CADisableMinimumFrameDurationOnPhone</key>
<true/>
<key>UIApplicationSupportsIndirectInputEvents</key>
<true/>
</dict> </dict>
</plist> </plist>

@ -1,12 +0,0 @@
import Flutter
import UIKit
import XCTest
class RunnerTests: XCTestCase {
func testExample() {
// If you add code to the Runner application, consider adding tests here.
// See https://developer.apple.com/documentation/xctest for more information about using XCTest.
}
}

@ -1,4 +1,4 @@
import 'package:flutter/material.dart'; import 'package:flutter/Material.dart';
import '../values/constants.dart'; import '../values/constants.dart';

@ -1,7 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/Material.dart';
import 'package:google_fonts/google_fonts.dart'; import 'package:google_fonts/google_fonts.dart';
import 'package:ionicons/ionicons.dart'; import 'package:ionicons/ionicons.dart';
import 'package:tuple/tuple.dart';
import '../values/constants.dart'; import '../values/constants.dart';
@ -16,11 +15,9 @@ class PhotoPostComponent extends StatelessWidget {
padding: EdgeInsets.all(10), padding: EdgeInsets.all(10),
decoration: BoxDecoration( decoration: BoxDecoration(
color: postbutton, borderRadius: BorderRadius.circular(8)), color: postbutton, borderRadius: BorderRadius.circular(8)),
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 10),
child: Row( child: Row(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.spaceEvenly, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
Icon( Icon(
Ionicons.camera, Ionicons.camera,
@ -30,35 +27,25 @@ class PhotoPostComponent extends StatelessWidget {
SizedBox( SizedBox(
width: 10, width: 10,
), ),
Expanded( Text(
child: Text(
'Prendre un selfie', 'Prendre un selfie',
style: GoogleFonts.plusJakartaSans( style: GoogleFonts.plusJakartaSans(
color: Colors.white, fontSize: 12), color: Colors.white, fontSize: 12),
overflow: TextOverflow.ellipsis,
maxLines: 1,
),
) )
]), ]),
)) )
: Container( : Container(
padding: EdgeInsets.all(10), padding: EdgeInsets.all(10),
decoration: BoxDecoration( decoration: BoxDecoration(
color: fillButton, borderRadius: BorderRadius.circular(8)), color: fillButton, borderRadius: BorderRadius.circular(8)),
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 10),
child: Row( child: Row(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.spaceEvenly, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
Expanded( Text(
child: Text(
"Selfie enregistré", "Selfie enregistré",
style: GoogleFonts.plusJakartaSans( style: GoogleFonts.plusJakartaSans(
color: Colors.white, fontSize: 12), color: Colors.white, fontSize: 12),
overflow: TextOverflow.ellipsis,
maxLines: 1,
),
), ),
SizedBox( SizedBox(
width: 10, width: 10,
@ -69,15 +56,13 @@ class PhotoPostComponent extends StatelessWidget {
color: Colors.white, color: Colors.white,
), ),
]), ]),
)); );
} }
} }
class LocationPostComponent extends StatelessWidget { class LocationPostComponent extends StatelessWidget {
final bool empty; final bool empty;
final Tuple2<String, String>? location; const LocationPostComponent({Key? key, required this.empty})
const LocationPostComponent(
{Key? key, required this.empty, required this.location})
: super(key: key); : super(key: key);
@override @override
@ -88,11 +73,9 @@ class LocationPostComponent extends StatelessWidget {
padding: EdgeInsets.all(10), padding: EdgeInsets.all(10),
decoration: BoxDecoration( decoration: BoxDecoration(
color: postbutton, borderRadius: BorderRadius.circular(8)), color: postbutton, borderRadius: BorderRadius.circular(8)),
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 10),
child: Row( child: Row(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.spaceEvenly, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
Icon( Icon(
Icons.location_on, Icons.location_on,
@ -102,34 +85,26 @@ class LocationPostComponent extends StatelessWidget {
SizedBox( SizedBox(
width: 10, width: 10,
), ),
Expanded( Text(
child: Text(
'Ajouter un lieu', 'Ajouter un lieu',
style: GoogleFonts.plusJakartaSans( style: GoogleFonts.plusJakartaSans(
color: Colors.white, fontSize: 12), color: Colors.white, fontSize: 12),
overflow: TextOverflow.ellipsis,
),
) )
])), ]),
) )
: Container( : Container(
width: double.infinity, width: double.infinity,
padding: EdgeInsets.all(10), padding: EdgeInsets.all(10),
decoration: BoxDecoration( decoration: BoxDecoration(
color: fillButton, borderRadius: BorderRadius.circular(8)), color: fillButton, borderRadius: BorderRadius.circular(8)),
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 10),
child: Row( child: Row(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.spaceEvenly, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
Expanded( Text(
child: Text( "Lieu enregistré",
'${location?.item1}, ${location?.item2}',
style: GoogleFonts.plusJakartaSans( style: GoogleFonts.plusJakartaSans(
color: Colors.white, fontSize: 12), color: Colors.white, fontSize: 12),
overflow: TextOverflow.ellipsis,
),
), ),
SizedBox( SizedBox(
width: 10, width: 10,
@ -140,7 +115,6 @@ class LocationPostComponent extends StatelessWidget {
color: Colors.white, color: Colors.white,
), ),
]), ]),
),
); );
} }
} }

@ -1,50 +0,0 @@
import 'package:flutter/material.dart';
import '../main.dart';
import '../model/Music.dart';
class ButtonPlayComponent extends StatefulWidget {
final Music music;
const ButtonPlayComponent({super.key, required this.music});
@override
State<ButtonPlayComponent> createState() => _ButtonPlayComponentState();
}
class _ButtonPlayComponentState extends State<ButtonPlayComponent> {
bool isPlaying = false;
@override
void initState() {
MyApp.audioPlayer.onPlayerComplete.listen((event) {
setState(() {
isPlaying = false;
});
});
super.initState();
}
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: () {
if (isPlaying) {
widget.music.stopSong();
setState(() {
isPlaying = !isPlaying;
});
} else {
widget.music.playSong();
setState(() {
isPlaying = !isPlaying;
});
}
},
child: Icon(
isPlaying ? Icons.pause_circle : Icons.play_circle,
color: Colors.white,
size: 45,
),
);
}
}

@ -1,45 +0,0 @@
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:justmusic/values/constants.dart';
import 'package:tuple/tuple.dart';
class CityListComponent extends StatelessWidget {
final Tuple2<String, String> location;
const CityListComponent({Key? key, required this.location}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
width: double.infinity,
child: Padding(
padding: const EdgeInsets.symmetric(vertical: 20),
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Flexible(
child: RichText(
overflow: TextOverflow.ellipsis,
maxLines: 1,
text: TextSpan(children: [
TextSpan(
text: location.item2 + ", ",
style: GoogleFonts.plusJakartaSans(
color: grayText,
fontWeight: FontWeight.w400,
fontSize: 17),
),
TextSpan(
text: location.item1,
style: GoogleFonts.plusJakartaSans(
color: Colors.white,
fontWeight: FontWeight.w400,
fontSize: 17),
),
])),
),
],
),
),
);
}
}

@ -2,90 +2,63 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart'; import 'package:google_fonts/google_fonts.dart';
import 'package:justmusic/model/Comment.dart';
import '../values/constants.dart'; import '../values/constants.dart';
class CommentComponent extends StatelessWidget { class CommentComponent extends StatelessWidget {
final Comment comment; const CommentComponent({Key? key}) : super(key: key);
const CommentComponent({Key? key, required this.comment}) : super(key: key);
String calculateTimeDifference(DateTime startDate) {
Duration difference = DateTime.now().difference(startDate);
if (difference.inDays > 0) {
return '${difference.inDays} jours';
} else if (difference.inHours > 0) {
return '${difference.inHours} heures';
} else if (difference.inMinutes > 0) {
return '${difference.inMinutes} minutes';
} else {
return '${difference.inSeconds} secondes';
}
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Container( return Container(
width: double.infinity, width: double.infinity,
decoration: BoxDecoration(color: bgComment.withOpacity(0.6), borderRadius: BorderRadius.circular(15)), decoration: BoxDecoration(
padding: EdgeInsets.fromLTRB(20, 10, 20, 10), color: bgComment, borderRadius: BorderRadius.circular(10)),
margin: EdgeInsets.only(bottom: 13), padding: EdgeInsets.all(20),
child: Row( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start, children: [
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
ClipOval( ClipOval(
child: SizedBox( child: SizedBox.fromSize(
height: 40,
width: 40,
// Image radius // Image radius
child: FadeInImage.assetNetwork( child: Image(
image: comment.user.pp, image: AssetImage("assets/images/exemple_profile.png"),
fit: BoxFit.cover, width: 40,
fadeInDuration: const Duration(milliseconds: 100),
placeholder: "assets/images/loadingPlaceholder.gif",
), ),
), ),
), ),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.start,
children: [
SizedBox( SizedBox(
width: 10, width: 10,
), ),
Text( Text(
comment.user.pseudo, "Melina",
style: GoogleFonts.plusJakartaSans(color: Colors.white, fontWeight: FontWeight.w600), style: GoogleFonts.plusJakartaSans(
color: Colors.white, fontWeight: FontWeight.w600),
), ),
Padding( Padding(
padding: EdgeInsets.only(top: 6, left: 10), padding: EdgeInsets.only(top: 6, left: 10),
child: Text( child: Text(
"il y a ${calculateTimeDifference(comment.date)}", "Il y a 2 min(s)",
style: GoogleFonts.plusJakartaSans( style: GoogleFonts.plusJakartaSans(
color: Colors.white.withOpacity(0.6), fontWeight: FontWeight.w400, fontSize: 10), color: Colors.white.withOpacity(0.6),
fontWeight: FontWeight.w200,
fontSize: 10),
), ),
), ),
], ],
), ),
SizedBox( SizedBox(
height: 4, height: 10,
),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 10),
child: Text(
comment.text,
style: GoogleFonts.plusJakartaSans(color: Colors.white, fontWeight: FontWeight.w400, fontSize: 15),
),
), ),
], Text(
"Jadore ce son auss je trouve quil a vraiment une plume de fou le rap cest trop bien jknei rhozi ugzeor gzhjkev huz vhzbejlh zouebvfiyzv fi hzejkfb zjf ouzebfjzebihf b zuib fiuzebfihzbejfbzejkbf hzbfiébiu zegiu fzieu iuzy giuzeg iuzg eiu zg ",
style: GoogleFonts.plusJakartaSans(
color: Colors.white.withOpacity(0.4),
fontWeight: FontWeight.w300,
fontSize: 13),
), ),
)
], ],
), ),
); );

@ -1,10 +1,9 @@
import 'dart:io'; import 'dart:io';
import 'package:animated_appear/animated_appear.dart'; import 'package:animated_appear/animated_appear.dart';
import 'package:auto_size_text/auto_size_text.dart'; import 'package:auto_size_text/auto_size_text.dart';
import 'package:firebase_storage/firebase_storage.dart'; import 'package:circular_reveal_animation/circular_reveal_animation.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/Material.dart';
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:google_fonts/google_fonts.dart'; import 'package:google_fonts/google_fonts.dart';
@ -12,111 +11,50 @@ import 'package:image_picker/image_picker.dart';
import 'package:insta_image_viewer/insta_image_viewer.dart'; import 'package:insta_image_viewer/insta_image_viewer.dart';
import 'package:justmusic/values/constants.dart'; import 'package:justmusic/values/constants.dart';
import 'package:text_scroll/text_scroll.dart'; import 'package:text_scroll/text_scroll.dart';
import 'package:tuple/tuple.dart';
import '../model/Music.dart'; import '../model/Music.dart';
import '../screens/search_location_screen.dart';
import 'buttonPostComponent.dart'; import 'buttonPostComponent.dart';
class EditablePostComponent extends StatefulWidget { class EditablePostComponent extends StatefulWidget {
final Music? music; final Music? music;
final Function callBackImage; const EditablePostComponent({Key? key, this.music}) : super(key: key);
final Function callBackCity;
final Function callBackDescription;
const EditablePostComponent(
{Key? key,
this.music,
required this.callBackImage,
required this.callBackCity,
required this.callBackDescription})
: super(key: key);
@override @override
State<EditablePostComponent> createState() => _EditablePostComponentState(); State<EditablePostComponent> createState() => _EditablePostComponentState();
} }
class _EditablePostComponentState extends State<EditablePostComponent> with TickerProviderStateMixin { class _EditablePostComponentState extends State<EditablePostComponent>
with TickerProviderStateMixin {
final ImagePicker picker = ImagePicker(); final ImagePicker picker = ImagePicker();
late Animation<double> animation; late Animation<double> animation;
late AnimationController animationController; late AnimationController animationController;
late AnimationController _controller;
File? image; File? image;
Tuple2<String, String>? selectedCity;
@override
void initState() {
_controller = AnimationController(
vsync: this,
duration: const Duration(milliseconds: 400),
);
animationController = AnimationController(
vsync: this,
duration: Duration(milliseconds: 400),
);
animation = CurvedAnimation(
parent: animationController,
curve: Curves.easeInOutSine,
);
animationController.forward();
super.initState();
}
Future pickImage(ImageSource source) async {
Future pickImage() async {
try { try {
final image = await ImagePicker().pickImage(source: source, imageQuality: 20); final image = await ImagePicker().pickImage(source: ImageSource.gallery);
if (image == null) return; if (image == null) return;
final imageTemp = File(image.path); final imageTemp = File(image.path);
setState(() { setState(() {
this.image = imageTemp; this.image = imageTemp;
widget.callBackImage(imageTemp);
}); });
} on PlatformException catch (e) { } on PlatformException catch (e) {
print('Failed to pick image: $e'); print('Failed to pick image: $e');
} }
}
void _updateDescription(String text) {
setState(() {
widget.callBackDescription(text);
});
}
void _selectLocation(Tuple2<String, String> location) {
Navigator.pop(context);
setState(() {
selectedCity = location;
widget.callBackCity(location);
});
}
void searchLocation() {
showModalBottomSheet(
transitionAnimationController: _controller,
barrierColor: Colors.black.withOpacity(0.7),
backgroundColor: Colors.transparent,
elevation: 1,
constraints: const BoxConstraints(
maxWidth: 600,
),
isScrollControlled: true,
context: context,
shape: const RoundedRectangleBorder(
borderRadius: BorderRadius.only(topLeft: Radius.circular(20), topRight: Radius.circular(20))),
builder: ((context) {
return ClipRRect(
borderRadius: BorderRadius.only(topLeft: Radius.circular(20), topRight: Radius.circular(20)),
child: SearchCityScreen(callback: _selectLocation));
}),
);
} }
@override @override
void dispose() { void initState() {
_controller.dispose(); animationController = AnimationController(
animationController.dispose(); vsync: this,
super.dispose(); duration: Duration(milliseconds: 400),
);
animation = CurvedAnimation(
parent: animationController,
curve: Curves.easeInOutSine,
);
animationController.forward();
super.initState();
} }
@override @override
@ -129,7 +67,10 @@ class _EditablePostComponentState extends State<EditablePostComponent> with Tick
color: warningBttnColor, color: warningBttnColor,
child: Column( child: Column(
children: [ children: [
Stack( CircularRevealAnimation(
animation: animation,
centerOffset: Offset(30.w, -100),
child: Stack(
children: [ children: [
AspectRatio( AspectRatio(
aspectRatio: 1 / 1, aspectRatio: 1 / 1,
@ -145,20 +86,14 @@ class _EditablePostComponentState extends State<EditablePostComponent> with Tick
// implement image // implement image
child: widget.music == null child: widget.music == null
? Container( ? Container(
color: grayColor,
width: double.infinity, width: double.infinity,
child: Center(
child: Icon(
Icons.headphones,
color: grayColor.withOpacity(0.4),
size: 150,
),
),
) )
: FadeInImage.assetNetwork( : Image(
image: widget.music!.cover!, image:
NetworkImage(widget.music?.cover ?? ""),
fit: BoxFit.cover, fit: BoxFit.cover,
fadeInDuration: const Duration(milliseconds: 100), width: double.infinity,
placeholder: "assets/images/loadingPlaceholder.gif",
), ),
), ),
), ),
@ -180,15 +115,15 @@ class _EditablePostComponentState extends State<EditablePostComponent> with Tick
), ),
color: grayColor, color: grayColor,
borderRadius: BorderRadius.circular(20), borderRadius: BorderRadius.circular(20),
border: Border.all(style: BorderStyle.solid, color: Colors.white, width: 4)), border: Border.all(
style: BorderStyle.solid,
color: Colors.white,
width: 4)),
child: ClipRRect( child: ClipRRect(
borderRadius: BorderRadius.circular(20), borderRadius: BorderRadius.circular(20),
child: InstaImageViewer( child: InstaImageViewer(
backgroundIsTransparent: true, backgroundIsTransparent: true,
child: kIsWeb?InstaImageViewer( child: Image(
backgroundIsTransparent: true,
child: Image.network(image!.path)
):Image(
image: FileImage(image!), image: FileImage(image!),
fit: BoxFit.cover, fit: BoxFit.cover,
), ),
@ -198,7 +133,7 @@ class _EditablePostComponentState extends State<EditablePostComponent> with Tick
)) ))
: Container() : Container()
], ],
), )),
widget.music != null widget.music != null
? Padding( ? Padding(
padding: const EdgeInsets.all(10), padding: const EdgeInsets.all(10),
@ -211,13 +146,18 @@ class _EditablePostComponentState extends State<EditablePostComponent> with Tick
child: TextScroll( child: TextScroll(
(widget.music?.title)!, (widget.music?.title)!,
style: GoogleFonts.plusJakartaSans( style: GoogleFonts.plusJakartaSans(
height: 1, color: Colors.white, fontWeight: FontWeight.w600, fontSize: 26.h), height: 1,
color: Colors.white,
fontWeight: FontWeight.w600,
fontSize: 26.h),
mode: TextScrollMode.endless, mode: TextScrollMode.endless,
pauseBetween: Duration(milliseconds: 500), pauseBetween: Duration(milliseconds: 500),
velocity: Velocity(pixelsPerSecond: Offset(20, 0)), velocity:
Velocity(pixelsPerSecond: Offset(20, 0)),
)), )),
Padding( Padding(
padding: EdgeInsets.only(bottom: 10.h, right: 5.w, left: 5.w), padding: EdgeInsets.only(
bottom: 10.h, right: 5.w, left: 5.w),
child: ClipOval( child: ClipOval(
child: Container( child: Container(
width: 5.h, width: 5.h,
@ -233,17 +173,23 @@ class _EditablePostComponentState extends State<EditablePostComponent> with Tick
child: TextScroll( child: TextScroll(
(widget.music?.artists[0].name)!, (widget.music?.artists[0].name)!,
style: GoogleFonts.plusJakartaSans( style: GoogleFonts.plusJakartaSans(
height: 1, color: Colors.white, fontWeight: FontWeight.w300, fontSize: 16.h), height: 1,
color: Colors.white,
fontWeight: FontWeight.w300,
fontSize: 16.h),
mode: TextScrollMode.endless, mode: TextScrollMode.endless,
velocity: Velocity(pixelsPerSecond: Offset(50, 20)), velocity:
Velocity(pixelsPerSecond: Offset(50, 20)),
pauseBetween: Duration(milliseconds: 500), pauseBetween: Duration(milliseconds: 500),
), ),
)), )),
Container(width: 10), Container(width: 10),
AutoSizeText( AutoSizeText(
widget.music?.date.toString() ?? "unknown", "2013",
style: GoogleFonts.plusJakartaSans( style: GoogleFonts.plusJakartaSans(
color: Colors.white.withOpacity(0.5), fontWeight: FontWeight.w300, fontSize: 16.h), color: Colors.white.withOpacity(0.5),
fontWeight: FontWeight.w300,
fontSize: 16.h),
textAlign: TextAlign.end, textAlign: TextAlign.end,
maxFontSize: 20, maxFontSize: 20,
), ),
@ -256,8 +202,8 @@ class _EditablePostComponentState extends State<EditablePostComponent> with Tick
width: double.infinity, width: double.infinity,
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ kIsWeb?Container() children: [
:Expanded( Expanded(
flex: 5, flex: 5,
child: GestureDetector( child: GestureDetector(
onTap: () { onTap: () {
@ -268,19 +214,13 @@ class _EditablePostComponentState extends State<EditablePostComponent> with Tick
), ),
), ),
), ),
kIsWeb?Container():SizedBox( SizedBox(
width: 15, width: 15,
), ),
Expanded( Expanded(
flex: 5, flex: 5,
child: GestureDetector(
onTap: () {
manageLocation();
},
child: LocationPostComponent( child: LocationPostComponent(
empty: selectedCity == null, empty: true,
location: selectedCity,
),
), ),
), ),
], ],
@ -291,32 +231,38 @@ class _EditablePostComponentState extends State<EditablePostComponent> with Tick
child: SizedBox( child: SizedBox(
width: double.infinity, width: double.infinity,
child: TextFormField( child: TextFormField(
keyboardType: TextInputType.text,
onChanged: (value) {
_updateDescription(value);
},
keyboardAppearance: Brightness.dark, keyboardAppearance: Brightness.dark,
minLines: 1, minLines: 1,
cursorColor: primaryColor, cursorColor: primaryColor,
style: style: GoogleFonts.plusJakartaSans(
GoogleFonts.plusJakartaSans(color: Colors.white, fontSize: 13, fontWeight: FontWeight.w300), color: Colors.white,
fontSize: 13,
fontWeight: FontWeight.w300),
maxLines: 4, maxLines: 4,
maxLength: 120, maxLength: 120,
decoration: InputDecoration( decoration: InputDecoration(
counterStyle: GoogleFonts.plusJakartaSans(color: grayText, fontSize: 9), counterStyle: GoogleFonts.plusJakartaSans(
color: grayText, fontSize: 9),
focusedBorder: const OutlineInputBorder( focusedBorder: const OutlineInputBorder(
borderSide: BorderSide(width: 0, color: Colors.transparent), borderSide:
borderRadius: BorderRadius.all(Radius.circular(10))), BorderSide(width: 0, color: Colors.transparent),
contentPadding: const EdgeInsets.only(top: 0, bottom: 0, left: 0), borderRadius:
BorderRadius.all(Radius.circular(10))),
contentPadding:
const EdgeInsets.only(top: 0, bottom: 0, left: 0),
fillColor: Colors.transparent, fillColor: Colors.transparent,
filled: true, filled: true,
focusColor: Colors.transparent, focusColor: Colors.transparent,
enabledBorder: const OutlineInputBorder( enabledBorder: const OutlineInputBorder(
borderSide: BorderSide(width: 0, color: Colors.transparent), borderSide:
borderRadius: BorderRadius.all(Radius.circular(10))), BorderSide(width: 0, color: Colors.transparent),
borderRadius:
BorderRadius.all(Radius.circular(10))),
hintText: 'Description...', hintText: 'Description...',
hintStyle: hintStyle: GoogleFonts.plusJakartaSans(
GoogleFonts.plusJakartaSans(color: grayText, fontSize: 13, fontWeight: FontWeight.w300), color: grayText,
fontSize: 13,
fontWeight: FontWeight.w300),
), ),
), ),
)), )),
@ -331,56 +277,7 @@ class _EditablePostComponentState extends State<EditablePostComponent> with Tick
image = null; image = null;
}); });
} else { } else {
_showActionSheet(context); pickImage();
}
}
void manageLocation() {
if (selectedCity != null) {
setState(() {
selectedCity = null;
});
} else {
searchLocation();
}
} }
void _showActionSheet(BuildContext context) {
showCupertinoModalPopup<void>(
context: context,
barrierColor: Colors.black.withOpacity(0.5),
builder: (BuildContext context) => Container(
color: Colors.black,
child: CupertinoActionSheet(
title: Text(
'Ajouter une photo',
style: GoogleFonts.plusJakartaSans(fontWeight: FontWeight.bold),
),
actions: <CupertinoActionSheetAction>[
CupertinoActionSheetAction(
onPressed: () {
pickImage(ImageSource.gallery);
Navigator.pop(context);
},
child: const Text('Galerie'),
),
CupertinoActionSheetAction(
onPressed: () {
pickImage(ImageSource.camera);
Navigator.pop(context);
},
child: const Text('Prendre un selfie'),
),
],
cancelButton: CupertinoActionSheetAction(
isDestructiveAction: true,
onPressed: () {
Navigator.pop(context);
},
child: const Text('Annuler'),
),
),
),
);
} }
} }

@ -1,105 +0,0 @@
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:justmusic/main.dart';
import 'package:justmusic/values/constants.dart';
import 'package:tuple/tuple.dart';
import '../model/Music.dart';
class HistoricComponent extends StatefulWidget {
final int month;
final int year;
const HistoricComponent({super.key, required this.month, required this.year});
@override
State<HistoricComponent> createState() => _HistoricComponentState();
}
class _HistoricComponentState extends State<HistoricComponent> {
int getNumberOfDaysInMonth(int year, int month) {
if (month < 1 || month > 12) {
throw ArgumentError("Le numéro de mois doit être compris entre 1 et 12.");
}
return DateTime(year, month + 1, 0).day;
}
getHistoric() {}
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: MyApp.musicViewModel
.getHistoryCapsulesMonthWhitIdUser(MyApp.userViewModel.userCurrent.id, widget.month, widget.year),
builder: (context, snapshot) {
if (snapshot.hasData) {
return Container(
constraints: const BoxConstraints( maxWidth: 600),
child: Wrap(
spacing: 14,
runSpacing: 14,
children: List.generate(getNumberOfDaysInMonth(widget.year, widget.month), (index) {
Tuple2<int, Music>? checkCapsule;
if (snapshot.data != null) {
for (var element in snapshot.data!) {
if (element.item1 == index + 1) {
checkCapsule = element;
}
}
}
if ((widget.year > DateTime.now().year || widget.month > DateTime.now().month) ||
(widget.year == DateTime.now().year &&
widget.month == DateTime.now().month &&
index > DateTime.now().day)) {
return Container(
decoration: BoxDecoration(
gradient: LinearGradient(colors: [
Color(0xFF1E1E1E).withOpacity(0.7),
Color(0xFF1E1E1E).withOpacity(0),
], begin: Alignment.topCenter, end: Alignment.bottomCenter),
borderRadius: BorderRadius.circular(5)),
height: 60,
width: 60,
);
}
if (checkCapsule != null) {
return Tooltip(
message: "${checkCapsule.item2.artists.first.name} - ${checkCapsule.item2.title}".length < 30? "${checkCapsule.item2.artists.first.name} - ${checkCapsule.item2.title}": "${checkCapsule.item2.artists.first.name} - ${checkCapsule.item2.title}".substring(0,30)+"...",
decoration: const BoxDecoration(
border: Border.fromBorderSide(BorderSide(color: Color(0xFF3A3A3A), width: 1)),
color: tooltipBackground, borderRadius: BorderRadius.all(Radius.circular(20))
),
child: Container(
decoration: BoxDecoration(
image: DecorationImage(image: NetworkImage((checkCapsule.item2.cover)!)),
borderRadius: BorderRadius.circular(5)),
height: 60,
width: 60,
));
} else {
return Container(
color: bgColor,
height: 60,
width: 60,
child: Center(
child: Text(
(index + 1).toString(),
style:
GoogleFonts.plusJakartaSans(color: Colors.white, fontSize: 22, fontWeight: FontWeight.w800),
),
),
);
}
// Generate widgets
}),
),
);
} else {
return CupertinoActivityIndicator();
}
});
}
}

@ -1,52 +0,0 @@
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
import '../values/constants.dart';
class LittleCapsule extends StatelessWidget {
final bool isEmpty;
final DateTime date;
const LittleCapsule({super.key, required this.isEmpty, required this.date});
@override
Widget build(BuildContext context) {
if (isEmpty) {
return Flexible(
child: Container(
constraints: BoxConstraints(maxWidth: 45, maxHeight: 45),
decoration: BoxDecoration(
color: searchBarColor,
borderRadius: BorderRadius.circular(5),
border: Border.all(color: Color(0xFF282828), width: 1),
),
child: const Center(
child: Icon(
Icons.rocket_launch,
color: Color(0xFF464646),
size: 18,
),
),
),
);
}
return Flexible(
child: Container(
constraints: BoxConstraints(maxWidth: 45, maxHeight: 45),
decoration: BoxDecoration(
gradient: LinearGradient(
colors: [bgModal, bgModal.withOpacity(0)],
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
stops: [0, 1]),
borderRadius: BorderRadius.circular(5),
),
child: Center(
child: Text(
date.day.toString(),
style: GoogleFonts.plusJakartaSans(color: Color(0xFF464646), fontWeight: FontWeight.w800, fontSize: 17),
),
),
),
);
}
}

@ -3,10 +3,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
class LoginButton extends StatefulWidget { class LoginButton extends StatefulWidget {
final Function callback; const LoginButton({Key? key}) : super(key: key);
final String text;
const LoginButton({Key? key, required this.callback, required this.text}) : super(key: key);
@override @override
State<LoginButton> createState() => _LoginButtonState(); State<LoginButton> createState() => _LoginButtonState();
@ -17,7 +14,7 @@ class _LoginButtonState extends State<LoginButton> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return ElevatedButton( return ElevatedButton(
onPressed: () { onPressed: () {
widget.callback(); Navigator.pushNamed(context, '/explanation');
}, },
style: ButtonStyle( style: ButtonStyle(
backgroundColor: MaterialStateProperty.all(Color(0xFF1C1C1C)), backgroundColor: MaterialStateProperty.all(Color(0xFF1C1C1C)),
@ -58,7 +55,7 @@ class _LoginButtonState extends State<LoginButton> {
), ),
alignment: Alignment.center, alignment: Alignment.center,
child: Text( child: Text(
widget.text, "Se connecter",
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: TextStyle(color: Colors.white, fontSize: 18), style: TextStyle(color: Colors.white, fontSize: 18),
), ),

@ -1,4 +1,4 @@
import 'package:flutter/material.dart'; import 'package:flutter/Material.dart';
import 'package:google_fonts/google_fonts.dart'; import 'package:google_fonts/google_fonts.dart';
import 'package:justmusic/components/play_button_component.dart'; import 'package:justmusic/components/play_button_component.dart';
import 'package:text_scroll/text_scroll.dart'; import 'package:text_scroll/text_scroll.dart';
@ -9,7 +9,7 @@ class MusicListComponent extends StatelessWidget {
final bool playing; final bool playing;
final int index; final int index;
final Function(int) callback; final Function(int) callback;
const MusicListComponent({ MusicListComponent({
Key? key, Key? key,
required this.music, required this.music,
required this.playing, required this.playing,
@ -23,22 +23,18 @@ class MusicListComponent extends StatelessWidget {
padding: const EdgeInsets.only(bottom: 14), padding: const EdgeInsets.only(bottom: 14),
child: Row( child: Row(
children: [ children: [
LayoutBuilder(builder: (BuildContext context, BoxConstraints constraints) { LayoutBuilder(
builder: (BuildContext context, BoxConstraints constraints) {
if (music.cover != null) { if (music.cover != null) {
return ClipRRect( return ClipRRect(
borderRadius: BorderRadius.all(Radius.circular(5)), borderRadius: BorderRadius.all(Radius.circular(5)),
child: music.cover != null child: music.cover != null
? SizedBox( ? FadeInImage.assetNetwork(
height: 60, height: 60,
width: 60, width: 60,
// Image radius
child: FadeInImage.assetNetwork(
image: music.cover!,
fit: BoxFit.cover, fit: BoxFit.cover,
fadeInDuration: const Duration(milliseconds: 100),
placeholder: "assets/images/loadingPlaceholder.gif", placeholder: "assets/images/loadingPlaceholder.gif",
), image: music.cover!)
)
: Container( : Container(
height: 60, height: 60,
width: 60, width: 60,
@ -46,8 +42,8 @@ class MusicListComponent extends StatelessWidget {
), ),
); );
} else { } else {
return const Image( return Image(
image: AssetImage("assets/images/loadingPlaceholder.gif"), image: AssetImage("assets/images/exemple_cover.png"),
height: 60, height: 60,
width: 60, width: 60,
); );
@ -67,11 +63,14 @@ class MusicListComponent extends StatelessWidget {
Flexible( Flexible(
flex: 8, flex: 8,
child: ScrollConfiguration( child: ScrollConfiguration(
behavior: ScrollBehavior().copyWith(scrollbars: false), behavior:
ScrollBehavior().copyWith(scrollbars: false),
child: TextScroll( child: TextScroll(
music.title ?? "Unknown", music.title ?? "Unknown",
style: GoogleFonts.plusJakartaSans( style: GoogleFonts.plusJakartaSans(
fontSize: 16, color: Colors.white, fontWeight: FontWeight.w700), fontSize: 16,
color: Colors.white,
fontWeight: FontWeight.w700),
mode: TextScrollMode.endless, mode: TextScrollMode.endless,
pauseBetween: Duration(milliseconds: 2500), pauseBetween: Duration(milliseconds: 2500),
velocity: Velocity(pixelsPerSecond: Offset(30, 0)), velocity: Velocity(pixelsPerSecond: Offset(30, 0)),
@ -92,7 +91,8 @@ class MusicListComponent extends StatelessWidget {
child: Text( child: Text(
music.artists.first.name ?? "Unknown", music.artists.first.name ?? "Unknown",
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,
style: GoogleFonts.plusJakartaSans(color: Colors.grey, fontWeight: FontWeight.w400), style: GoogleFonts.plusJakartaSans(
color: Colors.grey, fontWeight: FontWeight.w400),
)) ))
], ],
), ),

@ -1,4 +1,5 @@
import 'package:flutter/material.dart'; import 'package:audioplayers/audioplayers.dart';
import 'package:flutter/Material.dart';
import 'package:flutter_animated_play_button/flutter_animated_play_button.dart'; import 'package:flutter_animated_play_button/flutter_animated_play_button.dart';
import 'package:ionicons/ionicons.dart'; import 'package:ionicons/ionicons.dart';
@ -11,7 +12,11 @@ class PlayButtonComponent extends StatefulWidget {
final int index; final int index;
final bool playing; final bool playing;
const PlayButtonComponent( const PlayButtonComponent(
{Key? key, required this.music, required this.callback, required this.playing, required this.index}) {Key? key,
required this.music,
required this.callback,
required this.playing,
required this.index})
: super(key: key); : super(key: key);
@override @override
@ -19,6 +24,8 @@ class PlayButtonComponent extends StatefulWidget {
} }
class _PlayButtonComponentState extends State<PlayButtonComponent> { class _PlayButtonComponentState extends State<PlayButtonComponent> {
final player = AudioPlayer();
@override @override
void initState() { void initState() {
MyApp.audioPlayer.onPlayerComplete.listen((event) { MyApp.audioPlayer.onPlayerComplete.listen((event) {

@ -1,52 +1,12 @@
import 'dart:ui'; import 'package:flutter/Material.dart';
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart'; import 'package:google_fonts/google_fonts.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
class PostButtonComponent extends StatefulWidget { class PostButtonComponent extends StatelessWidget {
final bool empty; const PostButtonComponent({Key? key}) : super(key: key);
final Function callback;
const PostButtonComponent(
{Key? key, required this.empty, required this.callback})
: super(key: key);
@override
State<PostButtonComponent> createState() => _PostButtonComponentState();
}
class _PostButtonComponentState extends State<PostButtonComponent>
with SingleTickerProviderStateMixin {
late AnimationController _controller;
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
void initState() {
super.initState();
_controller = AnimationController(
animationBehavior: AnimationBehavior.normal,
vsync: this,
duration: Duration(milliseconds: 1500),
);
_controller.addStatusListener((status) {
if (status == AnimationStatus.completed) {
_controller.reverse();
} else if (status == AnimationStatus.dismissed) {
_controller.forward();
}
});
_controller.forward();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
if (widget.empty) {
return Container( return Container(
constraints: BoxConstraints(maxWidth: 400), constraints: BoxConstraints(maxWidth: 400),
decoration: BoxDecoration( decoration: BoxDecoration(
@ -70,96 +30,4 @@ class _PostButtonComponentState extends State<PostButtonComponent>
), ),
); );
} }
return GestureDetector(
onTap: () {
widget.callback();
},
child: Container(
width: double.infinity,
height: 90,
clipBehavior: Clip.hardEdge,
decoration: BoxDecoration(
color: Colors.transparent,
borderRadius: BorderRadius.circular(1000)),
child: Align(
child: Stack(
children: [
AnimatedBuilder(
animation: _controller,
builder: (context, child) {
return Transform.translate(
offset: Offset(
20 + _controller.value * (240),
0,
),
child: child,
);
},
child: Container(
width: 120,
height: 80,
alignment: Alignment.center,
decoration: BoxDecoration(
gradient: LinearGradient(colors: [
Color(0xFF9E78FF).withOpacity(0.0),
Color(0xFFFDFDFF),
Color(0xFFFFFFFF),
Color(0xFF9E78FF).withOpacity(0.0)
], stops: const [
0,
0.4,
0.5,
1
]),
),
),
),
BackdropFilter(
filter: ImageFilter.blur(
sigmaX: 10.0,
sigmaY: 10.0,
),
child: Opacity(
opacity: 0.9,
child: Container(
constraints: BoxConstraints(maxWidth: 400),
decoration: BoxDecoration(
gradient: LinearGradient(colors: [
Color(0xFF633AF4),
Color(0xFF9367FF),
Color(0xFF633AF4)
]),
border:
Border.all(width: 5, color: Color(0xFF1C1C1C)),
borderRadius: BorderRadius.circular(10000)),
padding: EdgeInsets.symmetric(vertical: 25),
width: double.infinity,
child: Padding(
padding: EdgeInsets.only(left: 100),
child: Text(
"Publier la capsule",
style: GoogleFonts.plusJakartaSans(
color: Colors.white,
fontWeight: FontWeight.w700,
fontStyle: FontStyle.italic,
fontSize: 22),
),
),
),
)),
ClipOval(
child: Padding(
padding: const EdgeInsets.only(left: 5, top: 5),
child: Image(
image: AssetImage("assets/images/rocket_button.png"),
height: 65,
),
),
)
],
),
),
),
);
}
} }

@ -1,84 +1,53 @@
import 'package:auto_size_text/auto_size_text.dart'; import 'package:auto_size_text/auto_size_text.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:google_fonts/google_fonts.dart'; import 'package:google_fonts/google_fonts.dart';
import 'package:gradient_borders/box_borders/gradient_box_border.dart'; import 'package:gradient_borders/box_borders/gradient_box_border.dart';
import 'package:justmusic/components/profil_picture_component.dart';
import 'package:text_scroll/text_scroll.dart'; import 'package:text_scroll/text_scroll.dart';
import 'package:zoom_tap_animation/zoom_tap_animation.dart'; import 'package:zoom_tap_animation/zoom_tap_animation.dart';
import '../model/Post.dart';
class PostComponent extends StatefulWidget { class PostComponent extends StatefulWidget {
final Function(Post)? callback; final VoidCallback? callback;
final Post post; PostComponent({Key? key, required this.callback}) : super(key: key);
final int index;
PostComponent({Key? key, required this.callback, required this.post, required this.index}) : super(key: key);
@override @override
State<PostComponent> createState() => _PostComponentState(); State<PostComponent> createState() => _PostComponentState();
} }
class _PostComponentState extends State<PostComponent> with TickerProviderStateMixin { class _PostComponentState extends State<PostComponent> {
bool choice = false; bool choice = false;
DateTime today = DateTime.now();
void switchChoice() { void switchChoice() {
setState(() { setState(() {
choice = !choice; choice = !choice;
}); });
} }
String formatPostDate(DateTime postDate) {
DateTime now = DateTime.now();
DateTime yesterday = DateTime(now.year, now.month, now.day - 1);
if (postDate.year == now.year && postDate.month == now.month && postDate.day == now.day) {
// Aujourd'hui
return "Aujourd'hui, ${postDate.hour}:${postDate.minute.toString().padLeft(2, '0')}";
} else if (postDate.year == yesterday.year && postDate.month == yesterday.month && postDate.day == yesterday.day) {
// Hier
return 'hier, ${postDate.hour}:${postDate.minute.toString().padLeft(2, '0')}';
} else {
// Autre date
return '${postDate.day} ${_getMonthAbbreviation(postDate.month)} ${postDate.hour}:${postDate.minute.toString().padLeft(2, '0')}';
}
}
String _getMonthAbbreviation(int month) {
const List<String> monthsAbbreviation = [
'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.',
];
return monthsAbbreviation[month - 1];
}
@override
void initState() {
print("post: ${widget.post.date.toString()}");
print("ajrd: ${DateTime.now().toString()}");
super.initState();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
var mins = "0";
if (widget.post.date.minute < 10) {
mins = "0${widget.post.date.minute}";
} else {
mins = widget.post.date.minute.toString();
}
return GestureDetector( return GestureDetector(
onTap: switchChoice, onTap: switchChoice,
child: SizedBox( child: LayoutBuilder(
builder: (BuildContext context, BoxConstraints constraints) {
if (choice && widget.callback == null) {
return SizedBox(
width: double.infinity, width: double.infinity,
child: Column( child: Column(
children: [ children: [
Row( Row(
crossAxisAlignment: CrossAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.end,
children: [ children: [
ProfilPictureComponent(user: widget.post.user), ClipOval(
child: SizedBox.fromSize(
// Image radius
child: const Image(
image:
AssetImage("assets/images/exemple_profile.png"),
width: 40,
),
),
),
Expanded( Expanded(
flex: 8, flex: 8,
child: Padding( child: Padding(
@ -87,40 +56,223 @@ class _PostComponentState extends State<PostComponent> with TickerProviderStateM
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( Text(
widget.post.user.pseudo, "Melina",
style: GoogleFonts.plusJakartaSans(color: Colors.white, fontWeight: FontWeight.w600), style: GoogleFonts.plusJakartaSans(
color: Colors.white,
fontWeight: FontWeight.w600),
), ),
widget.post.location.item2 != null Text(
? Text( "France, Lyon",
"${widget.post.location.item1}, ${widget.post.location.item2}",
style: GoogleFonts.plusJakartaSans( style: GoogleFonts.plusJakartaSans(
color: Colors.white.withOpacity(0.4), color: Colors.white.withOpacity(0.4),
fontWeight: FontWeight.w300, fontWeight: FontWeight.w300,
fontSize: 13), fontSize: 13),
) )
: Text( ],
"", ),
),
),
Text(
"Aujourdhui, 16:43",
style: GoogleFonts.plusJakartaSans( style: GoogleFonts.plusJakartaSans(
color: Colors.white.withOpacity(0.4), color: Colors.white.withOpacity(0.4),
fontWeight: FontWeight.w300, fontWeight: FontWeight.w300,
fontSize: 13), fontSize: 13),
) ),
],
),
SizedBox(height: 10),
ZoomTapAnimation(
onTap: widget.callback,
enableLongTapRepeatEvent: false,
longTapRepeatDuration: const Duration(milliseconds: 100),
begin: 1.0,
end: 0.99,
beginDuration: const Duration(milliseconds: 70),
endDuration: const Duration(milliseconds: 100),
beginCurve: Curves.decelerate,
endCurve: Curves.easeInOutSine,
child: AspectRatio(
aspectRatio: 1 / 1,
child: Container(
decoration: BoxDecoration(
// add border
border: const GradientBoxBorder(
gradient: LinearGradient(
colors: [
Colors.transparent,
Color(0xFF323232),
],
begin: Alignment.topCenter,
end: Alignment.bottomCenter),
width: 2.5,
),
// set border radius
borderRadius: BorderRadius.circular(20),
),
child: ClipRRect(
borderRadius: BorderRadius.circular(18),
// implement image
child: Stack(
alignment: Alignment.bottomCenter,
children: [
Image(
image: AssetImage(
"assets/images/exemple_profile.png"),
fit: BoxFit.cover,
width: double.infinity,
),
Positioned(
top: 0,
right: 0,
child: Padding(
padding: EdgeInsets.all(12),
child: Container(
constraints: BoxConstraints(
maxWidth: 140, maxHeight: 140),
width: 80.sp,
height: 80.sp,
decoration: BoxDecoration(
color: Colors.white,
// add border
border: Border.all(
width: 3, color: Colors.white),
// set border radius
borderRadius:
BorderRadius.circular(15),
),
child: ClipRRect(
borderRadius:
BorderRadius.circular(13),
// implement image
child: Image(
image: AssetImage(
'assets/images/exemple_cover.png'),
fit: BoxFit.cover,
),
),
),
))
],
),
),
),
)),
SizedBox(height: 15),
Row(
crossAxisAlignment: CrossAxisAlignment.end,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Flexible(
flex: 8,
child: TextScroll(
"BOOBA",
style: GoogleFonts.plusJakartaSans(
height: 1,
color: Colors.white,
fontWeight: FontWeight.w600,
fontSize: 26.h),
mode: TextScrollMode.endless,
pauseBetween: Duration(milliseconds: 500),
velocity: Velocity(pixelsPerSecond: Offset(20, 0)),
)),
Padding(
padding: EdgeInsets.only(
bottom: 10.h, right: 5.w, left: 5.w),
child: ClipOval(
child: Container(
width: 5.h,
height: 5.h,
color: Colors.white,
),
),
),
Expanded(
flex: 8,
child: Padding(
padding: EdgeInsets.only(bottom: 2),
child: TextScroll(
"A.C. Milan",
style: GoogleFonts.plusJakartaSans(
height: 1,
color: Colors.white,
fontWeight: FontWeight.w300,
fontSize: 16.h),
mode: TextScrollMode.endless,
velocity:
Velocity(pixelsPerSecond: Offset(50, 20)),
pauseBetween: Duration(milliseconds: 500),
),
)),
Container(width: 10),
AutoSizeText(
"2013",
style: GoogleFonts.plusJakartaSans(
color: Colors.white.withOpacity(0.5),
fontWeight: FontWeight.w300,
fontSize: 16.h),
textAlign: TextAlign.end,
maxFontSize: 20,
),
],
),
], ],
), ),
);
}
return SizedBox(
width: double.infinity,
child: Column(
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
ClipOval(
child: SizedBox.fromSize(
// Image radius
child: const Image(
image:
AssetImage("assets/images/exemple_profile.png"),
width: 40,
),
), ),
), ),
Expanded(
flex: 8,
child: Padding(
padding: const EdgeInsets.only(left: 10),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"Melina",
style: GoogleFonts.plusJakartaSans(
color: Colors.white,
fontWeight: FontWeight.w600),
),
Text( Text(
formatPostDate(widget.post.date), "France, Lyon",
style: GoogleFonts.plusJakartaSans( style: GoogleFonts.plusJakartaSans(
color: Colors.white.withOpacity(0.4), fontWeight: FontWeight.w300, fontSize: 13), color: Colors.white.withOpacity(0.4),
fontWeight: FontWeight.w300,
fontSize: 13),
) )
], ],
), ),
),
),
Text(
"Aujourdhui, 16:43",
style: GoogleFonts.plusJakartaSans(
color: Colors.white.withOpacity(0.4),
fontWeight: FontWeight.w300,
fontSize: 13),
),
],
),
SizedBox(height: 10), SizedBox(height: 10),
ZoomTapAnimation( ZoomTapAnimation(
onTap: () { onTap: widget.callback,
widget.callback!(widget.post);
},
enableLongTapRepeatEvent: false, enableLongTapRepeatEvent: false,
longTapRepeatDuration: const Duration(milliseconds: 100), longTapRepeatDuration: const Duration(milliseconds: 100),
begin: 1.0, begin: 1.0,
@ -135,10 +287,13 @@ class _PostComponentState extends State<PostComponent> with TickerProviderStateM
decoration: BoxDecoration( decoration: BoxDecoration(
// add border // add border
border: const GradientBoxBorder( border: const GradientBoxBorder(
gradient: LinearGradient(colors: [ gradient: LinearGradient(
colors: [
Colors.transparent, Colors.transparent,
Color(0xFF323232), Color(0xFF323232),
], begin: Alignment.topCenter, end: Alignment.bottomCenter), ],
begin: Alignment.topCenter,
end: Alignment.bottomCenter),
width: 2.5, width: 2.5,
), ),
// set border radius // set border radius
@ -150,79 +305,104 @@ class _PostComponentState extends State<PostComponent> with TickerProviderStateM
child: Stack( child: Stack(
alignment: Alignment.bottomCenter, alignment: Alignment.bottomCenter,
children: [ children: [
SizedBox( Image(
image: AssetImage(
"assets/images/exemple_cover.png"),
fit: BoxFit.cover,
width: double.infinity, width: double.infinity,
child: Image.network(
widget.post.music.cover!,
),
), ),
Image( Image(
image: AssetImage("assets/images/shadow_post.png"), image:
opacity: AnimationController(vsync: this, value: 0.7), AssetImage("assets/images/shadow_post.png"),
fit: BoxFit.fitHeight, fit: BoxFit.fitHeight,
width: double.infinity, width: double.infinity,
), ),
widget.post.description == null Padding(
? Container()
: Padding(
padding: EdgeInsets.all(15), padding: EdgeInsets.all(15),
child: AutoSizeText( child: AutoSizeText(
'${widget.post.description}', '“Jécoute en boucle ce son. B2O<3',
style: GoogleFonts.plusJakartaSans( style: GoogleFonts.plusJakartaSans(
color: Colors.white, fontWeight: FontWeight.w400, fontSize: 15.sp), color: Colors.white,
fontWeight: FontWeight.w400,
fontSize: 15.sp),
maxFontSize: 20, maxFontSize: 20,
maxLines: 1, maxLines: 1,
), ),
), ),
widget.post.selfie != null Positioned(
? Positioned(
top: 0, top: 0,
right: 0, right: 0,
child: Padding( child: Padding(
padding: EdgeInsets.all(12), padding: EdgeInsets.all(12),
child: Container( child: Container(
constraints: BoxConstraints(maxWidth: 140, maxHeight: 140), constraints: BoxConstraints(
width: 90.sp, maxWidth: 140, maxHeight: 140),
height: 90.sp, width: 80.sp,
height: 80.sp,
decoration: BoxDecoration( decoration: BoxDecoration(
color: Colors.white, color: Colors.white,
// add border // add border
border: Border.all(width: 3, color: Colors.white), border: Border.all(
width: 3, color: Colors.white),
// set border radius // set border radius
borderRadius: BorderRadius.circular(15), borderRadius: BorderRadius.circular(15),
), ),
child: ClipRRect( child: ClipRRect(
borderRadius: BorderRadius.circular(13), borderRadius: BorderRadius.circular(13),
// implement image // implement image
child: Image.network( child: Image(
widget.post.selfie!, image: AssetImage(
'assets/images/exemple_profile.png'),
fit: BoxFit.cover, fit: BoxFit.cover,
), ),
), ),
), ),
)) ))
: Container(),
], ],
), ),
), ),
), ),
)), )),
SizedBox(height: 15), SizedBox(height: 15),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row( Row(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.end,
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
Flexible(
flex: 8,
child: TextScroll(
"BOOBA",
style: GoogleFonts.plusJakartaSans(
height: 1,
color: Colors.white,
fontWeight: FontWeight.w600,
fontSize: 26.h),
mode: TextScrollMode.endless,
pauseBetween: Duration(milliseconds: 500),
velocity: Velocity(pixelsPerSecond: Offset(20, 0)),
)),
Padding(
padding:
EdgeInsets.only(bottom: 10.h, right: 5.w, left: 5.w),
child: ClipOval(
child: Container(
width: 5.h,
height: 5.h,
color: Colors.white,
),
),
),
Expanded( Expanded(
flex: 8, flex: 8,
child: Padding( child: Padding(
padding: EdgeInsets.only(bottom: 2), padding: EdgeInsets.only(bottom: 2),
child: TextScroll( child: TextScroll(
widget.post.music.title!, "A.C. Milan",
style: GoogleFonts.plusJakartaSans( style: GoogleFonts.plusJakartaSans(
height: 1, color: Colors.white, fontWeight: FontWeight.w600, fontSize: 26.h), height: 1,
color: Colors.white,
fontWeight: FontWeight.w300,
fontSize: 16.h),
mode: TextScrollMode.endless, mode: TextScrollMode.endless,
velocity: Velocity(pixelsPerSecond: Offset(50, 20)), velocity: Velocity(pixelsPerSecond: Offset(50, 20)),
pauseBetween: Duration(milliseconds: 500), pauseBetween: Duration(milliseconds: 500),
@ -230,25 +410,21 @@ class _PostComponentState extends State<PostComponent> with TickerProviderStateM
)), )),
Container(width: 10), Container(width: 10),
AutoSizeText( AutoSizeText(
widget.post.music.date.toString(), "2013",
style: GoogleFonts.plusJakartaSans( style: GoogleFonts.plusJakartaSans(
color: Colors.white, fontWeight: FontWeight.w600, fontSize: 26.h), color: Colors.white.withOpacity(0.5),
fontWeight: FontWeight.w300,
fontSize: 16.h),
textAlign: TextAlign.end, textAlign: TextAlign.end,
maxFontSize: 20, maxFontSize: 20,
), ),
], ],
), ),
TextScroll(
widget.post.music.artists.first.name!,
style: GoogleFonts.plusJakartaSans(
height: 1, color: Colors.white.withOpacity(0.5), fontWeight: FontWeight.w300, fontSize: 16.h),
mode: TextScrollMode.endless,
pauseBetween: Duration(milliseconds: 500),
velocity: Velocity(pixelsPerSecond: Offset(20, 0)),
),
], ],
), ),
], );
))); },
),
);
} }
} }

@ -1,35 +0,0 @@
import 'package:flutter/material.dart';
import '../config/routes.dart';
import '../model/User.dart';
class ProfilPictureComponent extends StatelessWidget {
final User user;
const ProfilPictureComponent({super.key, required this.user});
void _openDetail(BuildContext context) {
print("cc");
Navigator.of(context).push(routeUser(user));
}
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: () {
_openDetail(context);
},
child: ClipOval(
child: SizedBox(
height: 40,
width: 40,
// Image radius
child: FadeInImage.assetNetwork(
image: user.pp,
fit: BoxFit.cover,
fadeInDuration: const Duration(milliseconds: 100),
placeholder: "assets/images/loadingPlaceholder.gif",
),
),
),
);
}
}

@ -1,7 +1,6 @@
import 'package:auto_size_text/auto_size_text.dart'; import 'package:auto_size_text/auto_size_text.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:google_fonts/google_fonts.dart'; import 'package:google_fonts/google_fonts.dart';
import 'package:justmusic/components/statistics_component.dart'; import 'package:justmusic/components/statistics_component.dart';
@ -19,30 +18,24 @@ class ProfileComponent extends StatelessWidget {
ClipOval( ClipOval(
child: ConstrainedBox( child: ConstrainedBox(
constraints: BoxConstraints(maxWidth: 200, maxHeight: 200), constraints: BoxConstraints(maxWidth: 200, maxHeight: 200),
child: SizedBox( child: Image(
width: 100.w, image: AssetImage("assets/images/exemple_profile.png"),
height: 100.w, height: 100.w,
child: FadeInImage.assetNetwork( width: 100.w,
image: user.pp, ),
fit: BoxFit.cover,
fadeInDuration: const Duration(milliseconds: 100),
placeholder: "assets/images/loadingPlaceholder.gif",
), ),
)),
), ),
SizedBox( SizedBox(
height: 10, height: 10,
), ),
GestureDetector( AutoSizeText(
onLongPress: () async { "@${user.pseudo}",
await Clipboard.setData(ClipboardData(text: user.uniquePseudo)); style: GoogleFonts.plusJakartaSans(
}, fontSize: 15.sp,
child: AutoSizeText( color: Colors.white,
"${user.pseudo}", fontWeight: FontWeight.w400),
style: GoogleFonts.plusJakartaSans(fontSize: 15.sp, color: Colors.white, fontWeight: FontWeight.w400),
maxFontSize: 30, maxFontSize: 30,
), ),
),
SizedBox( SizedBox(
height: 20, height: 20,
), ),

@ -1,135 +0,0 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:justmusic/components/profil_picture_component.dart';
import '../main.dart';
import '../model/User.dart';
import '../values/constants.dart';
class ProfileListComponent extends StatefulWidget {
final User user;
const ProfileListComponent({super.key, required this.user});
@override
State<ProfileListComponent> createState() => _ProfileListComponentState();
}
class _ProfileListComponentState extends State<ProfileListComponent> {
late bool clicked;
@override
Widget build(BuildContext context) {
clicked = MyApp.userViewModel.isFriend(widget.user.id);
return Container(
padding: const EdgeInsets.only(bottom: 5),
child: Row(
children: [
ProfilPictureComponent(user: widget.user),
const SizedBox(
width: 10,
),
Expanded(
flex: 10,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
widget.user.pseudo,
style: GoogleFonts.plusJakartaSans(fontSize: 16, color: Colors.white, fontWeight: FontWeight.w700),
overflow: TextOverflow.ellipsis,
maxLines: 1,
),
Row(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
Text(
widget.user.uniquePseudo,
overflow: TextOverflow.ellipsis,
style: GoogleFonts.plusJakartaSans(color: Colors.grey, fontWeight: FontWeight.w400),
),
widget.user.followed.contains(MyApp.userViewModel.userCurrent.id)
? Container(
padding: const EdgeInsets.all(2),
margin: const EdgeInsets.only(left: 10),
decoration: const BoxDecoration(
color: grayColor,
borderRadius: BorderRadius.all(Radius.circular(3)),
),
child: Text(
"Vous suit",
overflow: TextOverflow.ellipsis,
style: GoogleFonts.plusJakartaSans(
color: Colors.grey.withOpacity(0.4), fontWeight: FontWeight.w700, fontSize: 12),
),
)
: Container(),
],
)
],
),
),
Spacer(),
clicked
? Material(
borderRadius: BorderRadius.all(Radius.circular(5)),
color: selectedButton,
child: InkWell(
splashColor: Colors.white.withOpacity(0.3),
onTap: () async {
await MyApp.userViewModel.addOrDeleteFriend(widget.user.id);
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(
"Vous ne suivez plus ${widget.user.pseudo}",
style: GoogleFonts.plusJakartaSans(
color: Colors.white, fontWeight: FontWeight.w400, fontSize: 20.h),
),
backgroundColor: Colors.red,
closeIconColor: Colors.white,
),
);
setState(() {});
},
child: Container(
padding: EdgeInsets.fromLTRB(28, 7, 28, 7),
decoration: BoxDecoration(borderRadius: BorderRadius.all(Radius.circular(7))),
child: Center(
child: Text("Ajouté",
style: GoogleFonts.plusJakartaSans(
color: Colors.white, fontWeight: FontWeight.w600, fontSize: 13)),
),
)))
: Material(
borderRadius: BorderRadius.all(Radius.circular(5)),
color: primaryColor,
child: InkWell(
splashColor: Colors.white.withOpacity(0.3),
onTap: () async {
await MyApp.userViewModel.addOrDeleteFriend(widget.user.id);
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
backgroundColor: primaryColor,
content: Text(
"Vous suivez à present ${widget.user.pseudo}",
style: GoogleFonts.plusJakartaSans(
color: Colors.white, fontWeight: FontWeight.w400, fontSize: 20.h),
),
),
);
setState(() {});
},
child: Container(
padding: EdgeInsets.fromLTRB(25, 7, 25, 7),
decoration: BoxDecoration(borderRadius: BorderRadius.all(Radius.circular(7))),
child: Center(
child: Text("Ajouter",
style: GoogleFonts.plusJakartaSans(
color: Colors.white, fontWeight: FontWeight.w600, fontSize: 13)),
),
))),
],
),
);
}
}

@ -1,124 +0,0 @@
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
import '../main.dart';
import '../model/User.dart' as justMusic;
import '../values/constants.dart';
import 'little_post_recap_component.dart';
class RecapComponent extends StatelessWidget {
final justMusic.User user;
const RecapComponent({super.key, required this.user});
Future<List<bool>>? _fetchdata() async {
return await MyApp.postViewModel.recapSevenDays(user.id);
}
@override
Widget build(BuildContext context) {
List<String> weekDays = ['L', 'M', 'M', 'J', 'V', 'S', 'D'];
DateTime currentDate = DateTime.now();
return Container(
decoration: BoxDecoration(
color: profileBttnColor,
borderRadius: BorderRadius.circular(10),
border: Border.all(color: grayColor, width: 1)),
height: 120,
clipBehavior: Clip.hardEdge,
child: Column(
children: [
Expanded(
child: Container(
padding: EdgeInsets.symmetric(horizontal: 10),
decoration: BoxDecoration(
color: postbutton,
borderRadius: BorderRadius.only(topRight: Radius.circular(10), topLeft: Radius.circular(10)),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Flexible(
child: Center(
child: Text(
weekDays[currentDate.subtract(Duration(days: 6)).weekday - 1].substring(0, 1),
style: GoogleFonts.plusJakartaSans(color: Colors.white, fontWeight: FontWeight.w800, fontSize: 17),
),
)),
Flexible(
child: Center(
child: Text(
weekDays[currentDate.subtract(Duration(days: 5)).weekday - 1].substring(0, 1),
style: GoogleFonts.plusJakartaSans(color: Colors.white, fontWeight: FontWeight.w800, fontSize: 17),
),
)),
Flexible(
child: Center(
child: Text(
weekDays[currentDate.subtract(Duration(days: 4)).weekday - 1].substring(0, 1),
style: GoogleFonts.plusJakartaSans(color: Colors.white, fontWeight: FontWeight.w800, fontSize: 17),
),
)),
Flexible(
child: Center(
child: Text(
weekDays[currentDate.subtract(Duration(days: 3)).weekday - 1].substring(0, 1),
style: GoogleFonts.plusJakartaSans(color: Colors.white, fontWeight: FontWeight.w800, fontSize: 17),
),
)),
Flexible(
child: Center(
child: Text(
weekDays[currentDate.subtract(Duration(days: 2)).weekday - 1].substring(0, 1),
style: GoogleFonts.plusJakartaSans(color: Colors.white, fontWeight: FontWeight.w800, fontSize: 17),
),
)),
Flexible(
child: Center(
child: Text(
weekDays[currentDate.subtract(Duration(days: 1)).weekday - 1].substring(0, 1),
style: GoogleFonts.plusJakartaSans(color: Colors.white, fontWeight: FontWeight.w800, fontSize: 17),
),
)),
Flexible(
child: Center(
child: Text(
weekDays[currentDate.subtract(Duration(days: 0)).weekday - 1].substring(0, 1),
style: GoogleFonts.plusJakartaSans(color: Colors.white, fontWeight: FontWeight.w800, fontSize: 17),
),
)),
],
),
)),
FutureBuilder<List<bool>>(
future: _fetchdata(), // a previously-obtained Future<String> or null
builder: (BuildContext context, AsyncSnapshot<List<bool>> snapshot) {
if (snapshot.hasData) {
return Padding(
padding: EdgeInsets.all(12),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.end,
children: [
LittleCapsule(
isEmpty: snapshot.data![0],
date: currentDate.subtract(const Duration(days: 6)),
),
LittleCapsule(isEmpty: snapshot.data![1], date: currentDate.subtract(const Duration(days: 5))),
LittleCapsule(isEmpty: snapshot.data![2], date: currentDate.subtract(const Duration(days: 4))),
LittleCapsule(isEmpty: snapshot.data![3], date: currentDate.subtract(const Duration(days: 3))),
LittleCapsule(isEmpty: snapshot.data![4], date: currentDate.subtract(const Duration(days: 2))),
LittleCapsule(isEmpty: snapshot.data![5], date: currentDate.subtract(const Duration(days: 1))),
LittleCapsule(isEmpty: snapshot.data![6], date: currentDate.subtract(const Duration(days: 0))),
],
),
);
} else {
return Container();
}
}),
],
),
);
}
}

@ -1,4 +1,4 @@
import 'package:flutter/material.dart'; import 'package:flutter/Material.dart';
import 'package:google_fonts/google_fonts.dart'; import 'package:google_fonts/google_fonts.dart';
import '../values/constants.dart'; import '../values/constants.dart';

@ -1,4 +1,3 @@
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart'; import 'package:google_fonts/google_fonts.dart';
import 'package:justmusic/values/icons.dart'; import 'package:justmusic/values/icons.dart';
@ -9,30 +8,29 @@ class SettingPartComponent extends StatelessWidget {
final JustMusicIcon icon; final JustMusicIcon icon;
final String label; final String label;
final bool important; final bool important;
final VoidCallback? action;
const SettingPartComponent( const SettingPartComponent(
{Key? key, required this.icon, required this.label, this.important = false, required this.action}) {Key? key,
required this.icon,
required this.label,
this.important = false})
: super(key: key); : super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
Future<void> logout() async {
print("cc");
await FirebaseAuth.instance.signOut();
Navigator.pushNamed(context, '/welcome');
}
return Material( return Material(
color: important ? warningBttnColor : settingColor, color: important ? warningBttnColor : settingColor,
borderOnForeground: false, borderOnForeground: false,
child: InkWell( child: InkWell(
onTap: action, onTap: () {
print('InkWell was tapped!');
},
splashColor: Colors.transparent, splashColor: Colors.transparent,
highlightColor: Colors.white.withOpacity(0.08), highlightColor: Colors.white.withOpacity(0.08),
child: Container( child: Container(
width: double.infinity, width: double.infinity,
child: Padding( child: Padding(
padding: const EdgeInsets.fromLTRB(defaultPadding, 19, defaultPadding, 19), padding: const EdgeInsets.fromLTRB(
defaultPadding, 19, defaultPadding, 19),
child: Row( child: Row(
children: [ children: [
Image( Image(
@ -47,7 +45,8 @@ class SettingPartComponent extends StatelessWidget {
child: Text( child: Text(
label, label,
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,
style: GoogleFonts.plusJakartaSans(color: Colors.white, fontWeight: FontWeight.w700), style: GoogleFonts.plusJakartaSans(
color: Colors.white, fontWeight: FontWeight.w700),
), ),
), ),
Spacer(), Spacer(),

@ -20,7 +20,7 @@ class StatisticsComponent extends StatelessWidget {
child: Column( child: Column(
children: [ children: [
AutoSizeText( AutoSizeText(
user.followed.length.toString(), user.followed.toString(),
style: GoogleFonts.plusJakartaSans( style: GoogleFonts.plusJakartaSans(
color: Colors.white, color: Colors.white,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
@ -40,7 +40,7 @@ class StatisticsComponent extends StatelessWidget {
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
AutoSizeText( AutoSizeText(
user.followers.length.toString(), user.followers.toString(),
style: GoogleFonts.plusJakartaSans( style: GoogleFonts.plusJakartaSans(
color: Colors.white, color: Colors.white,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,

@ -1,142 +1,33 @@
import 'package:another_flushbar/flushbar.dart';
import 'package:auto_size_text/auto_size_text.dart'; import 'package:auto_size_text/auto_size_text.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_countdown_timer/flutter_countdown_timer.dart';
import 'package:google_fonts/google_fonts.dart'; import 'package:google_fonts/google_fonts.dart';
import 'package:ionicons/ionicons.dart';
import 'package:lottie/lottie.dart';
import 'package:zoom_tap_animation/zoom_tap_animation.dart';
import '../config/routes.dart'; import '../config/routes.dart';
import 'package:timezone/timezone.dart' as tz;
import '../main.dart';
import '../values/constants.dart'; import '../values/constants.dart';
class TopNavBarComponent extends StatefulWidget { class TopNavBarComponent extends StatefulWidget {
final Function(bool) callback; final Function(bool) callback;
final bool choice; const TopNavBarComponent({Key? key, required this.callback})
const TopNavBarComponent({Key? key, required this.callback, required this.choice}) : super(key: key); : super(key: key);
@override @override
State<TopNavBarComponent> createState() => _TopNavBarComponentState(); State<TopNavBarComponent> createState() => _TopNavBarComponentState();
} }
class _TopNavBarComponentState extends State<TopNavBarComponent> with TickerProviderStateMixin { class _TopNavBarComponentState extends State<TopNavBarComponent> {
late bool choice; bool choice = true;
bool isDismissed = true; void actionSurBouton() {
final DateTime midnight = DateTime(DateTime.now().year, DateTime.now().month, DateTime.now().day + 1);
void actionSurBouton(bool choice) async {
widget.callback(choice); widget.callback(choice);
} }
@override
void initState() {
super.initState();
}
Future<void> showCapsuleDot() async {
// Get the timezone for France
final franceTimeZone = tz.getLocation('Europe/Paris');
// Get the current date and time in France timezone
var now = tz.TZDateTime.now(franceTimeZone);
// Calculate the midnight time for the next day in France timezone
var midnight = tz.TZDateTime(franceTimeZone, now.year, now.month, now.day + 1);
bool res = await MyApp.postViewModel.getAvailable();
if (res) {
Flushbar(
maxWidth: 210,
animationDuration: Duration(seconds: 1),
forwardAnimationCurve: Curves.easeOutCirc,
margin: EdgeInsets.fromLTRB(0, 0, 0, 0),
icon: Icon(
Ionicons.sparkles,
color: Colors.white,
size: 18,
),
padding: EdgeInsets.fromLTRB(8, 8, 8, 8),
messageText: Align(
alignment: Alignment.centerLeft,
child: Text(
"Capsule disponible",
style: GoogleFonts.plusJakartaSans(color: Colors.grey, fontSize: 15),
),
),
flushbarStyle: FlushbarStyle.FLOATING,
flushbarPosition: FlushbarPosition.BOTTOM,
textDirection: Directionality.of(context),
borderRadius: BorderRadius.circular(1000),
borderWidth: 1,
borderColor: Colors.white.withOpacity(0.04),
duration: const Duration(minutes: 100),
leftBarIndicatorColor: Colors.transparent,
positionOffset: 20,
onTap: (_) {
Navigator.pop(context);
Navigator.pushNamed(context, '/post');
},
).show(context).then((value) {
setState(() {
isDismissed = !isDismissed;
});
});
} else {
Flushbar(
maxWidth: 155,
animationDuration: Duration(seconds: 1),
forwardAnimationCurve: Curves.easeOutCirc,
margin: EdgeInsets.fromLTRB(0, 0, 0, 0),
icon: Lottie.asset(
'assets/animations/LottieHourGlass.json',
width: 26,
fit: BoxFit.fill,
),
padding: EdgeInsets.fromLTRB(8, 8, 8, 8),
messageText: Align(
alignment: Alignment.centerLeft,
child: CountdownTimer(
endTime: midnight.millisecondsSinceEpoch,
textStyle: GoogleFonts.plusJakartaSans(color: Colors.grey, fontSize: 15),
),
),
flushbarStyle: FlushbarStyle.FLOATING,
flushbarPosition: FlushbarPosition.BOTTOM,
textDirection: Directionality.of(context),
borderRadius: BorderRadius.circular(1000),
borderWidth: 1,
borderColor: Colors.white.withOpacity(0.04),
duration: const Duration(minutes: 100),
leftBarIndicatorColor: Colors.transparent,
positionOffset: 20,
onTap: (_) {},
).show(context).then((value) {
setState(() {
isDismissed = !isDismissed;
});
});
}
}
void checkAvailable() async {
if (isDismissed) {
showCapsuleDot();
setState(() {
isDismissed = !isDismissed;
});
}
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
choice = widget.choice; return Padding(
return SafeArea(top:true,child: Container( padding: const EdgeInsets.only(top: defaultPadding),
padding: EdgeInsets.symmetric(horizontal: defaultPadding, vertical: 20), child: Container(
padding: EdgeInsets.symmetric(horizontal: defaultPadding),
width: double.infinity, width: double.infinity,
height: 100, height: 100,
child: Row( child: Row(
@ -146,103 +37,88 @@ class _TopNavBarComponentState extends State<TopNavBarComponent> with TickerProv
Flexible( Flexible(
flex: 1, flex: 1,
child: GestureDetector( child: GestureDetector(
behavior: HitTestBehavior.translucent,
onTap: () { onTap: () {
Navigator.of(context).push(routeAddFriend()); Navigator.pushNamed(context, '/post');
}, },
child: const Icon( child: const Image(
Icons.person_add_alt_1_rounded, image: AssetImage("assets/images/add_friend.png"),
color: Colors.white, width: 25,
size: 30,
), ),
), ),
), ),
ConstrainedBox( ConstrainedBox(
constraints: BoxConstraints(maxWidth: 200), constraints: BoxConstraints(maxWidth: 170),
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
ZoomTapAnimation( const Image(
enableLongTapRepeatEvent: false,
longTapRepeatDuration: const Duration(milliseconds: 100),
begin: 1.0,
onTap: () {
checkAvailable();
},
end: 0.97,
beginDuration: const Duration(milliseconds: 70),
endDuration: const Duration(milliseconds: 100),
beginCurve: Curves.decelerate,
endCurve: Curves.easeInOutSine,
child: Image(
image: AssetImage("assets/images/logo.png"), image: AssetImage("assets/images/logo.png"),
height: 30, height: 30,
)), ),
Row( Row(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
GestureDetector( GestureDetector(
behavior: HitTestBehavior.translucent,
onTap: () { onTap: () {
if (!choice) { if (!choice) {
setState(() { setState(() {
choice = !choice; choice = !choice;
actionSurBouton(false); actionSurBouton();
}); });
} }
}, },
child: LayoutBuilder( child: LayoutBuilder(
builder: (BuildContext context, BoxConstraints constraints) { builder: (BuildContext context,
BoxConstraints constraints) {
if (choice) { if (choice) {
return Padding( return AutoSizeText(
padding: const EdgeInsets.only(left: 8, top: 0, right: 8, bottom: 6),
child: AutoSizeText(
"Mes amis", "Mes amis",
style: GoogleFonts.plusJakartaSans( style: GoogleFonts.plusJakartaSans(
fontWeight: FontWeight.w500, fontSize: 16, color: Colors.white), fontWeight: FontWeight.w500,
), fontSize: 16,
color: Colors.white),
); );
} else { } else {
return Padding( return AutoSizeText(
padding: const EdgeInsets.only(left: 8, top: 0, right: 8, bottom: 6),
child: AutoSizeText(
"Mes amis", "Mes amis",
style: GoogleFonts.plusJakartaSans( style: GoogleFonts.plusJakartaSans(
fontWeight: FontWeight.w300, fontSize: 16, color: unactiveFeed), fontWeight: FontWeight.w300,
)); fontSize: 16,
color: unactiveFeed),
);
} }
}, },
), ),
), ),
GestureDetector( GestureDetector(
behavior: HitTestBehavior.translucent,
onTap: () { onTap: () {
if (choice) { if (choice) {
setState(() { setState(() {
choice = !choice; choice = !choice;
actionSurBouton(true); actionSurBouton();
}); });
} }
}, },
child: LayoutBuilder( child: LayoutBuilder(
builder: (BuildContext context, BoxConstraints constraints) { builder: (BuildContext context,
BoxConstraints constraints) {
if (choice) { if (choice) {
return Padding( return AutoSizeText(
padding: const EdgeInsets.only(left: 8, top: 0, right: 8, bottom: 6),
child: AutoSizeText(
"Discovery", "Discovery",
style: GoogleFonts.plusJakartaSans( style: GoogleFonts.plusJakartaSans(
fontWeight: FontWeight.w300, fontSize: 16, color: unactiveFeed), fontWeight: FontWeight.w300,
)); fontSize: 16,
color: unactiveFeed),
);
} else { } else {
return Padding( return AutoSizeText(
padding: const EdgeInsets.only(left: 8, top: 0, right: 8, bottom: 6),
child: AutoSizeText(
"Discovery", "Discovery",
style: GoogleFonts.plusJakartaSans( style: GoogleFonts.plusJakartaSans(
fontWeight: FontWeight.w500, fontSize: 16, color: Colors.white), fontWeight: FontWeight.w500,
)); fontSize: 16,
color: Colors.white),
);
} }
}, },
), ),
@ -255,20 +131,15 @@ class _TopNavBarComponentState extends State<TopNavBarComponent> with TickerProv
Flexible( Flexible(
flex: 1, flex: 1,
child: GestureDetector( child: GestureDetector(
onTap: () async { onTap: () {
await MyApp.userViewModel.updateUserCurrent(); Navigator.of(context).push(createRoute());
Navigator.of(context).push(routeProfile());
}, },
child: ClipOval( child: ClipOval(
child: SizedBox( child: SizedBox.fromSize(
width: 30,
height: 30,
// Image radius // Image radius
child: FadeInImage.assetNetwork( child: const Image(
image: MyApp.userViewModel.userCurrent.pp, image: AssetImage("assets/images/exemple_profile.png"),
fit: BoxFit.cover, width: 25,
fadeInDuration: const Duration(milliseconds: 100),
placeholder: "assets/images/loadingPlaceholder.gif",
), ),
), ),
), ),

@ -1,65 +1,10 @@
import 'package:flutter/material.dart'; import 'package:flutter/Material.dart';
import 'package:justmusic/screens/add_friend_screen.dart';
import 'package:justmusic/screens/capsule_historic_screen.dart';
import 'package:justmusic/screens/change_password_screen.dart';
import 'package:justmusic/screens/feed_screen.dart';
import 'package:justmusic/screens/profile_screen.dart'; import 'package:justmusic/screens/profile_screen.dart';
import 'package:justmusic/screens/user_screen.dart';
import 'package:justmusic/screens/welcome_screen.dart';
import '../model/User.dart'; Route createRoute() {
Route routeProfile() {
return PageRouteBuilder(
pageBuilder: (context, animation, secondaryAnimation) => const ProfileScreen(),
transitionsBuilder: (context, animation, secondaryAnimation, child) {
const begin = Offset(1.0, 0.0);
const end = Offset.zero;
const curve = Curves.ease;
var tween = Tween(begin: begin, end: end).chain(CurveTween(curve: curve));
return SlideTransition(
position: animation.drive(tween),
child: child,
);
},
);
}
Route routeAddFriend() {
return PageRouteBuilder(
pageBuilder: (context, animation, secondaryAnimation) => const AddFriendScreen(),
transitionsBuilder: (context, animation, secondaryAnimation, child) {
const begin = Offset(-1.0, 0.0);
const end = Offset.zero;
const curve = Curves.ease;
var tween = Tween(begin: begin, end: end).chain(CurveTween(curve: curve));
return SlideTransition(
position: animation.drive(tween),
child: child,
);
},
);
}
Route routeRocket() {
return PageRouteBuilder(
pageBuilder: (context, animation, secondaryAnimation) => FeedScreen(),
transitionsBuilder: (context, animation, secondaryAnimation, child) {
return FadeTransition(
opacity: animation,
child: child,
);
},
);
}
Route routeUser(User user) {
return PageRouteBuilder( return PageRouteBuilder(
pageBuilder: (context, animation, secondaryAnimation) => UserScreen(user: user), pageBuilder: (context, animation, secondaryAnimation) =>
const ProfileScreen(),
transitionsBuilder: (context, animation, secondaryAnimation, child) { transitionsBuilder: (context, animation, secondaryAnimation, child) {
const begin = Offset(1.0, 0.0); const begin = Offset(1.0, 0.0);
const end = Offset.zero; const end = Offset.zero;
@ -74,51 +19,3 @@ Route routeUser(User user) {
}, },
); );
} }
Route routePassword() {
return PageRouteBuilder(
pageBuilder: (context, animation, secondaryAnimation) => const ChangePasswordScreen(),
transitionsBuilder: (context, animation, secondaryAnimation, child) {
const begin = Offset(1.0, 0.0);
const end = Offset.zero;
const curve = Curves.ease;
var tween = Tween(begin: begin, end: end).chain(CurveTween(curve: curve));
return SlideTransition(
position: animation.drive(tween),
child: child,
);
},
);
}
Route routeHistoric() {
return PageRouteBuilder(
pageBuilder: (context, animation, secondaryAnimation) => const CapsuleHistoricScreen(),
transitionsBuilder: (context, animation, secondaryAnimation, child) {
const begin = Offset(1.0, 0.0);
const end = Offset.zero;
const curve = Curves.ease;
var tween = Tween(begin: begin, end: end).chain(CurveTween(curve: curve));
return SlideTransition(
position: animation.drive(tween),
child: child,
);
},
);
}
Route routeWelcome() {
return PageRouteBuilder(
pageBuilder: (context, animation, secondaryAnimation) => const WellcomeScreen(),
transitionsBuilder: (context, animation, secondaryAnimation, child) {
return FadeTransition(
opacity: animation,
child: child,
);
},
);
}

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

Loading…
Cancel
Save