Compare commits

...

12 Commits

@ -1,2 +1,2 @@
# DAFLMusic create# DAFLMusic

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

@ -0,0 +1,45 @@
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled.
version:
revision: 18a827f3933c19f51862dde3fa472197683249d6
channel: stable
project_type: app
# Tracks metadata for the flutter migrate command
migration:
platforms:
- platform: root
create_revision: 18a827f3933c19f51862dde3fa472197683249d6
base_revision: 18a827f3933c19f51862dde3fa472197683249d6
- platform: android
create_revision: 18a827f3933c19f51862dde3fa472197683249d6
base_revision: 18a827f3933c19f51862dde3fa472197683249d6
- platform: ios
create_revision: 18a827f3933c19f51862dde3fa472197683249d6
base_revision: 18a827f3933c19f51862dde3fa472197683249d6
- platform: linux
create_revision: 18a827f3933c19f51862dde3fa472197683249d6
base_revision: 18a827f3933c19f51862dde3fa472197683249d6
- platform: macos
create_revision: 18a827f3933c19f51862dde3fa472197683249d6
base_revision: 18a827f3933c19f51862dde3fa472197683249d6
- platform: web
create_revision: 18a827f3933c19f51862dde3fa472197683249d6
base_revision: 18a827f3933c19f51862dde3fa472197683249d6
- platform: windows
create_revision: 18a827f3933c19f51862dde3fa472197683249d6
base_revision: 18a827f3933c19f51862dde3fa472197683249d6
# 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'

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 723 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 248 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 960 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 568 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

@ -0,0 +1,180 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:fluttericon/font_awesome5_icons.dart';
import 'package:provider/provider.dart';
import '../main.dart';
class DiscoveryPage extends StatefulWidget {
const DiscoveryPage({Key? key}) : super(key: key);
@override
State<DiscoveryPage> createState() => _DiscoveryPageState();
}
class _DiscoveryPageState extends State<DiscoveryPage> {
@override
Widget build(BuildContext context) {
double height = MediaQuery.of(context).size.height;
double width = MediaQuery.of(context).size.width;
return Scaffold(
backgroundColor: Color(0xFF141414),
resizeToAvoidBottomInset: false,
body: Padding(padding: EdgeInsets.fromLTRB(30, 50, 30, 0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
Text('Playlist découverte', style: TextStyle(color: Colors.white, fontWeight: FontWeight.w500, fontSize: 25),),
Spacer(),
Icon(FontAwesome5.sort_amount_down, size: 30, color: Colors.white,),
]
),
Padding(padding: EdgeInsets.fromLTRB(0, 5, 0, 0)),
Text('Retrouvez ici vos nouvelles découvertes.', style: TextStyle(color: Colors.grey.withOpacity(0.4), fontSize: 15),),
],
),
),
Expanded(
child: ListView(
children: [
SizedBox(height: 40,),
Container(
margin: EdgeInsets.fromLTRB(0, 10, 0, 0),
child: Column(
children: [
Container(
margin: EdgeInsets.fromLTRB(0, 5, 0, 0),
width: double.infinity,
child: Row(
children: [
Container(
height: 60,
width: 60,
decoration: BoxDecoration(
image: DecorationImage(
image: NetworkImage('https://www.goutemesdisques.com/uploads/tx_gmdchron/pi1/L_Etrange_Histoire_de_Mr_Anderson.jpg'),
fit: BoxFit.cover,
),
border: Border.all(width: 0, color: Colors.grey.withOpacity(0)),
borderRadius: BorderRadius.all(Radius.circular(10)),
),),
Container(
margin: EdgeInsets.fromLTRB(20, 0, 0, 0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('IVERSON',style: TextStyle(fontFamily: 'DMSans', color: Colors.white.withOpacity(1) ,fontSize: 20, fontWeight: FontWeight.w800),),
Text('Laylow',style: TextStyle(fontFamily: 'DMSans', color: Colors.white.withOpacity(0.6) ,fontSize: 16, fontWeight: FontWeight.w400),),
],
),),
],
),
),
],
)
),
Container(
margin: EdgeInsets.fromLTRB(0, 10, 0, 0),
child: Column(
children: [
Container(
margin: EdgeInsets.fromLTRB(0, 5, 0, 0),
width: double.infinity,
child: Row(
children: [
Container(
height: 60,
width: 60,
decoration: BoxDecoration(
image: DecorationImage(
image: NetworkImage('https://www.goutemesdisques.com/uploads/tx_gmdchron/pi1/L_Etrange_Histoire_de_Mr_Anderson.jpg'),
fit: BoxFit.cover,
),
border: Border.all(width: 0, color: Colors.grey.withOpacity(0)),
borderRadius: BorderRadius.all(Radius.circular(10)),
),),
Container(
margin: EdgeInsets.fromLTRB(20, 0, 0, 0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('IVERSON',style: TextStyle(fontFamily: 'DMSans', color: Colors.white.withOpacity(1) ,fontSize: 20, fontWeight: FontWeight.w800),),
Text('Laylow',style: TextStyle(fontFamily: 'DMSans', color: Colors.white.withOpacity(0.6) ,fontSize: 16, fontWeight: FontWeight.w400),),
],
),),
],
),
),
],
)
),
Container(
margin: EdgeInsets.fromLTRB(0, 10, 0, 0),
child: Column(
children: [
Container(
margin: EdgeInsets.fromLTRB(0, 5, 0, 0),
width: double.infinity,
child: Row(
children: [
Container(
height: 60,
width: 60,
decoration: BoxDecoration(
image: DecorationImage(
image: NetworkImage('https://www.goutemesdisques.com/uploads/tx_gmdchron/pi1/L_Etrange_Histoire_de_Mr_Anderson.jpg'),
fit: BoxFit.cover,
),
border: Border.all(width: 0, color: Colors.grey.withOpacity(0)),
borderRadius: BorderRadius.all(Radius.circular(10)),
),),
Container(
margin: EdgeInsets.fromLTRB(20, 0, 0, 0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('IVERSON',style: TextStyle(fontFamily: 'DMSans', color: Colors.white.withOpacity(1) ,fontSize: 20, fontWeight: FontWeight.w800),),
Text('Laylow',style: TextStyle(fontFamily: 'DMSans', color: Colors.white.withOpacity(0.6) ,fontSize: 16, fontWeight: FontWeight.w400),),
],
),),
],
),
),
],
)
),
],
),
),
],
),),
);
}
}

@ -0,0 +1,137 @@
import 'dart:io';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:page_transition/page_transition.dart';
import 'package:daflmusic/signInPage/main_signIn_page.dart';
import 'package:daflmusic/homePage/main_homepage.dart';
import 'package:daflmusic/signUpPage/main_signUp_page.dart';
import 'package:animations/animations.dart';
class MainHomePage extends StatefulWidget {
@override
State<MainHomePage> createState() => _MainHomePage();
}
class _MainHomePage extends State<MainHomePage> {
@override
Widget build(BuildContext context) {
double height = MediaQuery.of(context).size.height;
double width = MediaQuery.of(context).size.width;
return Scaffold(
backgroundColor: Color(0xFF141414),
body: Stack(
alignment: AlignmentDirectional.topCenter,
children: <Widget>[
Image.asset(
'assets/images/background.png',
height: double.infinity,
width: double.infinity,
fit: BoxFit.cover,
),
Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.end,
children: [
Image.asset(
'assets/images/Logo.png',
width: 200,
),
SizedBox(height: height*0.04,),
SizedBox(
height: 55,
width: width*0.75,
child: ElevatedButton(
style: ElevatedButton.styleFrom(
backgroundColor: Color(0xFF24CF5F),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(15.0),
),// background// foreground
),
onPressed: () {
},
child: Text("CONTINUER AVEC SPOTIFY",
style: TextStyle(color: Colors.white ,fontSize: 17, fontWeight: FontWeight.bold),
textAlign: TextAlign.center,
),
),),
SizedBox(height: height*0.015,),
SizedBox(
height: 55,
width: width*0.75,
child: ElevatedButton(
style: ElevatedButton.styleFrom(
backgroundColor: Color(0xFF5C1DC3),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(15.0),
),// background// foreground
),
onPressed: () {
Navigator.of(context).push(PageTransition(
duration: Duration(milliseconds: 300),
reverseDuration: Duration(milliseconds: 300),
type: PageTransitionType.rightToLeftJoined,
childCurrent: widget,
child: MainSignUpPage()),
);
},
child: Text("SINSCRIRE MAINTENANT",
style: TextStyle(color: Colors.white ,fontSize: 17, fontWeight: FontWeight.bold),
textAlign: TextAlign.center,
),
),),
SizedBox(height: 220,),
GestureDetector(
onTap: (){
Navigator.of(context).push(
PageTransition(
duration: Duration(milliseconds: 300),
reverseDuration: Duration(milliseconds: 300),
type: PageTransitionType.rightToLeftJoined,
childCurrent: widget,
child: MainSignInPage()),
);
},
child: Container(
child: Align(
alignment: Alignment.center,
child: Text("SE CONNECTER",
style: TextStyle(color: Colors.white ,fontSize: 17, fontWeight: FontWeight.bold),
textAlign: TextAlign.center,
),
),
margin: EdgeInsets.fromLTRB(0, 0, 0, 0),
width: double.infinity,
height: 80,
decoration: BoxDecoration(
color: Color(0xFF232123),
border: Border(
top: BorderSide(width: 1.5, color: Color(0xFF3C3C3C)),
),// Set rounded corner radius
),
),
),
],
),
Align(
alignment: Alignment.topRight,
child: Container(
padding: EdgeInsets.fromLTRB(0, 20, 20, 0),
child: Text("v1.0",
style: TextStyle(fontFamily: 'DMSans', color: Colors.white.withOpacity(0.5) ,fontSize: 17, fontWeight: FontWeight.w700),
),
)
),
],
),
);
}
}

