Compare commits
No commits in common. 'master' and 'WORK-RHA' 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]
|
@ -1,29 +0,0 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Dart SDK">
|
||||
<CLASSES>
|
||||
<root url="file:///opt/homebrew/opt/dart/libexec/lib/async" />
|
||||
<root url="file:///opt/homebrew/opt/dart/libexec/lib/cli" />
|
||||
<root url="file:///opt/homebrew/opt/dart/libexec/lib/collection" />
|
||||
<root url="file:///opt/homebrew/opt/dart/libexec/lib/convert" />
|
||||
<root url="file:///opt/homebrew/opt/dart/libexec/lib/core" />
|
||||
<root url="file:///opt/homebrew/opt/dart/libexec/lib/developer" />
|
||||
<root url="file:///opt/homebrew/opt/dart/libexec/lib/ffi" />
|
||||
<root url="file:///opt/homebrew/opt/dart/libexec/lib/html" />
|
||||
<root url="file:///opt/homebrew/opt/dart/libexec/lib/indexed_db" />
|
||||
<root url="file:///opt/homebrew/opt/dart/libexec/lib/io" />
|
||||
<root url="file:///opt/homebrew/opt/dart/libexec/lib/isolate" />
|
||||
<root url="file:///opt/homebrew/opt/dart/libexec/lib/js" />
|
||||
<root url="file:///opt/homebrew/opt/dart/libexec/lib/js_interop" />
|
||||
<root url="file:///opt/homebrew/opt/dart/libexec/lib/js_interop_unsafe" />
|
||||
<root url="file:///opt/homebrew/opt/dart/libexec/lib/js_util" />
|
||||
<root url="file:///opt/homebrew/opt/dart/libexec/lib/math" />
|
||||
<root url="file:///opt/homebrew/opt/dart/libexec/lib/mirrors" />
|
||||
<root url="file:///opt/homebrew/opt/dart/libexec/lib/svg" />
|
||||
<root url="file:///opt/homebrew/opt/dart/libexec/lib/typed_data" />
|
||||
<root url="file:///opt/homebrew/opt/dart/libexec/lib/web_audio" />
|
||||
<root url="file:///opt/homebrew/opt/dart/libexec/lib/web_gl" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</component>
|
Before Width: | Height: | Size: 162 KiB |
Before Width: | Height: | Size: 94 KiB |
Before Width: | Height: | Size: 844 KiB |
@ -1,121 +0,0 @@
|
||||
Creative Commons Legal Code
|
||||
|
||||
CC0 1.0 Universal
|
||||
|
||||
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
|
||||
LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
|
||||
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
|
||||
INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
|
||||
REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
|
||||
PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
|
||||
THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
|
||||
HEREUNDER.
|
||||
|
||||
Statement of Purpose
|
||||
|
||||
The laws of most jurisdictions throughout the world automatically confer
|
||||
exclusive Copyright and Related Rights (defined below) upon the creator
|
||||
and subsequent owner(s) (each and all, an "owner") of an original work of
|
||||
authorship and/or a database (each, a "Work").
|
||||
|
||||
Certain owners wish to permanently relinquish those rights to a Work for
|
||||
the purpose of contributing to a commons of creative, cultural and
|
||||
scientific works ("Commons") that the public can reliably and without fear
|
||||
of later claims of infringement build upon, modify, incorporate in other
|
||||
works, reuse and redistribute as freely as possible in any form whatsoever
|
||||
and for any purposes, including without limitation commercial purposes.
|
||||
These owners may contribute to the Commons to promote the ideal of a free
|
||||
culture and the further production of creative, cultural and scientific
|
||||
works, or to gain reputation or greater distribution for their Work in
|
||||
part through the use and efforts of others.
|
||||
|
||||
For these and/or other purposes and motivations, and without any
|
||||
expectation of additional consideration or compensation, the person
|
||||
associating CC0 with a Work (the "Affirmer"), to the extent that he or she
|
||||
is an owner of Copyright and Related Rights in the Work, voluntarily
|
||||
elects to apply CC0 to the Work and publicly distribute the Work under its
|
||||
terms, with knowledge of his or her Copyright and Related Rights in the
|
||||
Work and the meaning and intended legal effect of CC0 on those rights.
|
||||
|
||||
1. Copyright and Related Rights. A Work made available under CC0 may be
|
||||
protected by copyright and related or neighboring rights ("Copyright and
|
||||
Related Rights"). Copyright and Related Rights include, but are not
|
||||
limited to, the following:
|
||||
|
||||
i. the right to reproduce, adapt, distribute, perform, display,
|
||||
communicate, and translate a Work;
|
||||
ii. moral rights retained by the original author(s) and/or performer(s);
|
||||
iii. publicity and privacy rights pertaining to a person's image or
|
||||
likeness depicted in a Work;
|
||||
iv. rights protecting against unfair competition in regards to a Work,
|
||||
subject to the limitations in paragraph 4(a), below;
|
||||
v. rights protecting the extraction, dissemination, use and reuse of data
|
||||
in a Work;
|
||||
vi. database rights (such as those arising under Directive 96/9/EC of the
|
||||
European Parliament and of the Council of 11 March 1996 on the legal
|
||||
protection of databases, and under any national implementation
|
||||
thereof, including any amended or successor version of such
|
||||
directive); and
|
||||
vii. other similar, equivalent or corresponding rights throughout the
|
||||
world based on applicable law or treaty, and any national
|
||||
implementations thereof.
|
||||
|
||||
2. Waiver. To the greatest extent permitted by, but not in contravention
|
||||
of, applicable law, Affirmer hereby overtly, fully, permanently,
|
||||
irrevocably and unconditionally waives, abandons, and surrenders all of
|
||||
Affirmer's Copyright and Related Rights and associated claims and causes
|
||||
of action, whether now known or unknown (including existing as well as
|
||||
future claims and causes of action), in the Work (i) in all territories
|
||||
worldwide, (ii) for the maximum duration provided by applicable law or
|
||||
treaty (including future time extensions), (iii) in any current or future
|
||||
medium and for any number of copies, and (iv) for any purpose whatsoever,
|
||||
including without limitation commercial, advertising or promotional
|
||||
purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
|
||||
member of the public at large and to the detriment of Affirmer's heirs and
|
||||
successors, fully intending that such Waiver shall not be subject to
|
||||
revocation, rescission, cancellation, termination, or any other legal or
|
||||
equitable action to disrupt the quiet enjoyment of the Work by the public
|
||||
as contemplated by Affirmer's express Statement of Purpose.
|
||||
|
||||
3. Public License Fallback. Should any part of the Waiver for any reason
|
||||
be judged legally invalid or ineffective under applicable law, then the
|
||||
Waiver shall be preserved to the maximum extent permitted taking into
|
||||
account Affirmer's express Statement of Purpose. In addition, to the
|
||||
extent the Waiver is so judged Affirmer hereby grants to each affected
|
||||
person a royalty-free, non transferable, non sublicensable, non exclusive,
|
||||
irrevocable and unconditional license to exercise Affirmer's Copyright and
|
||||
Related Rights in the Work (i) in all territories worldwide, (ii) for the
|
||||
maximum duration provided by applicable law or treaty (including future
|
||||
time extensions), (iii) in any current or future medium and for any number
|
||||
of copies, and (iv) for any purpose whatsoever, including without
|
||||
limitation commercial, advertising or promotional purposes (the
|
||||
"License"). The License shall be deemed effective as of the date CC0 was
|
||||
applied by Affirmer to the Work. Should any part of the License for any
|
||||
reason be judged legally invalid or ineffective under applicable law, such
|
||||
partial invalidity or ineffectiveness shall not invalidate the remainder
|
||||
of the License, and in such case Affirmer hereby affirms that he or she
|
||||
will not (i) exercise any of his or her remaining Copyright and Related
|
||||
Rights in the Work or (ii) assert any associated claims and causes of
|
||||
action with respect to the Work, in either case contrary to Affirmer's
|
||||
express Statement of Purpose.
|
||||
|
||||
4. Limitations and Disclaimers.
|
||||
|
||||
a. No trademark or patent rights held by Affirmer are waived, abandoned,
|
||||
surrendered, licensed or otherwise affected by this document.
|
||||
b. Affirmer offers the Work as-is and makes no representations or
|
||||
warranties of any kind concerning the Work, express, implied,
|
||||
statutory or otherwise, including without limitation warranties of
|
||||
title, merchantability, fitness for a particular purpose, non
|
||||
infringement, or the absence of latent or other defects, accuracy, or
|
||||
the present or absence of errors, whether or not discoverable, all to
|
||||
the greatest extent permissible under applicable law.
|
||||
c. Affirmer disclaims responsibility for clearing rights of other persons
|
||||
that may apply to the Work or any use thereof, including without
|
||||
limitation any person's Copyright and Related Rights in the Work.
|
||||
Further, Affirmer disclaims responsibility for obtaining any necessary
|
||||
consents, permissions or other rights required for any use of the
|
||||
Work.
|
||||
d. Affirmer understands and acknowledges that Creative Commons is not a
|
||||
party to this document and has no duty or obligation with respect to
|
||||
this CC0 or use of the Work.
|
@ -1,98 +1 @@
|
||||
<div align = center>
|
||||
|
||||
<img src="https://codefirst.iut.uca.fr/git/justDEV/justMusic/raw/branch/master/Documentation/Images/Banner-JustMusic.png" />
|
||||
|
||||
---
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
---
|
||||
|
||||
[Présentation](#présentation) | [Répartion](#répartition-du-gitlab) | [Fonctionnement](#fonctionnement) | [Deploiement](#deploiement) | [Remerciements](#remerciements) | [Wiki](https://codefirst.iut.uca.fr/git/justDEV/justMusic/wiki) | [Site officiel](https://justmusicapp.com)
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
## Présentation
|
||||
|
||||
**Nom de l'application** : JustMusic :musical_note:
|
||||
|
||||
**Contexte** : Envie de partager simplement vos musiques préférées ? JustMusic est là pour ça !
|
||||
|
||||
Chaque jour, partagez un son accompagné de sa pochette, ajoutez une description et même un selfie pour faire découvrir de nouvelles musiques à vos amis.
|
||||
|
||||
Sur ce réseau social dédié aux amoureux de la musique, échangez, commentez et explorez des univers sonores uniques.
|
||||
|
||||
**Récapitulation du Projet**: 👇
|
||||
|
||||
JustMusic est un projet collaboratif à but lucratif pour Android/IOS utilisant les technologie Dart/flutter réalisé par 4 étudiants en BUT informatique.
|
||||
|
||||
|
||||
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
|
||||
|
||||
La racine de notre gitlab est composé de deux dossier essentielles au projet:
|
||||
|
||||
[**Sources**](Sources) : **Code de l'application**
|
||||
|
||||
[**Documentation**](Documentation) : **Regroupe l'entièreté de la documentation**
|
||||
|
||||
</br>
|
||||
|
||||
:warning: Code de l'application en cours!
|
||||
|
||||
## 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
|
||||
|
||||
- [x] 
|
||||
- [x] 
|
||||
- [x] 
|
||||
|
||||
|
||||
## Techniciens
|
||||
|
||||
<a href = "https://codefirst.iut.uca.fr/git/lucas.delanier">
|
||||
<img src ="https://codefirst.iut.uca.fr/git/avatars/6a3835d734392fccff3949f7c82a63b9?size=870" height="50px">
|
||||
</a>
|
||||
<a href = "https://codefirst.iut.uca.fr/git/emre.kartal">
|
||||
<img src ="https://codefirst.iut.uca.fr/git/avatars/1ff65c9c5ab0e8c8883fb48adbcf972f?size=870" height="50px">
|
||||
</a>
|
||||
<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">
|
||||
</a>
|
||||
<a href = "https://codefirst.iut.uca.fr/git/rayhan.hassou">
|
||||
<img src ="https://codefirst.iut.uca.fr/git/avatars/84062b2bb326d9e9154a9859b375e599?size=870" height="50px">
|
||||
</a>
|
||||
|
||||
<div align = center>
|
||||
© JustDev
|
||||
</div>
|
||||
git add README.md
|
@ -1,5 +0,0 @@
|
||||
{
|
||||
"projects": {
|
||||
"default": "justmusic-435d5"
|
||||
}
|
||||
}
|
@ -1,45 +0,0 @@
|
||||
# This file tracks properties of this Flutter project.
|
||||
# Used by Flutter tool to assess capabilities and perform upgrades etc.
|
||||
#
|
||||
# This file should be version controlled and should not be manually edited.
|
||||
|
||||
version:
|
||||
revision: "db7ef5bf9f59442b0e200a90587e8fa5e0c6336a"
|
||||
channel: "stable"
|
||||
|
||||
project_type: app
|
||||
|
||||
# Tracks metadata for the flutter migrate command
|
||||
migration:
|
||||
platforms:
|
||||
- platform: root
|
||||
create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a
|
||||
base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a
|
||||
- platform: android
|
||||
create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a
|
||||
base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a
|
||||
- platform: ios
|
||||
create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a
|
||||
base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a
|
||||
- platform: linux
|
||||
create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a
|
||||
base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a
|
||||
- platform: macos
|
||||
create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a
|
||||
base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a
|
||||
- platform: web
|
||||
create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a
|
||||
base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a
|
||||
- platform: windows
|
||||
create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a
|
||||
base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a
|
||||
|
||||
# User provided section
|
||||
|
||||
# List of Local paths (relative to this file) that should be
|
||||
# ignored by the migrate tool.
|
||||
#
|
||||
# Files that are not part of the templates will be ignored by default.
|
||||
unmanaged_files:
|
||||
- 'lib/main.dart'
|
||||
- 'ios/Runner.xcodeproj/project.pbxproj'
|
@ -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 +0,0 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.justdev.justmusic">
|
||||
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||
</manifest>
|
@ -1,38 +0,0 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.justdev.justmusic">
|
||||
<application
|
||||
android:label="JustMUSIC"
|
||||
android:name="${applicationName}"
|
||||
android:icon="@mipmap/ic_launcher">
|
||||
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:exported="true"
|
||||
android:launchMode="singleTop"
|
||||
android:theme="@style/LaunchTheme"
|
||||
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
|
||||
android:hardwareAccelerated="true"
|
||||
android:windowSoftInputMode="adjustResize">
|
||||
<!-- Specifies an Android theme to apply to this Activity as soon as
|
||||
the Android process has started. This theme is visible to the user
|
||||
while the Flutter UI initializes. After that, this theme continues
|
||||
to determine the Window background behind the Flutter UI. -->
|
||||
<meta-data
|
||||
android:name="io.flutter.embedding.android.NormalTheme"
|
||||
android:resource="@style/NormalTheme"
|
||||
/>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<!-- Don't delete the meta-data below.
|
||||
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
|
||||
<meta-data
|
||||
android:name="flutterEmbedding"
|
||||
android:value="2" />
|
||||
</application>
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||
</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);
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 4.9 KiB |
Before Width: | Height: | Size: 4.7 KiB |
Before Width: | Height: | Size: 9.6 KiB |
Before Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 5.7 KiB |
Before Width: | Height: | Size: 7.2 KiB |
Before Width: | Height: | Size: 7.1 KiB |
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 52 KiB |
@ -1,6 +0,0 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.example.justmusic">
|
||||
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||
</manifest>
|
@ -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":[]}
|
Before Width: | Height: | Size: 989 B |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 816 B |
Before Width: | Height: | Size: 345 KiB |
Before Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 70 KiB |
Before Width: | Height: | Size: 792 KiB |
Before Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 611 B |
Before Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 3.6 KiB |
Before Width: | Height: | Size: 983 B |
Before Width: | Height: | Size: 1.1 MiB |
Before Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 7.1 KiB |
Before Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 3.4 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 282 KiB |
Before Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 818 B |
Before Width: | Height: | Size: 223 B |
Before Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 9.2 KiB |
Before Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 439 KiB |
Before Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 4.8 KiB |
Before Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 230 B |
Before Width: | Height: | Size: 1.6 MiB |
@ -1,17 +0,0 @@
|
||||
{
|
||||
"hosting": {
|
||||
"site": "justmusic-435d5",
|
||||
"public": "build/web",
|
||||
"ignore": [
|
||||
"firebase.json",
|
||||
"**/.*",
|
||||
"**/node_modules/**"
|
||||
],
|
||||
"rewrites": [
|
||||
{
|
||||
"source": "**",
|
||||
"destination": "/index.html"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
@ -1,2 +0,0 @@
|
||||
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
|
||||
#include "Generated.xcconfig"
|
@ -1,2 +0,0 @@
|
||||
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.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
|
Before Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 421 B |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 729 B |
Before Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 5.2 KiB |
Before Width: | Height: | Size: 5.2 KiB |
Before Width: | Height: | Size: 9.7 KiB |
Before Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 7.4 KiB |
Before Width: | Height: | Size: 8.6 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>
|
@ -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,66 +0,0 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
|
||||
class FinishButton extends StatefulWidget {
|
||||
const FinishButton({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
State<FinishButton> createState() => _FinishButtonState();
|
||||
}
|
||||
|
||||
class _FinishButtonState extends State<FinishButton> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return ElevatedButton(
|
||||
onPressed: () {
|
||||
Navigator.pushNamed(context, '/feed');
|
||||
},
|
||||
style: ButtonStyle(
|
||||
backgroundColor: MaterialStateProperty.all(Color(0xFF1C1C1C)),
|
||||
overlayColor:
|
||||
MaterialStateProperty.all(Color(0xffD3C2FF).withOpacity(0.2)),
|
||||
shape: MaterialStateProperty.all(RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(18),
|
||||
)),
|
||||
padding: MaterialStateProperty.all(EdgeInsets.all(0.0)),
|
||||
),
|
||||
child: Ink(
|
||||
decoration: BoxDecoration(
|
||||
gradient: RadialGradient(
|
||||
center: Alignment(0, 3),
|
||||
focalRadius: 10,
|
||||
radius: 2.5,
|
||||
stops: <double>[0.4, 1.0],
|
||||
colors: [Color(0xff9E78FF), Color(0xff633AF4)],
|
||||
),
|
||||
borderRadius: BorderRadius.circular(18.0),
|
||||
border: Border.all(
|
||||
color: Color(0xff1C1C1C),
|
||||
width: 5,
|
||||
),
|
||||
),
|
||||
child: Container(
|
||||
padding: EdgeInsets.only(top: 20.h, bottom: 20.h),
|
||||
constraints: BoxConstraints(maxWidth: 600, minHeight: 50),
|
||||
decoration: BoxDecoration(
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: Color(0xff7E56F9).withOpacity(0.23),
|
||||
spreadRadius: 4,
|
||||
blurRadius: 40,
|
||||
offset: Offset(0, 3), // changes position of shadow
|
||||
),
|
||||
],
|
||||
),
|
||||
alignment: Alignment.center,
|
||||
child: Text(
|
||||
"Terminer",
|
||||
textAlign: TextAlign.center,
|
||||
style: TextStyle(color: Colors.white, fontSize: 18),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
@ -1,34 +0,0 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import '../values/constants.dart';
|
||||
|
||||
class BackButtonComponent extends StatefulWidget {
|
||||
const BackButtonComponent({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
State<BackButtonComponent> createState() => _BackButtonComponentState();
|
||||
}
|
||||
|
||||
class _BackButtonComponentState extends State<BackButtonComponent> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return GestureDetector(
|
||||
onTap: () {
|
||||
Navigator.pop(context);
|
||||
},
|
||||
child: ClipOval(
|
||||
child: Container(
|
||||
height: 40,
|
||||
width: 40,
|
||||
color: Colors.white,
|
||||
child: Center(
|
||||
child: Icon(
|
||||
Icons.arrow_back_outlined,
|
||||
color: bgColor,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
@ -1,146 +0,0 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:ionicons/ionicons.dart';
|
||||
import 'package:tuple/tuple.dart';
|
||||
|
||||
import '../values/constants.dart';
|
||||
|
||||
class PhotoPostComponent extends StatelessWidget {
|
||||
final bool empty;
|
||||
const PhotoPostComponent({Key? key, required this.empty}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return empty
|
||||
? Container(
|
||||
padding: EdgeInsets.all(10),
|
||||
decoration: BoxDecoration(
|
||||
color: postbutton, borderRadius: BorderRadius.circular(8)),
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 10),
|
||||
child: Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||
children: [
|
||||
Icon(
|
||||
Ionicons.camera,
|
||||
size: 15,
|
||||
color: Colors.white,
|
||||
),
|
||||
SizedBox(
|
||||
width: 10,
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'Prendre un selfie',
|
||||
style: GoogleFonts.plusJakartaSans(
|
||||
color: Colors.white, fontSize: 12),
|
||||
overflow: TextOverflow.ellipsis,
|
||||
maxLines: 1,
|
||||
),
|
||||
)
|
||||
]),
|
||||
))
|
||||
: Container(
|
||||
padding: EdgeInsets.all(10),
|
||||
decoration: BoxDecoration(
|
||||
color: fillButton, borderRadius: BorderRadius.circular(8)),
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 10),
|
||||
child: Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||
children: [
|
||||
Expanded(
|
||||
child: Text(
|
||||
"Selfie enregistré",
|
||||
style: GoogleFonts.plusJakartaSans(
|
||||
color: Colors.white, fontSize: 12),
|
||||
overflow: TextOverflow.ellipsis,
|
||||
maxLines: 1,
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
width: 10,
|
||||
),
|
||||
Icon(
|
||||
Icons.close,
|
||||
size: 12,
|
||||
color: Colors.white,
|
||||
),
|
||||
]),
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
class LocationPostComponent extends StatelessWidget {
|
||||
final bool empty;
|
||||
final Tuple2<String, String>? location;
|
||||
const LocationPostComponent(
|
||||
{Key? key, required this.empty, required this.location})
|
||||
: super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return empty
|
||||
? Container(
|
||||
width: double.infinity,
|
||||
padding: EdgeInsets.all(10),
|
||||
decoration: BoxDecoration(
|
||||
color: postbutton, borderRadius: BorderRadius.circular(8)),
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 10),
|
||||
child: Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||
children: [
|
||||
Icon(
|
||||
Icons.location_on,
|
||||
size: 15,
|
||||
color: Colors.white,
|
||||
),
|
||||
SizedBox(
|
||||
width: 10,
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'Ajouter un lieu',
|
||||
style: GoogleFonts.plusJakartaSans(
|
||||
color: Colors.white, fontSize: 12),
|
||||
overflow: TextOverflow.ellipsis,
|
||||
),
|
||||
)
|
||||
])),
|
||||
)
|
||||
: Container(
|
||||
width: double.infinity,
|
||||
padding: EdgeInsets.all(10),
|
||||
decoration: BoxDecoration(
|
||||
color: fillButton, borderRadius: BorderRadius.circular(8)),
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 10),
|
||||
child: Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||
children: [
|
||||
Expanded(
|
||||
child: Text(
|
||||
'${location?.item1}, ${location?.item2}',
|
||||
style: GoogleFonts.plusJakartaSans(
|
||||
color: Colors.white, fontSize: 12),
|
||||
overflow: TextOverflow.ellipsis,
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
width: 10,
|
||||
),
|
||||
Icon(
|
||||
Icons.close,
|
||||
size: 12,
|
||||
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),
|
||||
),
|
||||
])),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
@ -1,93 +0,0 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
|
||||
import 'package:justmusic/model/Comment.dart';
|
||||
|
||||
import '../values/constants.dart';
|
||||
|
||||
class CommentComponent extends StatelessWidget {
|
||||
final Comment comment;
|
||||
|
||||
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
|
||||
Widget build(BuildContext context) {
|
||||
|
||||
return Container(
|
||||
width: double.infinity,
|
||||
decoration: BoxDecoration(color: bgComment.withOpacity(0.6), borderRadius: BorderRadius.circular(15)),
|
||||
padding: EdgeInsets.fromLTRB(20, 10, 20, 10),
|
||||
margin: EdgeInsets.only(bottom: 13),
|
||||
child: Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
ClipOval(
|
||||
child: SizedBox(
|
||||
height: 40,
|
||||
width: 40,
|
||||
// Image radius
|
||||
child: FadeInImage.assetNetwork(
|
||||
image: comment.user.pp,
|
||||
fit: BoxFit.cover,
|
||||
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(
|
||||
width: 10,
|
||||
),
|
||||
Text(
|
||||
comment.user.pseudo,
|
||||
style: GoogleFonts.plusJakartaSans(color: Colors.white, fontWeight: FontWeight.w600),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(top: 6, left: 10),
|
||||
child: Text(
|
||||
"il y a ${calculateTimeDifference(comment.date)}",
|
||||
style: GoogleFonts.plusJakartaSans(
|
||||
color: Colors.white.withOpacity(0.6), fontWeight: FontWeight.w400, fontSize: 10),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
SizedBox(
|
||||
height: 4,
|
||||
),
|
||||
Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 10),
|
||||
child: Text(
|
||||
comment.text,
|
||||
style: GoogleFonts.plusJakartaSans(color: Colors.white, fontWeight: FontWeight.w400, fontSize: 15),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
@ -1,386 +0,0 @@
|
||||
import 'dart:io';
|
||||
import 'package:animated_appear/animated_appear.dart';
|
||||
import 'package:auto_size_text/auto_size_text.dart';
|
||||
import 'package:firebase_storage/firebase_storage.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:image_picker/image_picker.dart';
|
||||
import 'package:insta_image_viewer/insta_image_viewer.dart';
|
||||
import 'package:justmusic/values/constants.dart';
|
||||
import 'package:text_scroll/text_scroll.dart';
|
||||
import 'package:tuple/tuple.dart';
|
||||
|
||||
import '../model/Music.dart';
|
||||
import '../screens/search_location_screen.dart';
|
||||
import 'buttonPostComponent.dart';
|
||||
|
||||
class EditablePostComponent extends StatefulWidget {
|
||||
final Music? music;
|
||||
final Function callBackImage;
|
||||
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
|
||||
State<EditablePostComponent> createState() => _EditablePostComponentState();
|
||||
}
|
||||
|
||||
class _EditablePostComponentState extends State<EditablePostComponent> with TickerProviderStateMixin {
|
||||
final ImagePicker picker = ImagePicker();
|
||||
late Animation<double> animation;
|
||||
late AnimationController animationController;
|
||||
late AnimationController _controller;
|
||||
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 {
|
||||
|
||||
try {
|
||||
final image = await ImagePicker().pickImage(source: source, imageQuality: 20);
|
||||
if (image == null) return;
|
||||
final imageTemp = File(image.path);
|
||||
setState(() {
|
||||
this.image = imageTemp;
|
||||
widget.callBackImage(imageTemp);
|
||||
});
|
||||
} on PlatformException catch (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
|
||||
void dispose() {
|
||||
_controller.dispose();
|
||||
animationController.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return ClipRRect(
|
||||
borderRadius: BorderRadius.circular(25),
|
||||
child: Container(
|
||||
constraints: BoxConstraints(maxWidth: 400, minHeight: 500),
|
||||
width: double.infinity,
|
||||
color: warningBttnColor,
|
||||
child: Column(
|
||||
children: [
|
||||
Stack(
|
||||
children: [
|
||||
AspectRatio(
|
||||
aspectRatio: 1 / 1,
|
||||
child: Container(
|
||||
decoration: BoxDecoration(
|
||||
// add border
|
||||
border: Border.all(width: 3.0, color: grayColor),
|
||||
// set border radius
|
||||
borderRadius: BorderRadius.circular(20),
|
||||
),
|
||||
child: ClipRRect(
|
||||
borderRadius: BorderRadius.circular(18),
|
||||
// implement image
|
||||
child: widget.music == null
|
||||
? Container(
|
||||
width: double.infinity,
|
||||
child: Center(
|
||||
child: Icon(
|
||||
Icons.headphones,
|
||||
color: grayColor.withOpacity(0.4),
|
||||
size: 150,
|
||||
),
|
||||
),
|
||||
)
|
||||
: FadeInImage.assetNetwork(
|
||||
image: widget.music!.cover!,
|
||||
fit: BoxFit.cover,
|
||||
fadeInDuration: const Duration(milliseconds: 100),
|
||||
placeholder: "assets/images/loadingPlaceholder.gif",
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
image != null
|
||||
? Positioned(
|
||||
top: 10,
|
||||
right: 10,
|
||||
child: AnimatedAppear(
|
||||
delay: Duration(milliseconds: 500),
|
||||
duration: Duration(milliseconds: 400),
|
||||
child: Container(
|
||||
width: 110,
|
||||
height: 110,
|
||||
decoration: BoxDecoration(
|
||||
image: DecorationImage(
|
||||
image: FileImage(image!),
|
||||
fit: BoxFit.cover,
|
||||
),
|
||||
color: grayColor,
|
||||
borderRadius: BorderRadius.circular(20),
|
||||
border: Border.all(style: BorderStyle.solid, color: Colors.white, width: 4)),
|
||||
child: ClipRRect(
|
||||
borderRadius: BorderRadius.circular(20),
|
||||
child: InstaImageViewer(
|
||||
backgroundIsTransparent: true,
|
||||
child: kIsWeb?InstaImageViewer(
|
||||
backgroundIsTransparent: true,
|
||||
child: Image.network(image!.path)
|
||||
):Image(
|
||||
image: FileImage(image!),
|
||||
fit: BoxFit.cover,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
))
|
||||
: Container()
|
||||
],
|
||||
),
|
||||
widget.music != null
|
||||
? Padding(
|
||||
padding: const EdgeInsets.all(10),
|
||||
child: Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.end,
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Flexible(
|
||||
flex: 8,
|
||||
child: TextScroll(
|
||||
(widget.music?.title)!,
|
||||
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,
|
||||
),
|
||||
),
|
||||
),
|
||||
Flexible(
|
||||
flex: 6,
|
||||
child: Padding(
|
||||
padding: EdgeInsets.only(bottom: 2),
|
||||
child: TextScroll(
|
||||
(widget.music?.artists[0].name)!,
|
||||
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(
|
||||
widget.music?.date.toString() ?? "unknown",
|
||||
style: GoogleFonts.plusJakartaSans(
|
||||
color: Colors.white.withOpacity(0.5), fontWeight: FontWeight.w300, fontSize: 16.h),
|
||||
textAlign: TextAlign.end,
|
||||
maxFontSize: 20,
|
||||
),
|
||||
],
|
||||
),
|
||||
)
|
||||
: Container(),
|
||||
Container(
|
||||
padding: EdgeInsets.fromLTRB(15, 15, 15, 25),
|
||||
width: double.infinity,
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [ kIsWeb?Container()
|
||||
:Expanded(
|
||||
flex: 5,
|
||||
child: GestureDetector(
|
||||
onTap: () {
|
||||
manageImage();
|
||||
},
|
||||
child: PhotoPostComponent(
|
||||
empty: image == null,
|
||||
),
|
||||
),
|
||||
),
|
||||
kIsWeb?Container():SizedBox(
|
||||
width: 15,
|
||||
),
|
||||
Expanded(
|
||||
flex: 5,
|
||||
child: GestureDetector(
|
||||
onTap: () {
|
||||
manageLocation();
|
||||
},
|
||||
child: LocationPostComponent(
|
||||
empty: selectedCity == null,
|
||||
location: selectedCity,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsets.fromLTRB(15, 0, 10, 25),
|
||||
child: SizedBox(
|
||||
width: double.infinity,
|
||||
child: TextFormField(
|
||||
keyboardType: TextInputType.text,
|
||||
onChanged: (value) {
|
||||
_updateDescription(value);
|
||||
},
|
||||
keyboardAppearance: Brightness.dark,
|
||||
minLines: 1,
|
||||
cursorColor: primaryColor,
|
||||
style:
|
||||
GoogleFonts.plusJakartaSans(color: Colors.white, fontSize: 13, fontWeight: FontWeight.w300),
|
||||
maxLines: 4,
|
||||
maxLength: 120,
|
||||
decoration: InputDecoration(
|
||||
counterStyle: GoogleFonts.plusJakartaSans(color: grayText, fontSize: 9),
|
||||
focusedBorder: const OutlineInputBorder(
|
||||
borderSide: BorderSide(width: 0, color: Colors.transparent),
|
||||
borderRadius: BorderRadius.all(Radius.circular(10))),
|
||||
contentPadding: const EdgeInsets.only(top: 0, bottom: 0, left: 0),
|
||||
fillColor: Colors.transparent,
|
||||
filled: true,
|
||||
focusColor: Colors.transparent,
|
||||
enabledBorder: const OutlineInputBorder(
|
||||
borderSide: BorderSide(width: 0, color: Colors.transparent),
|
||||
borderRadius: BorderRadius.all(Radius.circular(10))),
|
||||
hintText: 'Description...',
|
||||
hintStyle:
|
||||
GoogleFonts.plusJakartaSans(color: grayText, fontSize: 13, fontWeight: FontWeight.w300),
|
||||
),
|
||||
),
|
||||
)),
|
||||
],
|
||||
),
|
||||
));
|
||||
}
|
||||
|
||||
void manageImage() {
|
||||
if (image != null) {
|
||||
setState(() {
|
||||
image = null;
|
||||
});
|
||||
} else {
|
||||
_showActionSheet(context);
|
||||
}
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|