Suite API
continuous-integration/drone/push Build is passing Details

messagerie_lucas_test
Félix MIELCAREK 3 years ago
parent b1addf51bb
commit 98f5ed17e2

@ -15,11 +15,9 @@ void main() {
}
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context){
Widget build(BuildContext context) {
SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky);
return ChangeNotifierProvider(
create: (context) => CardProvider(),
@ -32,9 +30,9 @@ class MyApp extends StatelessWidget {
}
}
enum CardStatus { like, disLike, discovery, message}
enum CardStatus { like, disLike, discovery, message }
class CardProvider extends ChangeNotifier{
class CardProvider extends ChangeNotifier {
List<String> _urlImages = [];
bool _isDragging = false;
double _angle = 0;
@ -65,7 +63,6 @@ class CardProvider extends ChangeNotifier{
notifyListeners();
}
void setScreenSize(Size screenSize) => _screenSize = screenSize;
void startPosition(DragStartDetails details) {
@ -88,7 +85,6 @@ class CardProvider extends ChangeNotifier{
final status = getStatus(force: true);
switch (status) {
case CardStatus.like:
like(context);
@ -106,6 +102,7 @@ class CardProvider extends ChangeNotifier{
resetPosition();
}
}
void resetPosition() {
_isDragging = false;
_position = Offset.zero;
@ -128,32 +125,33 @@ class CardProvider extends ChangeNotifier{
final forceDiscovery = x.abs() < 80;
final forceMessage = x.abs() < 100;
if(force) {
if (force) {
final delta = 100;
if (x >= delta) {
return CardStatus.like;
} else if ( x <= -delta){
} else if (x <= -delta) {
return CardStatus.disLike;
} else if ( y <= -delta/2 && forceDiscovery){
} else if (y <= -delta / 2 && forceDiscovery) {
return CardStatus.message;
} else if (y >= delta * 2 && x.abs() < 100) {
return CardStatus.discovery;
}
} else{
} else {
final delta = 20;
if(y <= -delta * 2 && forceDiscovery) {
if (y <= -delta * 2 && forceDiscovery) {
return CardStatus.message;
} else if (y >= delta *2 && x.abs() < 80) {
} else if (y >= delta * 2 && x.abs() < 80) {
return CardStatus.discovery;
}else if ( x >= delta) {
} else if (x >= delta) {
return CardStatus.like;
} else if ( x <= -delta) {
} else if (x <= -delta) {
return CardStatus.disLike;
}
}
}
void dislike() {
Vibration.vibrate(duration: 20, amplitude: 60);
print("dislike");
@ -176,8 +174,7 @@ class CardProvider extends ChangeNotifier{
gravity: ToastGravity.TOP,
timeInSecForIosWeb: 2,
backgroundColor: Colors.deepPurple,
textColor: Colors.white
);
textColor: Colors.white);
notifyListeners();
}
@ -195,109 +192,118 @@ class CardProvider extends ChangeNotifier{
backgroundColor: Colors.transparent,
context: context,
constraints: BoxConstraints(
maxWidth: 600,
maxWidth: 600,
maxHeight: double.infinity,
),
builder: (context) => buildSheet(),);
builder: (context) => buildSheet(),
);
notifyListeners();
}
Widget buildSheet() => Container(
height: 550,
width: 350,
decoration: BoxDecoration(
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.4),
offset: const Offset(
0,
0,
),
blurRadius: 10.0,
spreadRadius: 2.0,
),
BoxShadow(
color: Colors.white.withOpacity(0.3),
offset: const Offset(0.0, 0.0),
blurRadius: 0.0,
spreadRadius: 0.0,
),//BoxShadow//BoxShadow
],
color: Color(0xFF232123),
borderRadius: BorderRadius.only(
topRight: Radius.circular(30),
topLeft: Radius.circular(30),
),
),
child: Padding(
padding: EdgeInsets.fromLTRB(20, 10, 20, 10),
child: Column(
children: [
Container(
height: 5,
width: 130,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20),
color: Color(0xFF8A8A8A),
height: 550,
width: 350,
decoration: BoxDecoration(
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.4),
offset: const Offset(
0,
0,
),
blurRadius: 10.0,
spreadRadius: 2.0,
),
BoxShadow(
color: Colors.white.withOpacity(0.3),
offset: const Offset(0.0, 0.0),
blurRadius: 0.0,
spreadRadius: 0.0,
), //BoxShadow//BoxShadow
],
color: Color(0xFF232123),
borderRadius: BorderRadius.only(
topRight: Radius.circular(30),
topLeft: Radius.circular(30),
),
SizedBox(height: 30,),
Container(
width: double.infinity,
height: 300,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20),
color: Color(0xFF302C30),
),
child: Padding(
padding: EdgeInsets.all(20),
child: TextField(
maxLength: 300,
style: TextStyle(fontFamily: 'DMSans', color: Colors.white.withOpacity(1) ,fontSize: 17, fontWeight: FontWeight.w200),
expands: true,
maxLines: null,
keyboardType: TextInputType.multiline,
decoration: InputDecoration(
hintStyle: TextStyle(
color: Colors.white,
),
border: InputBorder.none,
hintText: "Mon message",
),
child: Padding(
padding: EdgeInsets.fromLTRB(20, 10, 20, 10),
child: Column(
children: [
Container(
height: 5,
width: 130,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20),
color: Color(0xFF8A8A8A),
),
),
),
),
SizedBox(height: 20,),
SizedBox(
width: double.infinity,
height: 70,
child: ElevatedButton(
onPressed: () {},
style: ElevatedButton.styleFrom(
primary: Color(0xFF3F1DC3),
textStyle: TextStyle(
fontSize: 20,
fontWeight: FontWeight.bold),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(17)
SizedBox(
height: 30,
),
Container(
width: double.infinity,
height: 300,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20),
color: Color(0xFF302C30),
),
child: Padding(
padding: EdgeInsets.all(20),
child: TextField(
maxLength: 300,
style: TextStyle(
fontFamily: 'DMSans',
color: Colors.white.withOpacity(1),
fontSize: 17,
fontWeight: FontWeight.w200),
expands: true,
maxLines: null,
keyboardType: TextInputType.multiline,
decoration: InputDecoration(
hintStyle: TextStyle(
color: Colors.white,
),
border: InputBorder.none,
hintText: "Mon message",
),
),
),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
Text("Envoyer"),
Opacity(opacity: 0.2,
child: Image.asset("assets/images/send_logo.png",),)
],
SizedBox(
height: 20,
),
),
)
],
),
),
);
SizedBox(
width: double.infinity,
height: 70,
child: ElevatedButton(
onPressed: () {},
style: ElevatedButton.styleFrom(
primary: Color(0xFF3F1DC3),
textStyle:
TextStyle(fontSize: 20, fontWeight: FontWeight.bold),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(17)),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
Text("Envoyer"),
Opacity(
opacity: 0.2,
child: Image.asset(
"assets/images/send_logo.png",
),
)
],
),
),
)
],
),
),
);
void like(context) {
Vibration.vibrate(duration: 20, amplitude: 60);
@ -306,11 +312,10 @@ class CardProvider extends ChangeNotifier{
_position += Offset(2 * _screenSize.width, 0);
_nextCard();
notifyListeners();
}
Future _nextCard() async {
if ( _urlImages.isEmpty) return;
if (_urlImages.isEmpty) return;
await Future.delayed(Duration(milliseconds: 200));
_urlImages.removeLast();
@ -326,10 +331,8 @@ class CardProvider extends ChangeNotifier{
await Future.delayed(Duration(milliseconds: 200));
resetPosition();
}
}
class Splash extends StatefulWidget {
const Splash({Key? key}) : super(key: key);
@ -338,24 +341,17 @@ class Splash extends StatefulWidget {
}
class _SplashState extends State<Splash> {
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
Timer(Duration(seconds: 2), () {
Navigator.pushReplacement(context,
MaterialPageRoute(builder:
(context) =>MainPage()
)
);
Navigator.pushReplacement(
context, MaterialPageRoute(builder: (context) => MainPage()));
});
});
}
@override
Widget build(BuildContext context) {
return Scaffold(

Loading…
Cancel
Save