@ -0,0 +1,13 @@
import 'package:flutter/widgets.dart';
class MyFlutterApp {
MyFlutterApp._();
static const _kFontFam = 'MyFlutterApp';
static const String? _kFontPkg = null;
static const IconData podium = IconData(0xe804, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData podium_outine = IconData(0xe805, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData Spots = IconData(0xe809, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData Spots_outline = IconData(0xe80a, fontFamily: _kFontFam, fontPackage: _kFontPkg);
}

@ -0,0 +1,247 @@
import 'dart:async';
import 'dart:math';
import 'package:daflmusic/mainPage/main_mainpage.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:daflmusic/signInPage/main_signIn_page.dart';
import 'package:daflmusic/homePage/main_homepage.dart';
import 'package:daflmusic/signUpPage/main_signUp_page.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:provider/provider.dart';
import 'package:rive/rive.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context){
SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky);
return ChangeNotifierProvider(
create: (context) => CardProvider(),
child: MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Flutter Demo',
home: MainHomePage(),
),
);
}
}
enum CardStatus { like, disLike, discovery}
class CardProvider extends ChangeNotifier{
List<String> _urlImages = [];
bool _isDragging = false;
double _angle = 0;
Offset _position = Offset.zero;
Size _screenSize = Size.zero;
List<String> get urlImages => _urlImages;
bool get isDragging => _isDragging;
Offset get position => _position;
double get angle => _angle;
CardProvider() {
resetUsers();
}
void resetUsers() {
_urlImages = <String>[
'https://khaligidilit.com/assets/images/cover-LAI%CC%88LA-Khali.jpeg',
'https://m.media-amazon.com/images/I/61aUOMzwS8L._SL1440_.jpg',
'https://pbs.twimg.com/media/ExJ-My-XMAE3Ko2.jpg',
'https://cdns-images.dzcdn.net/images/cover/2818a661c6d533155ce6dffc256b1f51/500x500.jpg',
'https://cdns-images.dzcdn.net/images/cover/b351f0e935c9c3901f8d893b92ab952a/500x500.jpg',
'https://cdns-images.dzcdn.net/images/cover/65147b581f2ace9e0f0723ee76e70fda/500x500.jpg',
'https://cdns-images.dzcdn.net/images/cover/173b96be8ac025fb9578b0139010bc80/500x500.jpg',
'https://cdns-images.dzcdn.net/images/cover/17a9747927ac3e5ea56f92f635d9180c/500x500.jpg',
].reversed.toList();
notifyListeners();
}
void setScreenSize(Size screenSize) => _screenSize = screenSize;
void startPosition(DragStartDetails details) {
_isDragging = true;
notifyListeners();
}
void updatePosition(DragUpdateDetails details) {
_position += details.delta;
final x = _position.dx;
_angle = 45 * x / _screenSize.width;
notifyListeners();
}
void endPosition() {
_isDragging = false;
notifyListeners();
final status = getStatus(force: true);
switch (status) {
case CardStatus.like:
like();
break;
case CardStatus.disLike:
dislike();
break;
case CardStatus.discovery:
discovery();
break;
default:
resetPosition();
}
}
void resetPosition() {
_isDragging = false;
_position = Offset.zero;
_angle = 0;
notifyListeners();
}
double getStatusOpacity() {
final delta = 100;
final pos = max(_position.dx.abs(), _position.dy.abs());
final opacity = pos / delta;
return min(opacity, 1);
}
CardStatus? getStatus({bool force = false}) {
final x = _position.dx;
final y = _position.dy;
final forceDiscovery = x.abs() < 20;
if(force) {
final delta = 100;
if (x >= delta) {
return CardStatus.like;
} else if ( x <= -delta){
return CardStatus.disLike;
} else if ( y <= -delta / 2 && forceDiscovery){
return CardStatus.discovery;
}
} else{
final delta = 20;
if(y <= -delta * 2 && forceDiscovery) {
return CardStatus.discovery;
} else if ( x >= delta) {
return CardStatus.like;
} else if ( x <= -delta) {
return CardStatus.disLike;
}
}
}
void dislike() {
print("dislike");
_angle = -20;
_position -= Offset(2 * _screenSize.width, 0);
_nextCard();
notifyListeners();
}
void discovery() {
print("discovery");
_angle = 0;
_position -= Offset(0, _screenSize.height);
_discovery_card();
Fluttertoast.showToast(
msg: 'Ajouté',
toastLength: Toast.LENGTH_SHORT,
gravity: ToastGravity.TOP,
timeInSecForIosWeb: 2,
backgroundColor: Colors.deepPurple,
textColor: Colors.white
);
notifyListeners();
}
void like() {
print("like");
_angle = 20;
_position += Offset(2 * _screenSize.width, 0);
_nextCard();
notifyListeners();
}
Future _nextCard() async {
if ( _urlImages.isEmpty) return;
await Future.delayed(Duration(milliseconds: 200));
_urlImages.removeLast();
resetPosition();
}
Future _discovery_card() async {
await Future.delayed(Duration(milliseconds: 200));
resetPosition();
}
}
class Splash extends StatefulWidget {
const Splash({Key? key}) : super(key: key);
@override
State<Splash> createState() => _SplashState();
}
class _SplashState extends State<Splash> {
@override
void initState() {
// TODO: implement initState
super.initState();
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
Timer(Duration(seconds: 2), () {
Navigator.pushReplacement(context,
MaterialPageRoute(builder:
(context) =>MainMainPage()
)
);
});
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Color(0xFF141414),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Container(
height: 300,
width: 300,
child: RiveAnimation.asset('assets/images/new_file (2).riv'),
),
SizedBox(height: 50),
],
),
),
);
}
}

@ -0,0 +1,70 @@
import 'package:daflmusic/icons.dart';
import 'package:daflmusic/widgets/spots.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:page_transition/page_transition.dart';
import 'package:daflmusic/signInPage/main_signIn_page.dart';
import 'package:daflmusic/homePage/main_homepage.dart';
import 'package:daflmusic/signUpPage/main_signUp_page.dart';
import '../discoveryPage/discoveryPage.dart';
import '../profilPage/MainProfilPage.dart';
import '../profilPage/parametre_page.dart';
class MainMainPage extends StatefulWidget {
const MainMainPage({Key? key}) : super(key: key);
@override
State<MainMainPage> createState() => _MainMainPageState();
}
class _MainMainPageState extends State<MainMainPage> {
int _index = 2;
int get index => _index;
final screens = [
MainProfilPage(),
DiscoveryPage(),
Spots(),
Center(child: Text('Tops'),),
Center(child: Text('Messages'),),
ParametrePage(),
];
@override
Widget build(BuildContext context) {
double height = MediaQuery.of(context).size.height;
return Scaffold(
body: screens[_index],
bottomNavigationBar: NavigationBarTheme(
data: NavigationBarThemeData(
indicatorColor: Color(0xFF5C1DC3),
labelTextStyle: MaterialStateProperty.all(
TextStyle(fontSize: 12, fontWeight: FontWeight.w400, color: Colors.grey)
),
),
child: ConstrainedBox(
constraints: BoxConstraints(
minHeight: height*0.1,
maxHeight: 100,
),
child: NavigationBar(
animationDuration: Duration(seconds: 1),
selectedIndex: index,
height: height*0.1,
onDestinationSelected: (index) =>
setState(() => this._index = index),
backgroundColor: Color(0xFF232123),
destinations: [
NavigationDestination(icon: Icon(Icons.person_outline, color: Colors.grey,), label: 'Profil', selectedIcon: Icon(Icons.person, color: Colors.white,),),
NavigationDestination(icon: Icon(Icons.bookmark_border, color: Colors.grey,), selectedIcon: Icon(Icons.bookmark, color: Colors.white,), label: 'Discovery'),
NavigationDestination(icon: Icon(MyFlutterApp.Spots_outline, color: Colors.grey), selectedIcon: Icon(MyFlutterApp.Spots, color: Colors.white), label: 'Spots',),
NavigationDestination(icon: Icon(MyFlutterApp.podium_outine, color: Colors.grey,), label: 'Tops', selectedIcon: Icon(MyFlutterApp.podium, color: Colors.white,),),
NavigationDestination(icon: Icon(Icons.mail_outline, color: Colors.grey,), label: 'Messages', selectedIcon: Icon(Icons.email, color: Colors.white,),),
],
),
),
),
);
}
}

