Compare commits
No commits in common. "c307ed88b65df3d3d2f486ae8faa10b20c341ba6" and "7cea57d5ec6b6645723f2a1dc5028d05573946e7" have entirely different histories.
c307ed88b6
...
7cea57d5ec
Binary file not shown.
|
Before Width: | Height: | Size: 14 KiB |
|
|
@ -10,13 +10,11 @@ class WishlistModel {
|
|||
late int sale;
|
||||
late int stock;
|
||||
late String location;
|
||||
late int photo;
|
||||
|
||||
WishlistModel(
|
||||
{required this.id,
|
||||
required this.name,
|
||||
required this.price,
|
||||
required this.photo,
|
||||
required this.image,
|
||||
required this.rating,
|
||||
required this.review,
|
||||
|
|
@ -28,21 +26,28 @@ class WishlistModel {
|
|||
List<WishlistModel> wishlistData = [
|
||||
WishlistModel(
|
||||
id: 1,
|
||||
name: "Villeneuve d'asc ONE-STEP",
|
||||
name: 'IWO 8 Smart Watch Apple iWatch Mirror For Android iPhone',
|
||||
price: 62,
|
||||
photo: 1,
|
||||
image:
|
||||
'https://mp4.ikksgroup.com/photos/1/0/1/8/4/4/101844-thumbnail.JPG',
|
||||
image: GLOBAL_URL + '/apps/ecommerce/product/46.jpg',
|
||||
rating: 5,
|
||||
review: 42,
|
||||
sale: 4,
|
||||
sale: 69,
|
||||
stock: 5,
|
||||
location: "Villeneuve d'asc"),
|
||||
location: 'Brooklyn'),
|
||||
WishlistModel(
|
||||
id: 2,
|
||||
name: 'Asus Rog Phone 3 Rogphone III Ram 12Gb 512Gb Snapdragon 865+ Plus',
|
||||
price: 1152,
|
||||
image: GLOBAL_URL + '/apps/ecommerce/product/48.jpg',
|
||||
rating: 5,
|
||||
review: 1,
|
||||
sale: 2,
|
||||
stock: 22,
|
||||
location: 'Brooklyn'),
|
||||
WishlistModel(
|
||||
id: 3,
|
||||
name: 'BARDI Smart PLUG WiFi Wireless Colokan - IoT Smart Home',
|
||||
price: 11.46,
|
||||
photo: 2,
|
||||
image: GLOBAL_URL + '/apps/ecommerce/product/69.jpg',
|
||||
rating: 5,
|
||||
review: 1062,
|
||||
|
|
@ -50,14 +55,45 @@ List<WishlistModel> wishlistData = [
|
|||
stock: 0,
|
||||
location: 'Brooklyn'),
|
||||
WishlistModel(
|
||||
id: 3,
|
||||
id: 4,
|
||||
name: 'ipad Pro 2020 11-inch 128GB Wi-Fi Only - Silver',
|
||||
price: 866,
|
||||
photo: 3,
|
||||
image: GLOBAL_URL + '/apps/ecommerce/product/49.jpg',
|
||||
rating: 5,
|
||||
review: 22,
|
||||
sale: 468,
|
||||
stock: 25,
|
||||
location: 'Brooklyn'),
|
||||
WishlistModel(
|
||||
id: 5,
|
||||
name: 'Fimi X8 SE Black',
|
||||
price: 567,
|
||||
image: GLOBAL_URL + '/apps/ecommerce/product/26.jpg',
|
||||
rating: 5,
|
||||
review: 63,
|
||||
sale: 115,
|
||||
stock: 0,
|
||||
location: 'Brooklyn',
|
||||
),
|
||||
WishlistModel(
|
||||
id: 6,
|
||||
name:
|
||||
'Xiaomi Air Purifier 3 Mijia OLED Touch Sterilization Air Ionizer - 3',
|
||||
price: 139,
|
||||
image: GLOBAL_URL + '/apps/ecommerce/product/33.jpg',
|
||||
rating: 5,
|
||||
review: 275,
|
||||
sale: 1055,
|
||||
stock: 4,
|
||||
location: 'Brooklyn'),
|
||||
WishlistModel(
|
||||
id: 7,
|
||||
name: 'Delta Boots Import 8 Inch',
|
||||
price: 18.3,
|
||||
image: GLOBAL_URL + '/apps/ecommerce/product/25.jpg',
|
||||
rating: 5,
|
||||
review: 212,
|
||||
sale: 735,
|
||||
stock: 55,
|
||||
location: 'Brooklyn')
|
||||
];
|
||||
|
|
|
|||
|
|
@ -1,8 +1,10 @@
|
|||
import 'package:universal_io/io.dart';
|
||||
import 'package:mobdr/config/global_style.dart';
|
||||
import 'package:mobdr/ui/authentication/forgot_password.dart';
|
||||
import 'package:mobdr/ui/home.dart';
|
||||
import 'package:mobdr/ui/authentication/signup.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:fluttertoast/fluttertoast.dart';
|
||||
import 'package:mobdr/config/constant.dart';
|
||||
|
||||
class SigninPage extends StatefulWidget {
|
||||
@override
|
||||
|
|
@ -10,14 +12,10 @@ class SigninPage extends StatefulWidget {
|
|||
}
|
||||
|
||||
class _SigninPageState extends State<SigninPage> {
|
||||
TextEditingController _etEmail = TextEditingController();
|
||||
bool _obscureText = true;
|
||||
IconData _iconVisible = Icons.visibility_off;
|
||||
|
||||
Color _gradientTop = Color(0xFF039be6);
|
||||
Color _gradientBottom = Color(0xFF0299e2);
|
||||
Color _mainColor = Color(0xFF0181cc);
|
||||
Color _underlineColor = Color(0xFFCCCCCC);
|
||||
|
||||
void _toggleObscureText() {
|
||||
setState(() {
|
||||
_obscureText = !_obscureText;
|
||||
|
|
@ -36,188 +34,217 @@ class _SigninPageState extends State<SigninPage> {
|
|||
|
||||
@override
|
||||
void dispose() {
|
||||
_etEmail.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
backgroundColor: Colors.white,
|
||||
body: AnnotatedRegion<SystemUiOverlayStyle>(
|
||||
value: Platform.isIOS
|
||||
? SystemUiOverlayStyle.light
|
||||
: SystemUiOverlayStyle(statusBarIconBrightness: Brightness.light),
|
||||
child: Stack(
|
||||
children: <Widget>[
|
||||
// top blue background gradient
|
||||
Container(
|
||||
height: MediaQuery.of(context).size.height / 3.5,
|
||||
decoration: BoxDecoration(
|
||||
gradient: LinearGradient(
|
||||
colors: [_gradientTop, _gradientBottom],
|
||||
begin: Alignment.topCenter,
|
||||
end: Alignment.bottomCenter)),
|
||||
body: ListView(
|
||||
padding: EdgeInsets.fromLTRB(30, 120, 30, 30),
|
||||
children: <Widget>[
|
||||
Center(child: Image.asset('assets/images/logo.png', height: 32)),
|
||||
SizedBox(
|
||||
height: 80,
|
||||
),
|
||||
Text('Sign In', style: GlobalStyle.authTitle),
|
||||
TextFormField(
|
||||
keyboardType: TextInputType.emailAddress,
|
||||
controller: _etEmail,
|
||||
style: TextStyle(color: CHARCOAL),
|
||||
onChanged: (textValue) {
|
||||
setState(() {});
|
||||
},
|
||||
decoration: InputDecoration(
|
||||
focusedBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(color: PRIMARY_COLOR, width: 2.0)),
|
||||
enabledBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(color: Color(0xFFCCCCCC)),
|
||||
),
|
||||
labelText: 'Email',
|
||||
labelStyle: TextStyle(color: BLACK_GREY),
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
height: 20,
|
||||
),
|
||||
TextField(
|
||||
obscureText: _obscureText,
|
||||
style: TextStyle(color: CHARCOAL),
|
||||
decoration: InputDecoration(
|
||||
focusedBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(color: PRIMARY_COLOR, width: 2.0)),
|
||||
enabledBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(color: Color(0xFFCCCCCC)),
|
||||
),
|
||||
labelText: 'Password',
|
||||
labelStyle: TextStyle(color: BLACK_GREY),
|
||||
suffixIcon: IconButton(
|
||||
icon: Icon(_iconVisible, color: Colors.grey[400], size: 20),
|
||||
onPressed: () {
|
||||
_toggleObscureText();
|
||||
}),
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
height: 20,
|
||||
),
|
||||
Align(
|
||||
alignment: Alignment.centerRight,
|
||||
child: Container(
|
||||
child: GestureDetector(
|
||||
onTap: () {
|
||||
Navigator.push(
|
||||
context,
|
||||
MaterialPageRoute(
|
||||
builder: (context) => ForgotPasswordPage()));
|
||||
FocusScope.of(context).unfocus();
|
||||
},
|
||||
child: Text(
|
||||
'Forgot Password?',
|
||||
style: TextStyle(color: PRIMARY_COLOR, fontSize: 13),
|
||||
),
|
||||
),
|
||||
// set your logo here
|
||||
Container(
|
||||
margin: EdgeInsets.fromLTRB(
|
||||
0, MediaQuery.of(context).size.height / 20, 0, 0),
|
||||
alignment: Alignment.topCenter,
|
||||
child:
|
||||
Image.asset('assets/images/logo_dark.png', height: 120)),
|
||||
ListView(
|
||||
children: <Widget>[
|
||||
// create form login
|
||||
Card(
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(10),
|
||||
),
|
||||
elevation: 5,
|
||||
margin: EdgeInsets.fromLTRB(32,
|
||||
MediaQuery.of(context).size.height / 3.5 - 72, 32, 0),
|
||||
color: Colors.white,
|
||||
child: Container(
|
||||
margin: EdgeInsets.fromLTRB(24, 0, 24, 20),
|
||||
child: Column(
|
||||
children: <Widget>[
|
||||
SizedBox(
|
||||
height: 40,
|
||||
),
|
||||
Center(
|
||||
child: Text(
|
||||
'SIGN IN',
|
||||
style: TextStyle(
|
||||
color: _mainColor,
|
||||
fontSize: 18,
|
||||
fontWeight: FontWeight.w900),
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
height: 20,
|
||||
),
|
||||
TextField(
|
||||
keyboardType: TextInputType.emailAddress,
|
||||
decoration: InputDecoration(
|
||||
focusedBorder: UnderlineInputBorder(
|
||||
borderSide:
|
||||
BorderSide(color: Colors.grey[600]!)),
|
||||
enabledBorder: UnderlineInputBorder(
|
||||
borderSide:
|
||||
BorderSide(color: _underlineColor),
|
||||
),
|
||||
labelText: 'Email',
|
||||
labelStyle:
|
||||
TextStyle(color: Colors.grey[700])),
|
||||
),
|
||||
SizedBox(
|
||||
height: 20,
|
||||
),
|
||||
TextField(
|
||||
obscureText: _obscureText,
|
||||
decoration: InputDecoration(
|
||||
focusedBorder: UnderlineInputBorder(
|
||||
borderSide:
|
||||
BorderSide(color: Colors.grey[600]!)),
|
||||
enabledBorder: UnderlineInputBorder(
|
||||
borderSide:
|
||||
BorderSide(color: _underlineColor),
|
||||
),
|
||||
labelText: 'Password',
|
||||
labelStyle: TextStyle(color: Colors.grey[700]),
|
||||
suffixIcon: IconButton(
|
||||
icon: Icon(_iconVisible,
|
||||
color: Colors.grey[700], size: 20),
|
||||
onPressed: () {
|
||||
_toggleObscureText();
|
||||
}),
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
height: 20,
|
||||
),
|
||||
Align(
|
||||
alignment: Alignment.centerRight,
|
||||
child: GestureDetector(
|
||||
onTap: () {
|
||||
Fluttertoast.showToast(
|
||||
msg: 'Click forgot password',
|
||||
toastLength: Toast.LENGTH_SHORT);
|
||||
},
|
||||
child: Text(
|
||||
'Forgot Password?',
|
||||
style: TextStyle(fontSize: 13),
|
||||
),
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
height: 40,
|
||||
),
|
||||
SizedBox(
|
||||
width: double.maxFinite,
|
||||
child: TextButton(
|
||||
style: ButtonStyle(
|
||||
backgroundColor: MaterialStateProperty
|
||||
.resolveWith<Color>(
|
||||
(Set<MaterialState> states) => _mainColor,
|
||||
),
|
||||
overlayColor: MaterialStateProperty.all(
|
||||
Colors.transparent),
|
||||
shape: MaterialStateProperty.all(
|
||||
RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(10),
|
||||
)),
|
||||
),
|
||||
onPressed: () {
|
||||
//Navigator.of(context).pushAndRemoveUntil(MaterialPageRoute(builder: (context) => HomePage()), (Route<dynamic> route) => false);
|
||||
Navigator.pushReplacement(
|
||||
context,
|
||||
MaterialPageRoute(
|
||||
builder: (context) => HomePage()));
|
||||
},
|
||||
child: Padding(
|
||||
padding:
|
||||
const EdgeInsets.symmetric(vertical: 5),
|
||||
child: Text(
|
||||
'LOGIN',
|
||||
style: TextStyle(
|
||||
fontSize: 16, color: Colors.white),
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
)),
|
||||
),
|
||||
],
|
||||
)),
|
||||
),
|
||||
SizedBox(
|
||||
height: 50,
|
||||
),
|
||||
// create sign up link
|
||||
Center(
|
||||
child: Wrap(
|
||||
children: <Widget>[
|
||||
Text('New User? '),
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
Fluttertoast.showToast(
|
||||
msg: 'Click signup',
|
||||
toastLength: Toast.LENGTH_SHORT);
|
||||
},
|
||||
child: Text(
|
||||
'Sign Up',
|
||||
style: TextStyle(
|
||||
color: _mainColor, fontWeight: FontWeight.w700),
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
height: 20,
|
||||
),
|
||||
],
|
||||
)),
|
||||
SizedBox(
|
||||
height: 40,
|
||||
),
|
||||
Container(
|
||||
child: TextButton(
|
||||
style: ButtonStyle(
|
||||
backgroundColor: MaterialStateProperty.resolveWith<Color>(
|
||||
(Set<MaterialState> states) => PRIMARY_COLOR,
|
||||
),
|
||||
overlayColor: MaterialStateProperty.all(Colors.transparent),
|
||||
shape: MaterialStateProperty.all(RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(3.0),
|
||||
)),
|
||||
),
|
||||
onPressed: () {
|
||||
//Navigator.of(context).pushAndRemoveUntil(MaterialPageRoute(builder: (context) => HomePage()), (Route<dynamic> route) => false);
|
||||
Navigator.pushReplacement(context,
|
||||
MaterialPageRoute(builder: (context) => HomePage()));
|
||||
},
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(vertical: 5.0),
|
||||
child: Text(
|
||||
'Login',
|
||||
style: TextStyle(
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Colors.white),
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
)),
|
||||
),
|
||||
SizedBox(
|
||||
height: 40,
|
||||
),
|
||||
Center(
|
||||
child: Text(
|
||||
'Or sign in with',
|
||||
style: GlobalStyle.authSignWith,
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
height: 20,
|
||||
),
|
||||
Container(
|
||||
margin: EdgeInsets.fromLTRB(20, 0, 20, 0),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||
children: <Widget>[
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
//Navigator.of(context).pushAndRemoveUntil(MaterialPageRoute(builder: (context) => HomePage()), (Route<dynamic> route) => false);
|
||||
Navigator.pushReplacement(context,
|
||||
MaterialPageRoute(builder: (context) => HomePage()));
|
||||
Fluttertoast.showToast(
|
||||
msg: 'Sign in with Google',
|
||||
toastLength: Toast.LENGTH_LONG);
|
||||
},
|
||||
child: Image(
|
||||
image: AssetImage("assets/images/google.png"),
|
||||
width: 40,
|
||||
),
|
||||
),
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
//Navigator.of(context).pushAndRemoveUntil(MaterialPageRoute(builder: (context) => HomePage()), (Route<dynamic> route) => false);
|
||||
Navigator.pushReplacement(context,
|
||||
MaterialPageRoute(builder: (context) => HomePage()));
|
||||
Fluttertoast.showToast(
|
||||
msg: 'Sign in with Facebook',
|
||||
toastLength: Toast.LENGTH_LONG);
|
||||
},
|
||||
child: Image(
|
||||
image: AssetImage("assets/images/facebook.png"),
|
||||
width: 40,
|
||||
),
|
||||
),
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
//Navigator.of(context).pushAndRemoveUntil(MaterialPageRoute(builder: (context) => HomePage()), (Route<dynamic> route) => false);
|
||||
Navigator.pushReplacement(context,
|
||||
MaterialPageRoute(builder: (context) => HomePage()));
|
||||
Fluttertoast.showToast(
|
||||
msg: 'Sign in with Twitter',
|
||||
toastLength: Toast.LENGTH_LONG);
|
||||
},
|
||||
child: Image(
|
||||
image: AssetImage("assets/images/twitter.png"),
|
||||
width: 40,
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
));
|
||||
),
|
||||
SizedBox(
|
||||
height: 20,
|
||||
),
|
||||
Center(
|
||||
child: GestureDetector(
|
||||
onTap: () {
|
||||
Navigator.push(context,
|
||||
MaterialPageRoute(builder: (context) => SignupPage()));
|
||||
FocusScope.of(context).unfocus();
|
||||
},
|
||||
child: Wrap(
|
||||
children: [
|
||||
Text(
|
||||
'No account yet? ',
|
||||
style: GlobalStyle.authBottom1,
|
||||
),
|
||||
Text(
|
||||
'Create one',
|
||||
style: GlobalStyle.authBottom2,
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
height: 30,
|
||||
),
|
||||
Center(
|
||||
child: GestureDetector(
|
||||
onTap: () {
|
||||
Navigator.pop(context);
|
||||
},
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: <Widget>[
|
||||
GlobalStyle.iconBack,
|
||||
Text(
|
||||
' Back',
|
||||
style: GlobalStyle.back,
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,250 +0,0 @@
|
|||
import 'package:mobdr/config/global_style.dart';
|
||||
import 'package:mobdr/ui/authentication/forgot_password.dart';
|
||||
import 'package:mobdr/ui/home.dart';
|
||||
import 'package:mobdr/ui/authentication/signup.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:fluttertoast/fluttertoast.dart';
|
||||
import 'package:mobdr/config/constant.dart';
|
||||
|
||||
class SigninPage extends StatefulWidget {
|
||||
@override
|
||||
_SigninPageState createState() => _SigninPageState();
|
||||
}
|
||||
|
||||
class _SigninPageState extends State<SigninPage> {
|
||||
TextEditingController _etEmail = TextEditingController();
|
||||
bool _obscureText = true;
|
||||
IconData _iconVisible = Icons.visibility_off;
|
||||
|
||||
void _toggleObscureText() {
|
||||
setState(() {
|
||||
_obscureText = !_obscureText;
|
||||
if (_obscureText == true) {
|
||||
_iconVisible = Icons.visibility_off;
|
||||
} else {
|
||||
_iconVisible = Icons.visibility;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_etEmail.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
body: ListView(
|
||||
padding: EdgeInsets.fromLTRB(30, 120, 30, 30),
|
||||
children: <Widget>[
|
||||
Center(child: Image.asset('assets/images/logo.png', height: 32)),
|
||||
SizedBox(
|
||||
height: 80,
|
||||
),
|
||||
Text('Sign In', style: GlobalStyle.authTitle),
|
||||
TextFormField(
|
||||
keyboardType: TextInputType.emailAddress,
|
||||
controller: _etEmail,
|
||||
style: TextStyle(color: CHARCOAL),
|
||||
onChanged: (textValue) {
|
||||
setState(() {});
|
||||
},
|
||||
decoration: InputDecoration(
|
||||
focusedBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(color: PRIMARY_COLOR, width: 2.0)),
|
||||
enabledBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(color: Color(0xFFCCCCCC)),
|
||||
),
|
||||
labelText: 'Email',
|
||||
labelStyle: TextStyle(color: BLACK_GREY),
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
height: 20,
|
||||
),
|
||||
TextField(
|
||||
obscureText: _obscureText,
|
||||
style: TextStyle(color: CHARCOAL),
|
||||
decoration: InputDecoration(
|
||||
focusedBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(color: PRIMARY_COLOR, width: 2.0)),
|
||||
enabledBorder: UnderlineInputBorder(
|
||||
borderSide: BorderSide(color: Color(0xFFCCCCCC)),
|
||||
),
|
||||
labelText: 'Password',
|
||||
labelStyle: TextStyle(color: BLACK_GREY),
|
||||
suffixIcon: IconButton(
|
||||
icon: Icon(_iconVisible, color: Colors.grey[400], size: 20),
|
||||
onPressed: () {
|
||||
_toggleObscureText();
|
||||
}),
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
height: 20,
|
||||
),
|
||||
Align(
|
||||
alignment: Alignment.centerRight,
|
||||
child: Container(
|
||||
child: GestureDetector(
|
||||
onTap: () {
|
||||
Navigator.push(
|
||||
context,
|
||||
MaterialPageRoute(
|
||||
builder: (context) => ForgotPasswordPage()));
|
||||
FocusScope.of(context).unfocus();
|
||||
},
|
||||
child: Text(
|
||||
'Forgot Password?',
|
||||
style: TextStyle(color: PRIMARY_COLOR, fontSize: 13),
|
||||
),
|
||||
),
|
||||
)),
|
||||
SizedBox(
|
||||
height: 40,
|
||||
),
|
||||
Container(
|
||||
child: TextButton(
|
||||
style: ButtonStyle(
|
||||
backgroundColor: MaterialStateProperty.resolveWith<Color>(
|
||||
(Set<MaterialState> states) => PRIMARY_COLOR,
|
||||
),
|
||||
overlayColor: MaterialStateProperty.all(Colors.transparent),
|
||||
shape: MaterialStateProperty.all(RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(3.0),
|
||||
)),
|
||||
),
|
||||
onPressed: () {
|
||||
//Navigator.of(context).pushAndRemoveUntil(MaterialPageRoute(builder: (context) => HomePage()), (Route<dynamic> route) => false);
|
||||
Navigator.pushReplacement(context,
|
||||
MaterialPageRoute(builder: (context) => HomePage()));
|
||||
},
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(vertical: 5.0),
|
||||
child: Text(
|
||||
'Login',
|
||||
style: TextStyle(
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Colors.white),
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
)),
|
||||
),
|
||||
SizedBox(
|
||||
height: 40,
|
||||
),
|
||||
Center(
|
||||
child: Text(
|
||||
'Or sign in with',
|
||||
style: GlobalStyle.authSignWith,
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
height: 20,
|
||||
),
|
||||
Container(
|
||||
margin: EdgeInsets.fromLTRB(20, 0, 20, 0),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||
children: <Widget>[
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
//Navigator.of(context).pushAndRemoveUntil(MaterialPageRoute(builder: (context) => HomePage()), (Route<dynamic> route) => false);
|
||||
Navigator.pushReplacement(context,
|
||||
MaterialPageRoute(builder: (context) => HomePage()));
|
||||
Fluttertoast.showToast(
|
||||
msg: 'Sign in with Google',
|
||||
toastLength: Toast.LENGTH_LONG);
|
||||
},
|
||||
child: Image(
|
||||
image: AssetImage("assets/images/google.png"),
|
||||
width: 40,
|
||||
),
|
||||
),
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
//Navigator.of(context).pushAndRemoveUntil(MaterialPageRoute(builder: (context) => HomePage()), (Route<dynamic> route) => false);
|
||||
Navigator.pushReplacement(context,
|
||||
MaterialPageRoute(builder: (context) => HomePage()));
|
||||
Fluttertoast.showToast(
|
||||
msg: 'Sign in with Facebook',
|
||||
toastLength: Toast.LENGTH_LONG);
|
||||
},
|
||||
child: Image(
|
||||
image: AssetImage("assets/images/facebook.png"),
|
||||
width: 40,
|
||||
),
|
||||
),
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
//Navigator.of(context).pushAndRemoveUntil(MaterialPageRoute(builder: (context) => HomePage()), (Route<dynamic> route) => false);
|
||||
Navigator.pushReplacement(context,
|
||||
MaterialPageRoute(builder: (context) => HomePage()));
|
||||
Fluttertoast.showToast(
|
||||
msg: 'Sign in with Twitter',
|
||||
toastLength: Toast.LENGTH_LONG);
|
||||
},
|
||||
child: Image(
|
||||
image: AssetImage("assets/images/twitter.png"),
|
||||
width: 40,
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
height: 20,
|
||||
),
|
||||
Center(
|
||||
child: GestureDetector(
|
||||
onTap: () {
|
||||
Navigator.push(context,
|
||||
MaterialPageRoute(builder: (context) => SignupPage()));
|
||||
FocusScope.of(context).unfocus();
|
||||
},
|
||||
child: Wrap(
|
||||
children: [
|
||||
Text(
|
||||
'No account yet? ',
|
||||
style: GlobalStyle.authBottom1,
|
||||
),
|
||||
Text(
|
||||
'Create one',
|
||||
style: GlobalStyle.authBottom2,
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
height: 30,
|
||||
),
|
||||
Center(
|
||||
child: GestureDetector(
|
||||
onTap: () {
|
||||
Navigator.pop(context);
|
||||
},
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: <Widget>[
|
||||
GlobalStyle.iconBack,
|
||||
Text(
|
||||
' Back',
|
||||
style: GlobalStyle.back,
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
));
|
||||
}
|
||||
}
|
||||
|
|
@ -21,7 +21,6 @@ class ProductDetailPage extends StatefulWidget {
|
|||
final String name;
|
||||
final String image;
|
||||
final double price;
|
||||
final int photo;
|
||||
final double rating;
|
||||
final int review;
|
||||
final int sale;
|
||||
|
|
@ -31,7 +30,6 @@ class ProductDetailPage extends StatefulWidget {
|
|||
this.name = '',
|
||||
this.image = '',
|
||||
this.price = 24,
|
||||
this.photo = 1,
|
||||
this.rating = 4,
|
||||
this.review = 45,
|
||||
this.sale = 63})
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,44 +0,0 @@
|
|||
PODS:
|
||||
- FlutterMacOS (1.0.0)
|
||||
- FMDB (2.7.5):
|
||||
- FMDB/standard (= 2.7.5)
|
||||
- FMDB/standard (2.7.5)
|
||||
- package_info_plus (0.0.1):
|
||||
- FlutterMacOS
|
||||
- path_provider_foundation (0.0.1):
|
||||
- Flutter
|
||||
- FlutterMacOS
|
||||
- sqflite (0.0.2):
|
||||
- FlutterMacOS
|
||||
- FMDB (>= 2.7.5)
|
||||
|
||||
DEPENDENCIES:
|
||||
- FlutterMacOS (from `Flutter/ephemeral`)
|
||||
- package_info_plus (from `Flutter/ephemeral/.symlinks/plugins/package_info_plus/macos`)
|
||||
- path_provider_foundation (from `Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/macos`)
|
||||
- sqflite (from `Flutter/ephemeral/.symlinks/plugins/sqflite/macos`)
|
||||
|
||||
SPEC REPOS:
|
||||
trunk:
|
||||
- FMDB
|
||||
|
||||
EXTERNAL SOURCES:
|
||||
FlutterMacOS:
|
||||
:path: Flutter/ephemeral
|
||||
package_info_plus:
|
||||
:path: Flutter/ephemeral/.symlinks/plugins/package_info_plus/macos
|
||||
path_provider_foundation:
|
||||
:path: Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/macos
|
||||
sqflite:
|
||||
:path: Flutter/ephemeral/.symlinks/plugins/sqflite/macos
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24
|
||||
FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
|
||||
package_info_plus: 02d7a575e80f194102bef286361c6c326e4c29ce
|
||||
path_provider_foundation: c68054786f1b4f3343858c1e1d0caaded73f0be9
|
||||
sqflite: a5789cceda41d54d23f31d6de539d65bb14100ea
|
||||
|
||||
PODFILE CHECKSUM: 353c8bcc5d5b0994e508d035b5431cfe18c1dea7
|
||||
|
||||
COCOAPODS: 1.11.3
|
||||
|
|
@ -26,7 +26,6 @@
|
|||
33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; };
|
||||
33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; };
|
||||
33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; };
|
||||
460D48F4120F6A092FBB8C86 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 49B016110A69499EADAA5A41 /* Pods_Runner.framework */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
|
|
@ -53,10 +52,9 @@
|
|||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
1DBA8B4418C28009A2604251 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
|
||||
333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = "<group>"; };
|
||||
335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = "<group>"; };
|
||||
33CC10ED2044A3C60003C045 /* mobdr.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = mobdr.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
33CC10ED2044A3C60003C045 /* mobdr.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "mobdr.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||
33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = "<group>"; };
|
||||
33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; };
|
||||
|
|
@ -68,9 +66,6 @@
|
|||
33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = "<group>"; };
|
||||
33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = "<group>"; };
|
||||
33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = "<group>"; };
|
||||
49B016110A69499EADAA5A41 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
624F5C0614E44326DC9ABFA2 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
|
||||
6B0F9B49233C66D9CA23712E /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = "<group>"; };
|
||||
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
|
@ -80,24 +75,12 @@
|
|||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
460D48F4120F6A092FBB8C86 /* Pods_Runner.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
02999232413A4620F94D542F /* Pods */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
6B0F9B49233C66D9CA23712E /* Pods-Runner.debug.xcconfig */,
|
||||
1DBA8B4418C28009A2604251 /* Pods-Runner.release.xcconfig */,
|
||||
624F5C0614E44326DC9ABFA2 /* Pods-Runner.profile.xcconfig */,
|
||||
);
|
||||
name = Pods;
|
||||
path = Pods;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
33BA886A226E78AF003329D5 /* Configs */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
|
|
@ -116,7 +99,6 @@
|
|||
33CEB47122A05771004F2AC0 /* Flutter */,
|
||||
33CC10EE2044A3C60003C045 /* Products */,
|
||||
D73912EC22F37F3D000D13A0 /* Frameworks */,
|
||||
02999232413A4620F94D542F /* Pods */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
|
|
@ -166,7 +148,6 @@
|
|||
D73912EC22F37F3D000D13A0 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
49B016110A69499EADAA5A41 /* Pods_Runner.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
|
|
@ -178,13 +159,11 @@
|
|||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */;
|
||||
buildPhases = (
|
||||
F86FCF2D201694F3D0280F28 /* [CP] Check Pods Manifest.lock */,
|
||||
33CC10E92044A3C60003C045 /* Sources */,
|
||||
33CC10EA2044A3C60003C045 /* Frameworks */,
|
||||
33CC10EB2044A3C60003C045 /* Resources */,
|
||||
33CC110E2044A8840003C045 /* Bundle Framework */,
|
||||
3399D490228B24CF009A79C7 /* ShellScript */,
|
||||
263F3D5435F1A33D2FF5C6C5 /* [CP] Embed Pods Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
|
|
@ -254,23 +233,6 @@
|
|||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXShellScriptBuildPhase section */
|
||||
263F3D5435F1A33D2FF5C6C5 /* [CP] Embed Pods Frameworks */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
|
||||
);
|
||||
name = "[CP] Embed Pods Frameworks";
|
||||
outputFileListPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
3399D490228B24CF009A79C7 /* ShellScript */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
alwaysOutOfDate = 1;
|
||||
|
|
@ -309,28 +271,6 @@
|
|||
shellPath = /bin/sh;
|
||||
shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire";
|
||||
};
|
||||
F86FCF2D201694F3D0280F28 /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||
"${PODS_ROOT}/Manifest.lock",
|
||||
);
|
||||
name = "[CP] Check Pods Manifest.lock";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
"$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
|
|
|
|||
|
|
@ -4,7 +4,4 @@
|
|||
<FileRef
|
||||
location = "group:Runner.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:Pods/Pods.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
|
|
|
|||
|
|
@ -445,14 +445,6 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.1"
|
||||
universal_io:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: universal_io
|
||||
sha256: "06866290206d196064fd61df4c7aea1ffe9a4e7c4ccaa8fcded42dd41948005d"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.0"
|
||||
uuid:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
|
|||
|
|
@ -41,7 +41,6 @@ dependencies:
|
|||
intl: 0.17.0
|
||||
carousel_slider: 4.2.1
|
||||
cached_network_image: 3.2.3
|
||||
universal_io: 2.2.0
|
||||
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
|
|
@ -106,5 +105,4 @@ flutter:
|
|||
- assets/images/visa.png
|
||||
- assets/images/mastercard.png
|
||||
- assets/images/logo.png
|
||||
- assets/images/logo_dark.png
|
||||
- assets/images/onboarding/search_product.gif
|
||||
Loading…
Reference in New Issue