@ -0,0 +1,220 @@
import 'package:daflmusic/profilPage/parametre_page.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:page_transition/page_transition.dart';
import '../icons.dart';
import '../widgets/spots.dart';
class MainProfilPage extends StatefulWidget {
const MainProfilPage({Key? key}) : super(key: key);
@override
State<MainProfilPage> createState() => _MainProfilPageState();
}
class _MainProfilPageState extends State<MainProfilPage> {
@override
Widget build(BuildContext context) {
double height = MediaQuery.of(context).size.height;
double width = MediaQuery.of(context).size.width;
return Container(
color: Color(0xFF141414),
child: Container(
width: double.infinity,
height: double.infinity,
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
width: double.infinity,
margin: EdgeInsets.fromLTRB(30, 50, 0, 0),
child: Text(
"Profil",
style: TextStyle(fontSize: 25, fontWeight: FontWeight.w600, color: Colors.white),),
),
Container(
margin: EdgeInsets.fromLTRB(0, 10, 0, 40),
height: height*0.14,
width: height*0.14,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(100.0),
color: Colors.blue,border: Border.all(width: 6.0, color: Colors.white),
),
),
Container(
height: 55,
width: double.infinity,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10.0),
color: Colors.transparent,
),
margin: EdgeInsets.fromLTRB(30, 0, 30, 0),
child: SizedBox(
height: 55,
width: double.infinity,
child: ElevatedButton(
style: ElevatedButton.styleFrom(
backgroundColor: Color(0xFFD9D9D9).withOpacity(0.08),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10.0),
),// background// foreground
),
onPressed: () {
},
child: Row(
children: [
Image.asset('assets/images/fav_logo.png', height: 25,),
SizedBox(width: 12,),
Text("Préférences musicales",
style: TextStyle(color: Colors.white ,fontSize: 17, fontWeight: FontWeight.w400),
textAlign: TextAlign.center,
),
Spacer(),
Icon(Icons.arrow_forward_ios, color: Colors.white.withOpacity(0.3),),
],
)
),),
),
Container(
height: 55,
width: double.infinity,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10.0),
color: Colors.transparent,
),
margin: EdgeInsets.fromLTRB(30, 10, 30, 0),
child: SizedBox(
height: 55,
width: double.infinity,
child: ElevatedButton(
style: ElevatedButton.styleFrom(
backgroundColor: Color(0xFFD9D9D9).withOpacity(0.08),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10.0),
),// background// foreground
),
onPressed: () {
Navigator.push(context,MaterialPageRoute(builder: (context)=> Destination()));
},
child: Row(
children: [
Icon(Icons.remove_red_eye, color: Colors.white,size: 30,),
SizedBox(width: 12,),
Text("Aperçu de mon profil",
style: TextStyle(color: Colors.white ,fontSize: 17, fontWeight: FontWeight.w400),
textAlign: TextAlign.center,
),
Spacer(),
Icon(Icons.arrow_forward_ios, color: Colors.white.withOpacity(0.3),),
],
)
),),
),
Container(
height: height*0.27,
width: double.infinity,
margin: EdgeInsets.fromLTRB(30, 15, 30, 0),
child: Column(
children: [
Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Icon(Icons.wifi_tethering, color: Colors.white, size: 35,),
SizedBox(width: 10,),
Text("En cours d'écoute...",
style: TextStyle(color: Colors.white ,fontSize: 17, fontWeight: FontWeight.w400),
textAlign: TextAlign.center,
),
],
),
Container(
margin: EdgeInsets.fromLTRB(0, 10, 0, 0),
height: height*0.14,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15.0),
color: Color(0xFFD9D9D9).withOpacity(0.08),
),
child:
Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
margin: EdgeInsets.fromLTRB(15, 0, 0, 0),
child: ClipRRect(
borderRadius: BorderRadius.circular(15),
child: Image(
height: 90,
width: 90,
image: NetworkImage(
'https://images.genius.com/ef4849be3da5fdb22ea9e656679be3a3.600x600x1.jpg'),
),
),
),
Container(
margin: EdgeInsets.fromLTRB(12, 20, 0, 0),
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text('BAMBINA', style: TextStyle(fontSize:18, fontWeight: FontWeight.w500, color: Colors.white),),
Text('PNL', style: TextStyle(fontSize:16, fontWeight: FontWeight.w400, color: Colors.grey),),
],
),
)
],
),
),
],
),
),
Spacer(),
Container(
height: 55,
width: double.infinity,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10.0),
color: Colors.transparent,
),
margin: EdgeInsets.fromLTRB(30, 0, 30, height*0.04),
child: SizedBox(
height: 55,
width: double.infinity,
child: ElevatedButton(
style: ElevatedButton.styleFrom(
backgroundColor: Color(0xFFD9D9D9).withOpacity(0.08),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10.0),
),// background// foreground
),
onPressed: () {
Navigator.push(context,MaterialPageRoute(builder: (context)=> ParametrePage()));
},
child: Row(
children: [
Icon(Icons.settings, color: Colors.white,size: 30,),
SizedBox(width: 12,),
Text("Paramètres",
style: TextStyle(color: Colors.white ,fontSize: 17, fontWeight: FontWeight.w400),
textAlign: TextAlign.center,
),
Spacer(),
Icon(Icons.arrow_forward_ios, color: Colors.white.withOpacity(0.3),),
],
)
),),
),
],
),
),
);
}
}

@ -0,0 +1,133 @@
import 'package:daflmusic/mainPage/main_mainpage.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class ParametrePage extends StatefulWidget {
const ParametrePage({Key? key}) : super(key: key);
@override
State<ParametrePage> createState() => _ParametrePageState();
}
class _ParametrePageState extends State<ParametrePage> {
@override
Widget build(BuildContext context) {
double height = MediaQuery.of(context).size.height;
double width = MediaQuery.of(context).size.width;
return Scaffold(
backgroundColor: Color(0xFF141414),
resizeToAvoidBottomInset: false,
appBar: AppBar(
leading: new IconButton(
icon: new Icon(Icons.keyboard_arrow_left, color: Colors.grey.withOpacity(0.7), size: 50,),
onPressed: () => {Navigator.of(context).pop()},
),
backgroundColor: Colors.transparent,
elevation: 0,
),
body: Container(
width: double.infinity,
height: double.infinity,
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
margin: EdgeInsets.fromLTRB(30, height*0.07, 30, 0),
width: double.infinity,
height: 30,
alignment: Alignment.centerLeft,
decoration: BoxDecoration(
color: Color(0xFFD9D9D9).withOpacity(0.16),
borderRadius: BorderRadius.circular(7.0),
),
child: Padding(
padding: EdgeInsets.fromLTRB(20, 0, 0, 0),
child: Text('Pseudo',
style: TextStyle(
color: Color(0xFFAEAEAE)
),),
)
),
Padding(padding: EdgeInsets.fromLTRB(30, 0, 30, 0),
child: SizedBox(
width: width,
child: Row(
children: [
SizedBox(
width: 230,
child: TextField(
style: TextStyle(color: Colors.white),
decoration: InputDecoration(
hintStyle: Theme.of(context).textTheme.caption?.copyWith(
color: Colors.white,
),
border: InputBorder.none,
hintText: 'Pseudonyme',
),
cursorColor: Colors.purple,
textAlign: TextAlign.left,
),
),
Spacer(),
Padding(padding: EdgeInsets.fromLTRB(0, 0, 20, 0),
child: Text('modifier',
style: TextStyle( color: Colors.blue, fontSize: 17),),),
],
),
),
),
Container(
margin: EdgeInsets.fromLTRB(30, 0, 30, 0),
width: double.infinity,
height: 30,
alignment: Alignment.centerLeft,
decoration: BoxDecoration(
color: Color(0xFFD9D9D9).withOpacity(0.16),
borderRadius: BorderRadius.circular(7.0),
),
child: Padding(
padding: EdgeInsets.fromLTRB(20, 0, 0, 0),
child: Text('Mot de passe',
style: TextStyle(
color: Color(0xFFAEAEAE)
),),
)
),
Padding(padding: EdgeInsets.fromLTRB(30, 0, 30, 0),
child: SizedBox(
width: width,
child: Row(
children: [
SizedBox(
width: 230,
child: TextField(
obscureText: true,
style: TextStyle(color: Colors.white),
decoration: InputDecoration(
hintStyle: Theme.of(context).textTheme.caption?.copyWith(
color: Colors.white,
),
border: InputBorder.none,
hintText: 'Mot de passe',
),
cursorColor: Colors.purple,
textAlign: TextAlign.left,
),
),
Spacer(),
Padding(padding: EdgeInsets.fromLTRB(0, 0, 20, 0),
child: Text('modifier',
style: TextStyle( color: Colors.blue, fontSize: 17),),),
],
),
),
),
],
),
),
);
}
}

@ -0,0 +1,242 @@
import 'package:daflmusic/mainPage/main_mainpage.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:daflmusic/signInPage/main_signIn_page.dart';
import 'package:daflmusic/homePage/main_homepage.dart';
import 'package:daflmusic/signUpPage/main_signUp_page.dart';
import 'package:page_transition/page_transition.dart';
import '../main.dart';
class MainSignInPage extends StatefulWidget {
const MainSignInPage({Key? key}) : super(key: key);
@override
State<MainSignInPage> createState() => _MainSignInPageState();
}
class _MainSignInPageState extends State<MainSignInPage> {
var boxColor = Colors.white;
@override
bool isChecked = false;
Widget build(BuildContext context) {
return Scaffold(
resizeToAvoidBottomInset: false,
backgroundColor: Color(0xFF141414),
body: Stack(
alignment: AlignmentDirectional.topCenter,
children: <Widget>[
Image.asset(
'assets/images/background.png',
height: double.infinity,
width: double.infinity,
fit: BoxFit.cover,
),
Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.end,
children: [
Image.asset(
'assets/images/Logo.png',
width: 250,
),
SizedBox(height: 80,),
Text(
"SE CONNECTER",
style: TextStyle(fontFamily: 'DMSans', color: Colors.white ,fontSize: 23, fontWeight: FontWeight.w700),
textAlign: TextAlign.center,
),
SizedBox(height: 10,),
Container(
width: 500,
padding: EdgeInsets.fromLTRB(45, 0, 45, 0),
child: Stack(
children: [
Container(
height: 43,
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(
Radius.circular(50)),
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.3),
spreadRadius: 5,
blurRadius: 7,
offset: Offset(0, 3), // changes position of shadow
),
],
),
),
Padding(padding: EdgeInsets.fromLTRB(50, 0, 20, 0),
child: TextField(
decoration: InputDecoration(
border: InputBorder.none,
),
cursorColor: Colors.purple,
textAlign: TextAlign.left,
),
),
Container(
margin: EdgeInsets.fromLTRB(15, 12, 0, 0),
child: Image.asset(
'assets/images/profil_logo.png',
height: 16,
width: 16,
fit: BoxFit.cover,
),
),
],
)
),
Container(
width: 500,
padding: EdgeInsets.fromLTRB(45, 10, 45, 0),
child: Stack(
children: [
Container(
height: 43,
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(
Radius.circular(50)),
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.3),
spreadRadius: 5,
blurRadius: 7,
offset: Offset(0, 3), // changes position of shadow
),
],
),
),Padding(padding: EdgeInsets.fromLTRB(50, 0, 20, 0),
child: TextField(
decoration: InputDecoration(
border: InputBorder.none,
),
cursorColor: Colors.purple,
textAlign: TextAlign.left,
),
),
Container(
margin: EdgeInsets.fromLTRB(15, 12, 0, 0),
child: Image.asset(
'assets/images/password_logo.png',
height: 16,
width: 16,
fit: BoxFit.cover,
),
),
],
)
),
SizedBox(height: 10,),
Container(
width: double.infinity,
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Checkbox(
checkColor: Colors.white,
activeColor: Color(0xFF951DDE),
value: isChecked,
onChanged: (bool? value) {
setState(() {
isChecked = value!;
});
},
),
Text(
"se souvenir de moi",
style: TextStyle(fontFamily: 'DMSans', color: Colors.white ,fontSize: 17, fontWeight: FontWeight.w700),
textAlign: TextAlign.center,
),
],
),
),
SizedBox(height: 50,),
ClipRRect(
borderRadius: BorderRadius.circular(22),
child: Material(
child: InkWell(
highlightColor: Colors.grey.shade100,
splashColor: Color(0xFF406DE1),
onTap: (){
Navigator.of(context).push(
PageTransition(
type: PageTransitionType.fade,
childCurrent: widget,
child: Splash()),
);
},
child:Ink(
child: Align(
alignment: Alignment.center,
child: Image.asset(
'assets/images/valid_logo.png',
width: 40,
),
),
padding: EdgeInsets.fromLTRB(0, 10, 0, 0),
width: 83,
height: 83,
decoration: BoxDecoration(
color: Colors.white,// Set rounded corner radius
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.3),
spreadRadius: 5,
blurRadius: 7,
offset: Offset(0, 3), // changes position of shadow
),
],
),
),
),
),
),
SizedBox(height: 100,),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('Tu nas pas de compte?', style: TextStyle(color: Colors.white, fontWeight: FontWeight.normal, fontSize: 17)),
GestureDetector(
onTap: () {
Navigator.of(context).push(
PageTransition(
type: PageTransitionType.fade,
childCurrent: widget,
child: MainSignUpPage()),
);
},
child: Text(' sinscrire', style: TextStyle(color: Color(0xFF406DE1), fontWeight: FontWeight.normal, fontSize: 16),
),
),
],
),
SizedBox(height: 60,),
],
),
Align(
alignment: Alignment.topRight,
child: Container(
padding: EdgeInsets.fromLTRB(0, 20, 20, 0),
child: Text("v1.0",
style: TextStyle(fontFamily: 'DMSans', color: Colors.white.withOpacity(0.5) ,fontSize: 17, fontWeight: FontWeight.w700),
),
)
),
],
),
);
}
}

@ -0,0 +1,312 @@
import 'dart:io';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:page_transition/page_transition.dart';
import 'package:daflmusic/signInPage/main_signIn_page.dart';
import 'package:daflmusic/homePage/main_homepage.dart';
import 'package:daflmusic/signUpPage/main_signUp_page.dart';
class MainSignUpPage extends StatefulWidget {
const MainSignUpPage({Key? key}) : super(key: key);
@override
State<MainSignUpPage> createState() => _MainSignUpPageState();
}
class _MainSignUpPageState extends State<MainSignUpPage> {
Color boxColor = Colors.white;
bool isHovering = false;
@override
TextEditingController passwordconfirm = new TextEditingController();
bool isChecked = false;
Widget build(BuildContext context) {
return Scaffold(
resizeToAvoidBottomInset: false,
backgroundColor: Color(0xFF141414),
body: Stack(
alignment: AlignmentDirectional.topCenter,
children: <Widget>[
Image.asset(
'assets/images/background.png',
height: double.infinity,
width: double.infinity,
fit: BoxFit.cover,
),
Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.end,
children: [
Image.asset(
'assets/images/Logo.png',
width: 250,
),
SizedBox(height: 45,),
Text(
"S'INSCRIRE",
style: TextStyle(fontFamily: 'DMSans', color: Colors.white ,fontSize: 23, fontWeight: FontWeight.w700),
textAlign: TextAlign.center,
),
SizedBox(height: 10,),
Container(
width: 500,
padding: EdgeInsets.fromLTRB(45, 0, 45, 0),
child: Stack(
children: [
Container(
height: 43,
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(
Radius.circular(50)),
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.3),
spreadRadius: 5,
blurRadius: 7,
offset: Offset(0, 3), // changes position of shadow
),
],
),
),
Padding(padding: EdgeInsets.fromLTRB(50, 0, 20, 0),
child: TextField(
decoration: InputDecoration(
border: InputBorder.none,
),
cursorColor: Colors.purple,
textAlign: TextAlign.left,
),
),
Container(
margin: EdgeInsets.fromLTRB(15, 12, 0, 0),
child: Image.asset(
'assets/images/profil_logo.png',
height: 16,
width: 16,
fit: BoxFit.cover,
),
),
],
)
),
Container(
width: 500,
padding: EdgeInsets.fromLTRB(45, 10, 45, 0),
child: Stack(
children: [
Container(
height: 43,
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(
Radius.circular(50)),
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.3),
spreadRadius: 5,
blurRadius: 7,
offset: Offset(0, 3), // changes position of shadow
),
],
),
),Padding(padding: EdgeInsets.fromLTRB(50, 0, 20, 0),
child: TextField(
decoration: InputDecoration(
border: InputBorder.none,
),
cursorColor: Colors.purple,
textAlign: TextAlign.left,
),
),
Container(
margin: EdgeInsets.fromLTRB(15, 12, 0, 0),
child: Image.asset(
'assets/images/password_logo.png',
height: 16,
width: 16,
fit: BoxFit.cover,
),
),
],
)
),
Container(
width: 500,
padding: EdgeInsets.fromLTRB(45, 10, 45, 0),
child: Stack(
children: [
Container(
height: 43,
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(
Radius.circular(50)),
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.3),
spreadRadius: 5,
blurRadius: 7,
offset: Offset(0, 3), // changes position of shadow
),
],
),
),Padding(padding: EdgeInsets.fromLTRB(50, 0, 20, 0),
child: TextField(
controller: passwordconfirm,
decoration: InputDecoration(
border: InputBorder.none,
),
cursorColor: Colors.purple,
textAlign: TextAlign.left,
),
),
Container(
margin: EdgeInsets.fromLTRB(15, 12, 0, 0),
child: Image.asset(
'assets/images/password_logo.png',
height: 16,
width: 16,
fit: BoxFit.cover,
),
),
],
)
),
Container(
width: 500,
padding: EdgeInsets.fromLTRB(45, 10, 45, 0),
child: Stack(
children: [
Container(
height: 43,
decoration: BoxDecoration(
color: Color(0xFF24CF5F),
borderRadius: BorderRadius.all(
Radius.circular(50)),
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.3),
spreadRadius: 5,
blurRadius: 7,
offset: Offset(0, 3), // changes position of shadow
),
],
),
),
Padding(
padding: EdgeInsets.fromLTRB(0, 10, 10, 0),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
"Lier compte ",
style: TextStyle(fontFamily: 'DMSans', color: Colors.white ,fontSize: 18, fontWeight: FontWeight.w700),
textAlign: TextAlign.center,
),
Image.asset(
'assets/images/spotify_logo.png',
height: 25,
width: 25,
fit: BoxFit.cover,
),
],
),),
],
)
),
SizedBox(height: 30,),
ClipRRect(
borderRadius: BorderRadius.circular(22),
child: Material(
child: InkWell(
highlightColor: Colors.grey.shade100,
splashColor: Color(0xFF406DE1),
onTap: (){
setState(() {
boxColor = Colors.blue;
});
Navigator.of(context).push(
PageTransition(
duration: Duration(milliseconds: 300),
reverseDuration: Duration(milliseconds: 300),
type: PageTransitionType.leftToRightJoined,
childCurrent: widget,
child: MainHomePage()),
);
},
child:Ink(
child: Align(
alignment: Alignment.center,
child: Image.asset(
'assets/images/valid_logo.png',
width: 47,
),
),
padding: EdgeInsets.fromLTRB(0, 10, 0, 0),
width: 83,
height: 83,
decoration: BoxDecoration(
color: Colors.white,// Set rounded corner radius
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.3),
spreadRadius: 5,
blurRadius: 7,
offset: Offset(0, 3), // changes position of shadow
),
],
),
),
),
),
),
SizedBox(height: 100,),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('Tu nas déjà un compte?', style: TextStyle(color: Colors.white, fontWeight: FontWeight.normal, fontSize: 17)),
GestureDetector(
onTap: () {
Navigator.of(context).push(
PageTransition(
type: PageTransitionType.fade,
childCurrent: widget,
child: MainSignInPage()),
);
},
child: Text(' se connecter', style: TextStyle(color: Color(0xFF406DE1), fontWeight: FontWeight.normal, fontSize: 16),
),
),
],
),
SizedBox(height: 60,),
],
),
Align(
alignment: Alignment.topRight,
child: Container(
padding: EdgeInsets.fromLTRB(0, 20, 20, 0),
child: Text("v1.0",
style: TextStyle(fontFamily: 'DMSans', color: Colors.white.withOpacity(0.5) ,fontSize: 17, fontWeight: FontWeight.w700),
),
)
),
],
),
);
}
}

@ -0,0 +1,158 @@
import 'dart:math';
import 'package:daflmusic/main.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
class User{
final String chanteur;
final String titre;
final String urlImage;
const User({
required this.chanteur,
required this.titre,
required this.urlImage,
});
}
class DaflCard extends StatefulWidget {
final String urlImage;
final bool isFront;
const DaflCard({
Key? key,
required this.urlImage,
required this.isFront,
}) : super(key: key);
@override
State<DaflCard> createState() => _DaflCardState();
}
class _DaflCardState extends State<DaflCard>{
@override
void initState() {
super.initState();
WidgetsBinding.instance!.addPostFrameCallback((_) {
final size = MediaQuery.of(context).size;
final provider = Provider.of<CardProvider>(context, listen: false);
provider.setScreenSize(size);
});
}
@override
Widget build(BuildContext context) => SizedBox.expand(
child: widget.isFront ? buildFrontCard() : buildCard(),
);
Widget buildCard() => ClipRRect(
borderRadius: BorderRadius.circular(20),
child: Container(
decoration: BoxDecoration(
image: DecorationImage(
image: NetworkImage(widget.urlImage),
fit: BoxFit.cover,
alignment: Alignment(0,0),
),
borderRadius: BorderRadius.all(Radius.circular(20))
),
),
);
Widget buildStamps() {
final provider = Provider.of<CardProvider>(context);
final status = provider.getStatus();
final opacity = provider.getStatusOpacity();
switch (status) {
case CardStatus.like:
final child = buildStamp(image: 'assets/images/icon_like.png', opacity: opacity);
return child;
case CardStatus.disLike:
final child = buildStamp(image: 'assets/images/icon_dislike.png', opacity: opacity);
return child;
case CardStatus.discovery:
final child = buildStamp(image: 'assets/images/icon_discovery.png', opacity: opacity);
return child;
default:
return Container();
}
}
Widget buildStamp({
double angle = 0,
required String image,
required double opacity,
}) {
return Opacity(opacity: opacity,
child: ClipRRect(
borderRadius: BorderRadius.circular(20),
child: Container(
decoration: BoxDecoration(
color: Colors.black.withOpacity(0.75),
border: Border.all(color: Color(0xFF3F1DC3), width: 6),
borderRadius: BorderRadius.all(Radius.circular(20))
),
child: Center(
child: Image.asset(
image,
width: 100,
),
),
),
),);
}
Widget buildFrontCard() => GestureDetector(
child: LayoutBuilder(
builder: (context, constraints) {
final provider = Provider.of<CardProvider>(context);
final position = provider.position;
final milliseconds = provider.isDragging ? 0 : 400;
final center = constraints.smallest.center(Offset.zero);
final angle = provider.angle * pi / 180;
final rotatedMatrix = Matrix4.identity()
..translate(center.dx, center.dy)
..rotateZ(angle)
..translate(-center.dx, -center.dy);
return AnimatedContainer(
curve: Curves.easeInOut,
duration: Duration(milliseconds: milliseconds),
transform: rotatedMatrix..translate(position.dx, position.dy),
child: Stack(
children: [
buildCard(),
buildStamps(),
],
),
);
},
),
onPanStart: (details) {
final provider = Provider.of<CardProvider>(context, listen: false);
provider.startPosition(details);
},
onPanUpdate: (details) {
final provider = Provider.of<CardProvider>(context, listen: false);
provider.updatePosition(details);
},
onPanEnd: (details) {
final provider = Provider.of<CardProvider>(context, listen: false);
provider.endPosition();
},
);
}

@ -0,0 +1,686 @@
import 'dart:ui';
import 'package:animations/animations.dart';
import 'package:daflmusic/homePage/main_homepage.dart';
import 'package:daflmusic/main.dart';
import 'package:daflmusic/mainPage/main_mainpage.dart';
import 'package:daflmusic/widgets/DaflCard.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:rive/rive.dart';
import 'package:flutter/src/painting/gradient.dart' as gradiant;
class Spots extends StatefulWidget {
const Spots({Key? key}) : super(key: key);
@override
State<Spots> createState() => _SpotsState();
}
class _SpotsState extends State<Spots> {
final user = User(
chanteur: 'Khali',
titre: 'COULEURS',
urlImage: 'https://khaligidilit.com/assets/images/cover-LAI%CC%88LA-Khali.jpeg',
);
@override
Widget build(BuildContext context) {
double height = MediaQuery.of(context).size.height;
double width = MediaQuery.of(context).size.width;
final provider = Provider.of<CardProvider>(context);
return Scaffold(
resizeToAvoidBottomInset: false,
backgroundColor: Color(0xFF141414),
body: Container(
height: double.maxFinite,
child: Stack(
children: [
Transform.scale(scale: 1.1,
child: Container(
decoration: BoxDecoration(
image: DecorationImage(
image: NetworkImage(provider.urlImages.isEmpty != true
?provider.urlImages.last
:"https://i.imgur.com/Uovh293.png"),
fit: BoxFit.cover,
),
),
child: BackdropFilter(filter: ImageFilter.blur(sigmaX: 20.0, sigmaY: 20.0),
child: Container(
decoration: BoxDecoration(color: Colors.black.withOpacity(0.4)),
),),
),),
Padding(
padding: EdgeInsets.fromLTRB(0, 0, 0,height*0.03),
child: Align(
alignment: FractionalOffset.bottomCenter,
child: OpenContainer(
closedColor: Colors.transparent,
closedElevation: 0,
transitionDuration: Duration(milliseconds: 400),
closedBuilder: (context, openWidget){
return PreviewInfo();
},
openBuilder: (context, closeWidget){
return Destination();
},
),
),
),
Center(
child: Container(
width: 300,
height: 300,
child: RiveAnimation.asset('assets/images/search_spot_animation.riv'),
),
),
Positioned(
top: height*0.68,
width: width,
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
GestureDetector(
onTap: () {
final provider = Provider.of<CardProvider>(context, listen: false);
provider.dislike();
},
child: Image.asset(
'assets/images/bouton_dislike.png',
height: 70,
width: 70,
fit: BoxFit.cover,
),
),
SizedBox(
width: width*0.1,
),
GestureDetector(
onTap: () {
final provider = Provider.of<CardProvider>(context, listen: false);
provider.discovery();
},
child: Image.asset(
'assets/images/bouton_discovery.png',
height: 70,
width: 70,
fit: BoxFit.cover,
),
),
SizedBox(
width: width*0.1,
),
GestureDetector(
onTap: () {
final provider = Provider.of<CardProvider>(context, listen: false);
provider.like();
},
child: Image.asset(
'assets/images/bouton_like.png',
height: 70,
width: 70,
fit: BoxFit.cover,
),
),
],
),
),
Align(
child:Container(
width: 400,
height: height*0.8,
margin: EdgeInsets.fromLTRB(width*0.09,height/5,width*0.09,height/3.7),
child: Container(
child: buildCards(),
)
) ,
),
IgnorePointer(child: Container(height: 200,
decoration: BoxDecoration(
gradient: gradiant.LinearGradient(
colors: [Colors.black, Colors.transparent],
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
)
),),),
Padding(padding: EdgeInsets.fromLTRB(20, 60, 0, 0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text('COULEURS',style: TextStyle(fontFamily: 'DMSans', color: Colors.white.withOpacity(1) ,fontSize: 20, fontWeight: FontWeight.w800),),
Text('Khali',style: TextStyle(fontFamily: 'DMSans', color: Colors.white.withOpacity(1) ,fontSize: 17, fontWeight: FontWeight.w200),),
],
),),
],
),
)
);
}
Widget buildCards() {
final provider = Provider.of<CardProvider>(context);
final urlImages = provider.urlImages;
return Stack(
children: urlImages
.map((urlImage) => DaflCard(
urlImage: urlImage,
isFront: urlImages.last == urlImage,
))
.toList(),
);
}
}
class Destination extends StatelessWidget{
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Color(0xFF232123),
appBar: AppBar(
elevation: 0,
backgroundColor: Colors.transparent,
title: Text("J'aime aussi..."),
),
body: ListView(
children: [
Container(
margin: EdgeInsets.fromLTRB(30, 10, 30, 0),
child: Column(
children: [
Text('Pour mon mariage',style: TextStyle(fontFamily: 'DMSans', color: Colors.white.withOpacity(1) ,fontSize: 20, fontWeight: FontWeight.w800),),
Container(
margin: EdgeInsets.fromLTRB(0, 10, 0, 0),
decoration: BoxDecoration(
color: Color(0xFF2E2C2E),
border: Border.all(width: 1, color: Colors.grey.withOpacity(0.05)),
borderRadius: BorderRadius.all(Radius.circular(20)),
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.2),
blurRadius: 5,
spreadRadius: 1,
offset: Offset(2.0, 2.0), // shadow direction: bottom right
)
],
),
width: double.infinity,
height: 100,
child: Padding(padding: EdgeInsets.fromLTRB(10, 10, 10, 10),child: Row(
children: [
Container(
height: 75,
width: 75,
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage("assets/images/dadju-cover-poison.png"),
fit: BoxFit.cover,
),
border: Border.all(width: 0, color: Colors.grey.withOpacity(0)),
borderRadius: BorderRadius.all(Radius.circular(15)),
),),
SizedBox(
),
Container(
margin: EdgeInsets.fromLTRB(20, 0, 0, 0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('Ma vie',style: TextStyle(fontFamily: 'DMSans', color: Colors.white.withOpacity(1) ,fontSize: 20, fontWeight: FontWeight.w800),),
Text('Dadju',style: TextStyle(fontFamily: 'DMSans', color: Colors.white.withOpacity(0.6) ,fontSize: 16, fontWeight: FontWeight.w400),),
],
),),
],
),),
),
],
)
),
Container(
margin: EdgeInsets.fromLTRB(30, 10, 30, 0),
child: Column(
children: [
Text('Pour mon mariage',style: TextStyle(fontFamily: 'DMSans', color: Colors.white.withOpacity(1) ,fontSize: 20, fontWeight: FontWeight.w800),),
Container(
margin: EdgeInsets.fromLTRB(0, 10, 0, 0),
decoration: BoxDecoration(
color: Color(0xFF2E2C2E),
border: Border.all(width: 1, color: Colors.grey.withOpacity(0.05)),
borderRadius: BorderRadius.all(Radius.circular(20)),
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.2),
blurRadius: 5,
spreadRadius: 1,
offset: Offset(2.0, 2.0), // shadow direction: bottom right
)
],
),
width: double.infinity,
height: 100,
child: Padding(padding: EdgeInsets.fromLTRB(10, 10, 10, 10),child: Row(
children: [
Container(
height: 75,
width: 75,
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage("assets/images/dadju-cover-poison.png"),
fit: BoxFit.cover,
),
border: Border.all(width: 0, color: Colors.grey.withOpacity(0)),
borderRadius: BorderRadius.all(Radius.circular(15)),
),),
SizedBox(
),
Container(
margin: EdgeInsets.fromLTRB(20, 0, 0, 0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('Ma vie',style: TextStyle(fontFamily: 'DMSans', color: Colors.white.withOpacity(1) ,fontSize: 20, fontWeight: FontWeight.w800),),
Text('Dadju',style: TextStyle(fontFamily: 'DMSans', color: Colors.white.withOpacity(0.6) ,fontSize: 16, fontWeight: FontWeight.w400),),
],
),),
],
),),
),
],
)
),
Container(
margin: EdgeInsets.fromLTRB(30, 10, 30, 0),
child: Column(
children: [
Text('Pour mon mariage',style: TextStyle(fontFamily: 'DMSans', color: Colors.white.withOpacity(1) ,fontSize: 20, fontWeight: FontWeight.w800),),
Container(
margin: EdgeInsets.fromLTRB(0, 10, 0, 0),
decoration: BoxDecoration(
color: Color(0xFF2E2C2E),
border: Border.all(width: 1, color: Colors.grey.withOpacity(0.05)),
borderRadius: BorderRadius.all(Radius.circular(20)),
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.2),
blurRadius: 5,
spreadRadius: 1,
offset: Offset(2.0, 2.0), // shadow direction: bottom right
)
],
),
width: double.infinity,
height: 100,
child: Padding(padding: EdgeInsets.fromLTRB(10, 10, 10, 10),child: Row(
children: [
Container(
height: 75,
width: 75,
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage("assets/images/dadju-cover-poison.png"),
fit: BoxFit.cover,
),
border: Border.all(width: 0, color: Colors.grey.withOpacity(0)),
borderRadius: BorderRadius.all(Radius.circular(15)),
),),
SizedBox(
),
Container(
margin: EdgeInsets.fromLTRB(20, 0, 0, 0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('Ma vie',style: TextStyle(fontFamily: 'DMSans', color: Colors.white.withOpacity(1) ,fontSize: 20, fontWeight: FontWeight.w800),),
Text('Dadju',style: TextStyle(fontFamily: 'DMSans', color: Colors.white.withOpacity(0.6) ,fontSize: 16, fontWeight: FontWeight.w400),),
],
),),
],
),),
),
],
)
),
Container(
margin: EdgeInsets.fromLTRB(30, 10, 30, 0),
child: Column(
children: [
Text('Pour mon mariage',style: TextStyle(fontFamily: 'DMSans', color: Colors.white.withOpacity(1) ,fontSize: 20, fontWeight: FontWeight.w800),),
Container(
margin: EdgeInsets.fromLTRB(0, 10, 0, 0),
decoration: BoxDecoration(
color: Color(0xFF2E2C2E),
border: Border.all(width: 1, color: Colors.grey.withOpacity(0.05)),
borderRadius: BorderRadius.all(Radius.circular(20)),
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.2),
blurRadius: 5,
spreadRadius: 1,
offset: Offset(2.0, 2.0), // shadow direction: bottom right
)
],
),
width: double.infinity,
height: 100,
child: Padding(padding: EdgeInsets.fromLTRB(10, 10, 10, 10),child: Row(
children: [
Container(
height: 75,
width: 75,
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage("assets/images/dadju-cover-poison.png"),
fit: BoxFit.cover,
),
border: Border.all(width: 0, color: Colors.grey.withOpacity(0)),
borderRadius: BorderRadius.all(Radius.circular(15)),
),),
SizedBox(
),
Container(
margin: EdgeInsets.fromLTRB(20, 0, 0, 0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('Ma vie',style: TextStyle(fontFamily: 'DMSans', color: Colors.white.withOpacity(1) ,fontSize: 20, fontWeight: FontWeight.w800),),
Text('Dadju',style: TextStyle(fontFamily: 'DMSans', color: Colors.white.withOpacity(0.6) ,fontSize: 16, fontWeight: FontWeight.w400),),
],
),),
],
),),
),
],
)
),
Container(
margin: EdgeInsets.fromLTRB(30, 10, 30, 0),
child: Column(
children: [
Text('Pour mon mariage',style: TextStyle(fontFamily: 'DMSans', color: Colors.white.withOpacity(1) ,fontSize: 20, fontWeight: FontWeight.w800),),
Container(
margin: EdgeInsets.fromLTRB(0, 10, 0, 0),
decoration: BoxDecoration(
color: Color(0xFF2E2C2E),
border: Border.all(width: 1, color: Colors.grey.withOpacity(0.05)),
borderRadius: BorderRadius.all(Radius.circular(20)),
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.2),
blurRadius: 5,
spreadRadius: 1,
offset: Offset(2.0, 2.0), // shadow direction: bottom right
)
],
),
width: double.infinity,
height: 100,
child: Padding(padding: EdgeInsets.fromLTRB(10, 10, 10, 10),child: Row(
children: [
Container(
height: 75,
width: 75,
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage("assets/images/dadju-cover-poison.png"),
fit: BoxFit.cover,
),
border: Border.all(width: 0, color: Colors.grey.withOpacity(0)),
borderRadius: BorderRadius.all(Radius.circular(15)),
),),
SizedBox(
),
Container(
margin: EdgeInsets.fromLTRB(20, 0, 0, 0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('Ma vie',style: TextStyle(fontFamily: 'DMSans', color: Colors.white.withOpacity(1) ,fontSize: 20, fontWeight: FontWeight.w800),),
Text('Dadju',style: TextStyle(fontFamily: 'DMSans', color: Colors.white.withOpacity(0.6) ,fontSize: 16, fontWeight: FontWeight.w400),),
],
),),
],
),),
),
],
)
),
Container(
margin: EdgeInsets.fromLTRB(30, 10, 30, 0),
child: Column(
children: [
Text('Pour mon mariage',style: TextStyle(fontFamily: 'DMSans', color: Colors.white.withOpacity(1) ,fontSize: 20, fontWeight: FontWeight.w800),),
Container(
margin: EdgeInsets.fromLTRB(0, 10, 0, 0),
decoration: BoxDecoration(
color: Color(0xFF2E2C2E),
border: Border.all(width: 1, color: Colors.grey.withOpacity(0.05)),
borderRadius: BorderRadius.all(Radius.circular(20)),
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.2),
blurRadius: 5,
spreadRadius: 1,
offset: Offset(2.0, 2.0), // shadow direction: bottom right
)
],
),
width: double.infinity,
height: 100,
child: Padding(padding: EdgeInsets.fromLTRB(10, 10, 10, 10),child: Row(
children: [
Container(
height: 75,
width: 75,
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage("assets/images/dadju-cover-poison.png"),
fit: BoxFit.cover,
),
border: Border.all(width: 0, color: Colors.grey.withOpacity(0)),
borderRadius: BorderRadius.all(Radius.circular(15)),
),),
SizedBox(
),
Container(
margin: EdgeInsets.fromLTRB(20, 0, 0, 0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('Ma vie',style: TextStyle(fontFamily: 'DMSans', color: Colors.white.withOpacity(1) ,fontSize: 20, fontWeight: FontWeight.w800),),
Text('Dadju',style: TextStyle(fontFamily: 'DMSans', color: Colors.white.withOpacity(0.6) ,fontSize: 16, fontWeight: FontWeight.w400),),
],
),),
],
),),
),
],
)
),
Container(
margin: EdgeInsets.fromLTRB(30, 10, 30, 0),
child: Column(
children: [
Text('Pour mon mariage',style: TextStyle(fontFamily: 'DMSans', color: Colors.white.withOpacity(1) ,fontSize: 20, fontWeight: FontWeight.w800),),
Container(
margin: EdgeInsets.fromLTRB(0, 10, 0, 0),
decoration: BoxDecoration(
color: Color(0xFF2E2C2E),
border: Border.all(width: 1, color: Colors.grey.withOpacity(0.05)),
borderRadius: BorderRadius.all(Radius.circular(20)),
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.2),
blurRadius: 5,
spreadRadius: 1,
offset: Offset(2.0, 2.0), // shadow direction: bottom right
)
],
),
width: double.infinity,
height: 100,
child: Padding(padding: EdgeInsets.fromLTRB(10, 10, 10, 10),child: Row(
children: [
Container(
height: 75,
width: 75,
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage("assets/images/dadju-cover-poison.png"),
fit: BoxFit.cover,
),
border: Border.all(width: 0, color: Colors.grey.withOpacity(0)),
borderRadius: BorderRadius.all(Radius.circular(15)),
),),
SizedBox(
),
Container(
margin: EdgeInsets.fromLTRB(20, 0, 0, 0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('Ma vie',style: TextStyle(fontFamily: 'DMSans', color: Colors.white.withOpacity(1) ,fontSize: 20, fontWeight: FontWeight.w800),),
Text('Dadju',style: TextStyle(fontFamily: 'DMSans', color: Colors.white.withOpacity(0.6) ,fontSize: 16, fontWeight: FontWeight.w400),),
],
),),
],
),),
),
],
)
),
Container(
margin: EdgeInsets.fromLTRB(30, 10, 30, 0),
child: Column(
children: [
Text('Pour mon mariage',style: TextStyle(fontFamily: 'DMSans', color: Colors.white.withOpacity(1) ,fontSize: 20, fontWeight: FontWeight.w800),),
Container(
margin: EdgeInsets.fromLTRB(0, 10, 0, 0),
decoration: BoxDecoration(
color: Color(0xFF2E2C2E),
border: Border.all(width: 1, color: Colors.grey.withOpacity(0.05)),
borderRadius: BorderRadius.all(Radius.circular(20)),
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.2),
blurRadius: 5,
spreadRadius: 1,
offset: Offset(2.0, 2.0), // shadow direction: bottom right
)
],
),
width: double.infinity,
height: 100,
child: Padding(padding: EdgeInsets.fromLTRB(10, 10, 10, 10),child: Row(
children: [
Container(
height: 75,
width: 75,
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage("assets/images/dadju-cover-poison.png"),
fit: BoxFit.cover,
),
border: Border.all(width: 0, color: Colors.grey.withOpacity(0)),
borderRadius: BorderRadius.all(Radius.circular(15)),
),),
SizedBox(
),
Container(
margin: EdgeInsets.fromLTRB(20, 0, 0, 0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('Ma vie',style: TextStyle(fontFamily: 'DMSans', color: Colors.white.withOpacity(1) ,fontSize: 20, fontWeight: FontWeight.w800),),
Text('Dadju',style: TextStyle(fontFamily: 'DMSans', color: Colors.white.withOpacity(0.6) ,fontSize: 16, fontWeight: FontWeight.w400),),
],
),),
],
),),
),
],
)
),
],
),
);
}
}
class PreviewInfo extends StatelessWidget{
@override
Widget build(BuildContext context) {
double height = MediaQuery.of(context).size.height;
double width = MediaQuery.of(context).size.width;
return Container(
height: height*0.06,
constraints: BoxConstraints(minWidth: 300, maxWidth: 400),
margin: EdgeInsets.fromLTRB(width*0.1, 0, width*0.1, 0),
decoration: BoxDecoration(
color: Color(0xFF24243A).withOpacity(0.40),
border: Border.all(width: 0, color: Colors.grey.withOpacity(0)),
borderRadius: BorderRadius.all(Radius.circular(15)),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('Me découvrir...',style: TextStyle(fontFamily: 'DMSans', color: Colors.white.withOpacity(1) ,fontSize: 17, fontWeight: FontWeight.w800),),
],
),
);
}
}

@ -0,0 +1,334 @@
# Generated by pub
# See https://dart.dev/tools/pub/glossary#lockfile
packages:
animations:
dependency: "direct main"
description:
name: animations
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.7"
archive:
dependency: transitive
description:
name: archive
url: "https://pub.dartlang.org"
source: hosted
version: "3.3.1"
args:
dependency: transitive
description:
name: args
url: "https://pub.dartlang.org"
source: hosted
version: "2.3.1"
async:
dependency: transitive
description:
name: async
url: "https://pub.dartlang.org"
source: hosted
version: "2.9.0"
boolean_selector:
dependency: transitive
description:
name: boolean_selector
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
characters:
dependency: transitive
description:
name: characters
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.1"
checked_yaml:
dependency: transitive
description:
name: checked_yaml
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.1"
cli_util:
dependency: transitive
description:
name: cli_util
url: "https://pub.dartlang.org"
source: hosted
version: "0.3.5"
clock:
dependency: transitive
description:
name: clock
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.1"
collection:
dependency: transitive
description:
name: collection
url: "https://pub.dartlang.org"
source: hosted
version: "1.16.0"
crypto:
dependency: transitive
description:
name: crypto
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.2"
cupertino_icons:
dependency: "direct main"
description:
name: cupertino_icons
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.5"
fake_async:
dependency: transitive
description:
name: fake_async
url: "https://pub.dartlang.org"
source: hosted
version: "1.3.1"
flutter:
dependency: "direct main"
description: flutter
source: sdk
version: "0.0.0"
flutter_launcher_icons:
dependency: "direct dev"
description:
name: flutter_launcher_icons
url: "https://pub.dartlang.org"
source: hosted
version: "0.10.0"
flutter_lints:
dependency: "direct dev"
description:
name: flutter_lints
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.1"
flutter_swipable:
dependency: "direct main"
description:
name: flutter_swipable
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.1"
flutter_test:
dependency: "direct dev"
description: flutter
source: sdk
version: "0.0.0"
flutter_web_plugins:
dependency: transitive
description: flutter
source: sdk
version: "0.0.0"
fluttericon:
dependency: "direct main"
description:
name: fluttericon
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
fluttertoast:
dependency: "direct main"
description:
name: fluttertoast
url: "https://pub.dartlang.org"
source: hosted
version: "8.0.9"
graphs:
dependency: transitive
description:
name: graphs
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
http:
dependency: transitive
description:
name: http
url: "https://pub.dartlang.org"
source: hosted
version: "0.13.5"
http_parser:
dependency: transitive
description:
name: http_parser
url: "https://pub.dartlang.org"
source: hosted
version: "4.0.1"
image:
dependency: transitive
description:
name: image
url: "https://pub.dartlang.org"
source: hosted
version: "3.2.0"
js:
dependency: transitive
description:
name: js
url: "https://pub.dartlang.org"
source: hosted
version: "0.6.4"
json_annotation:
dependency: transitive
description:
name: json_annotation
url: "https://pub.dartlang.org"
source: hosted
version: "4.7.0"
lints:
dependency: transitive
description:
name: lints
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
matcher:
dependency: transitive
description:
name: matcher
url: "https://pub.dartlang.org"
source: hosted
version: "0.12.12"
material_color_utilities:
dependency: transitive
description:
name: material_color_utilities
url: "https://pub.dartlang.org"
source: hosted
version: "0.1.5"
meta:
dependency: transitive
description:
name: meta
url: "https://pub.dartlang.org"
source: hosted
version: "1.8.0"
nested:
dependency: transitive
description:
name: nested
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.0"
page_transition:
dependency: "direct main"
description:
name: page_transition
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.9"
path:
dependency: transitive
description:
name: path
url: "https://pub.dartlang.org"
source: hosted
version: "1.8.2"
petitparser:
dependency: transitive
description:
name: petitparser
url: "https://pub.dartlang.org"
source: hosted
version: "5.0.0"
provider:
dependency: "direct main"
description:
name: provider
url: "https://pub.dartlang.org"
source: hosted
version: "6.0.4"
rive:
dependency: "direct main"
description:
name: rive
url: "https://pub.dartlang.org"
source: hosted
version: "0.9.1"
sky_engine:
dependency: transitive
description: flutter
source: sdk
version: "0.0.99"
source_span:
dependency: transitive
description:
name: source_span
url: "https://pub.dartlang.org"
source: hosted
version: "1.9.0"
stack_trace:
dependency: transitive
description:
name: stack_trace
url: "https://pub.dartlang.org"
source: hosted
version: "1.10.0"
stream_channel:
dependency: transitive
description:
name: stream_channel
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
string_scanner:
dependency: transitive
description:
name: string_scanner
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.1"
term_glyph:
dependency: transitive
description:
name: term_glyph
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.1"
test_api:
dependency: transitive
description:
name: test_api
url: "https://pub.dartlang.org"
source: hosted
version: "0.4.12"
typed_data:
dependency: transitive
description:
name: typed_data
url: "https://pub.dartlang.org"
source: hosted
version: "1.3.1"
vector_math:
dependency: transitive
description:
name: vector_math
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.2"
xml:
dependency: transitive
description:
name: xml
url: "https://pub.dartlang.org"
source: hosted
version: "6.1.0"
yaml:
dependency: transitive
description:
name: yaml
url: "https://pub.dartlang.org"
source: hosted
version: "3.1.1"
sdks:
dart: ">=2.18.2 <3.0.0"
flutter: ">=3.0.0"

@ -0,0 +1,108 @@
name: daflmusic
description: A new Flutter project.
# The following line prevents the package from being accidentally published to
# pub.dev using `flutter pub publish`. This is preferred for private packages.
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# The following defines the version and build number for your application.
# A version number is three numbers separated by dots, like 1.2.43
# followed by an optional build number separated by a +.
# Both the version and the builder number may be overridden in flutter
# build by specifying --build-name and --build-number, respectively.
# In Android, build-name is used as versionName while build-number used as versionCode.
# Read more about Android versioning at https://developer.android.com/studio/publish/versioning
# In iOS, build-name is used as CFBundleShortVersionString while build-number is used as CFBundleVersion.
# Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
# In Windows, build-name is used as the major, minor, and patch parts
# of the product and file versions while build-number is used as the build suffix.
version: 1.0.0+1
environment:
sdk: '>=2.18.2 <3.0.0'
# Dependencies specify other packages that your package needs in order to work.
# To automatically upgrade your package dependencies to the latest versions
# consider running `flutter pub upgrade --major-versions`. Alternatively,
# dependencies can be manually updated by changing the version numbers below to
# the latest version available on pub.dev. To see which dependencies have newer
# versions available, run `flutter pub outdated`.
dependencies:
flutter:
sdk: flutter
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^1.0.2
page_transition: ^2.0.9
fluttericon: ^2.0.0
animations: ^2.0.7
flutter_swipable: ^1.0.0
provider: ^6.0.1
fluttertoast: ^8.0.9
rive: ^0.9.1
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^2.0.0
flutter_launcher_icons: ^0.10.0
flutter_icons:
android: true
ios: true
image_path: "assets/images/Logo_luancher_2.png"
flutter:
# The following line ensures that the Material Icons font is
# included with your application, so that you can use the icons in
# the material Icons class.
uses-material-design: true
# To add assets to your application, add an assets section, like this:
assets:
- assets/images/
# An image asset can refer to one or more resolution-specific "variants", see
# https://flutter.dev/assets-and-images/#resolution-aware
# For details regarding adding assets from package dependencies, see
# https://flutter.dev/assets-and-images/#from-packages
# To add custom fonts to your application, add a fonts section here,
# in this "flutter" section. Each entry in this list should have a
# "family" key with the font family name, and a "fonts" key with a
# list giving the asset and other descriptors for the font. For
# example:
fonts:
- family: DMSans
fonts:
- asset: assets/fonts/DMSans-Regular.ttf
- asset: assets/fonts/DMSans-Bold.ttf
weight: 700
- asset: assets/fonts/DMSans-Italic.ttf
style: italic
- asset: assets/fonts/DMSans-Medium.ttf
weight: 300
- family: Silkscreen
fonts:
- asset: assets/fonts/Silkscreen-Regular.ttf
- family: MyFlutterApp
fonts:
- asset: assets/fonts/MyFlutterApp_regular.ttf
#
# For details regarding fonts from package dependencies,
# see https://flutter.dev/custom-fonts/#from-packages
Loading…
Cancel
Save