Compare commits
2 Commits
7cea57d5ec
...
c307ed88b6
| Author | SHA1 | Date |
|---|---|---|
|
|
c307ed88b6 | |
|
|
af9a6507f5 |
Binary file not shown.
|
After Width: | Height: | Size: 14 KiB |
|
|
@ -10,11 +10,13 @@ class WishlistModel {
|
||||||
late int sale;
|
late int sale;
|
||||||
late int stock;
|
late int stock;
|
||||||
late String location;
|
late String location;
|
||||||
|
late int photo;
|
||||||
|
|
||||||
WishlistModel(
|
WishlistModel(
|
||||||
{required this.id,
|
{required this.id,
|
||||||
required this.name,
|
required this.name,
|
||||||
required this.price,
|
required this.price,
|
||||||
|
required this.photo,
|
||||||
required this.image,
|
required this.image,
|
||||||
required this.rating,
|
required this.rating,
|
||||||
required this.review,
|
required this.review,
|
||||||
|
|
@ -26,28 +28,21 @@ class WishlistModel {
|
||||||
List<WishlistModel> wishlistData = [
|
List<WishlistModel> wishlistData = [
|
||||||
WishlistModel(
|
WishlistModel(
|
||||||
id: 1,
|
id: 1,
|
||||||
name: 'IWO 8 Smart Watch Apple iWatch Mirror For Android iPhone',
|
name: "Villeneuve d'asc ONE-STEP",
|
||||||
price: 62,
|
price: 62,
|
||||||
image: GLOBAL_URL + '/apps/ecommerce/product/46.jpg',
|
photo: 1,
|
||||||
|
image:
|
||||||
|
'https://mp4.ikksgroup.com/photos/1/0/1/8/4/4/101844-thumbnail.JPG',
|
||||||
rating: 5,
|
rating: 5,
|
||||||
review: 42,
|
review: 42,
|
||||||
sale: 69,
|
sale: 4,
|
||||||
stock: 5,
|
stock: 5,
|
||||||
location: 'Brooklyn'),
|
location: "Villeneuve d'asc"),
|
||||||
WishlistModel(
|
WishlistModel(
|
||||||
id: 2,
|
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',
|
name: 'BARDI Smart PLUG WiFi Wireless Colokan - IoT Smart Home',
|
||||||
price: 11.46,
|
price: 11.46,
|
||||||
|
photo: 2,
|
||||||
image: GLOBAL_URL + '/apps/ecommerce/product/69.jpg',
|
image: GLOBAL_URL + '/apps/ecommerce/product/69.jpg',
|
||||||
rating: 5,
|
rating: 5,
|
||||||
review: 1062,
|
review: 1062,
|
||||||
|
|
@ -55,45 +50,14 @@ List<WishlistModel> wishlistData = [
|
||||||
stock: 0,
|
stock: 0,
|
||||||
location: 'Brooklyn'),
|
location: 'Brooklyn'),
|
||||||
WishlistModel(
|
WishlistModel(
|
||||||
id: 4,
|
id: 3,
|
||||||
name: 'ipad Pro 2020 11-inch 128GB Wi-Fi Only - Silver',
|
name: 'ipad Pro 2020 11-inch 128GB Wi-Fi Only - Silver',
|
||||||
price: 866,
|
price: 866,
|
||||||
|
photo: 3,
|
||||||
image: GLOBAL_URL + '/apps/ecommerce/product/49.jpg',
|
image: GLOBAL_URL + '/apps/ecommerce/product/49.jpg',
|
||||||
rating: 5,
|
rating: 5,
|
||||||
review: 22,
|
review: 22,
|
||||||
sale: 468,
|
sale: 468,
|
||||||
stock: 25,
|
stock: 25,
|
||||||
location: 'Brooklyn'),
|
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,10 +1,8 @@
|
||||||
import 'package:mobdr/config/global_style.dart';
|
import 'package:universal_io/io.dart';
|
||||||
import 'package:mobdr/ui/authentication/forgot_password.dart';
|
|
||||||
import 'package:mobdr/ui/home.dart';
|
import 'package:mobdr/ui/home.dart';
|
||||||
import 'package:mobdr/ui/authentication/signup.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter/services.dart';
|
||||||
import 'package:fluttertoast/fluttertoast.dart';
|
import 'package:fluttertoast/fluttertoast.dart';
|
||||||
import 'package:mobdr/config/constant.dart';
|
|
||||||
|
|
||||||
class SigninPage extends StatefulWidget {
|
class SigninPage extends StatefulWidget {
|
||||||
@override
|
@override
|
||||||
|
|
@ -12,10 +10,14 @@ class SigninPage extends StatefulWidget {
|
||||||
}
|
}
|
||||||
|
|
||||||
class _SigninPageState extends State<SigninPage> {
|
class _SigninPageState extends State<SigninPage> {
|
||||||
TextEditingController _etEmail = TextEditingController();
|
|
||||||
bool _obscureText = true;
|
bool _obscureText = true;
|
||||||
IconData _iconVisible = Icons.visibility_off;
|
IconData _iconVisible = Icons.visibility_off;
|
||||||
|
|
||||||
|
Color _gradientTop = Color(0xFF039be6);
|
||||||
|
Color _gradientBottom = Color(0xFF0299e2);
|
||||||
|
Color _mainColor = Color(0xFF0181cc);
|
||||||
|
Color _underlineColor = Color(0xFFCCCCCC);
|
||||||
|
|
||||||
void _toggleObscureText() {
|
void _toggleObscureText() {
|
||||||
setState(() {
|
setState(() {
|
||||||
_obscureText = !_obscureText;
|
_obscureText = !_obscureText;
|
||||||
|
|
@ -34,54 +36,97 @@ class _SigninPageState extends State<SigninPage> {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
_etEmail.dispose();
|
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
body: ListView(
|
backgroundColor: Colors.white,
|
||||||
padding: EdgeInsets.fromLTRB(30, 120, 30, 30),
|
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)),
|
||||||
|
),
|
||||||
|
// 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>[
|
children: <Widget>[
|
||||||
Center(child: Image.asset('assets/images/logo.png', height: 32)),
|
|
||||||
SizedBox(
|
SizedBox(
|
||||||
height: 80,
|
height: 40,
|
||||||
),
|
),
|
||||||
Text('Sign In', style: GlobalStyle.authTitle),
|
Center(
|
||||||
TextFormField(
|
child: Text(
|
||||||
keyboardType: TextInputType.emailAddress,
|
'SIGN IN',
|
||||||
controller: _etEmail,
|
style: TextStyle(
|
||||||
style: TextStyle(color: CHARCOAL),
|
color: _mainColor,
|
||||||
onChanged: (textValue) {
|
fontSize: 18,
|
||||||
setState(() {});
|
fontWeight: FontWeight.w900),
|
||||||
},
|
|
||||||
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(
|
SizedBox(
|
||||||
height: 20,
|
height: 20,
|
||||||
),
|
),
|
||||||
TextField(
|
TextField(
|
||||||
obscureText: _obscureText,
|
keyboardType: TextInputType.emailAddress,
|
||||||
style: TextStyle(color: CHARCOAL),
|
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
focusedBorder: UnderlineInputBorder(
|
focusedBorder: UnderlineInputBorder(
|
||||||
borderSide: BorderSide(color: PRIMARY_COLOR, width: 2.0)),
|
borderSide:
|
||||||
|
BorderSide(color: Colors.grey[600]!)),
|
||||||
enabledBorder: UnderlineInputBorder(
|
enabledBorder: UnderlineInputBorder(
|
||||||
borderSide: BorderSide(color: Color(0xFFCCCCCC)),
|
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',
|
labelText: 'Password',
|
||||||
labelStyle: TextStyle(color: BLACK_GREY),
|
labelStyle: TextStyle(color: Colors.grey[700]),
|
||||||
suffixIcon: IconButton(
|
suffixIcon: IconButton(
|
||||||
icon: Icon(_iconVisible, color: Colors.grey[400], size: 20),
|
icon: Icon(_iconVisible,
|
||||||
|
color: Colors.grey[700], size: 20),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
_toggleObscureText();
|
_toggleObscureText();
|
||||||
}),
|
}),
|
||||||
|
|
@ -92,159 +137,87 @@ class _SigninPageState extends State<SigninPage> {
|
||||||
),
|
),
|
||||||
Align(
|
Align(
|
||||||
alignment: Alignment.centerRight,
|
alignment: Alignment.centerRight,
|
||||||
child: Container(
|
|
||||||
child: GestureDetector(
|
child: GestureDetector(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
Navigator.push(
|
Fluttertoast.showToast(
|
||||||
context,
|
msg: 'Click forgot password',
|
||||||
MaterialPageRoute(
|
toastLength: Toast.LENGTH_SHORT);
|
||||||
builder: (context) => ForgotPasswordPage()));
|
|
||||||
FocusScope.of(context).unfocus();
|
|
||||||
},
|
},
|
||||||
child: Text(
|
child: Text(
|
||||||
'Forgot Password?',
|
'Forgot Password?',
|
||||||
style: TextStyle(color: PRIMARY_COLOR, fontSize: 13),
|
style: TextStyle(fontSize: 13),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
)),
|
|
||||||
SizedBox(
|
SizedBox(
|
||||||
height: 40,
|
height: 40,
|
||||||
),
|
),
|
||||||
Container(
|
SizedBox(
|
||||||
|
width: double.maxFinite,
|
||||||
child: TextButton(
|
child: TextButton(
|
||||||
style: ButtonStyle(
|
style: ButtonStyle(
|
||||||
backgroundColor: MaterialStateProperty.resolveWith<Color>(
|
backgroundColor: MaterialStateProperty
|
||||||
(Set<MaterialState> states) => PRIMARY_COLOR,
|
.resolveWith<Color>(
|
||||||
|
(Set<MaterialState> states) => _mainColor,
|
||||||
),
|
),
|
||||||
overlayColor: MaterialStateProperty.all(Colors.transparent),
|
overlayColor: MaterialStateProperty.all(
|
||||||
shape: MaterialStateProperty.all(RoundedRectangleBorder(
|
Colors.transparent),
|
||||||
borderRadius: BorderRadius.circular(3.0),
|
shape: MaterialStateProperty.all(
|
||||||
|
RoundedRectangleBorder(
|
||||||
|
borderRadius: BorderRadius.circular(10),
|
||||||
)),
|
)),
|
||||||
),
|
),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
//Navigator.of(context).pushAndRemoveUntil(MaterialPageRoute(builder: (context) => HomePage()), (Route<dynamic> route) => false);
|
//Navigator.of(context).pushAndRemoveUntil(MaterialPageRoute(builder: (context) => HomePage()), (Route<dynamic> route) => false);
|
||||||
Navigator.pushReplacement(context,
|
Navigator.pushReplacement(
|
||||||
MaterialPageRoute(builder: (context) => HomePage()));
|
context,
|
||||||
|
MaterialPageRoute(
|
||||||
|
builder: (context) => HomePage()));
|
||||||
},
|
},
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding: const EdgeInsets.symmetric(vertical: 5.0),
|
padding:
|
||||||
|
const EdgeInsets.symmetric(vertical: 5),
|
||||||
child: Text(
|
child: Text(
|
||||||
'Login',
|
'LOGIN',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 16,
|
fontSize: 16, color: Colors.white),
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
color: Colors.white),
|
|
||||||
textAlign: TextAlign.center,
|
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(
|
SizedBox(
|
||||||
height: 20,
|
height: 50,
|
||||||
),
|
),
|
||||||
|
// create sign up link
|
||||||
Center(
|
Center(
|
||||||
child: GestureDetector(
|
|
||||||
onTap: () {
|
|
||||||
Navigator.push(context,
|
|
||||||
MaterialPageRoute(builder: (context) => SignupPage()));
|
|
||||||
FocusScope.of(context).unfocus();
|
|
||||||
},
|
|
||||||
child: Wrap(
|
child: Wrap(
|
||||||
children: [
|
children: <Widget>[
|
||||||
Text(
|
Text('New User? '),
|
||||||
'No account yet? ',
|
GestureDetector(
|
||||||
style: GlobalStyle.authBottom1,
|
onTap: () {
|
||||||
|
Fluttertoast.showToast(
|
||||||
|
msg: 'Click signup',
|
||||||
|
toastLength: Toast.LENGTH_SHORT);
|
||||||
|
},
|
||||||
|
child: Text(
|
||||||
|
'Sign Up',
|
||||||
|
style: TextStyle(
|
||||||
|
color: _mainColor, fontWeight: FontWeight.w700),
|
||||||
),
|
),
|
||||||
Text(
|
|
||||||
'Create one',
|
|
||||||
style: GlobalStyle.authBottom2,
|
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
|
||||||
SizedBox(
|
SizedBox(
|
||||||
height: 30,
|
height: 20,
|
||||||
),
|
),
|
||||||
Center(
|
],
|
||||||
child: GestureDetector(
|
|
||||||
onTap: () {
|
|
||||||
Navigator.pop(context);
|
|
||||||
},
|
|
||||||
child: Row(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
|
||||||
children: <Widget>[
|
|
||||||
GlobalStyle.iconBack,
|
|
||||||
Text(
|
|
||||||
' Back',
|
|
||||||
style: GlobalStyle.back,
|
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,250 @@
|
||||||
|
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,6 +21,7 @@ class ProductDetailPage extends StatefulWidget {
|
||||||
final String name;
|
final String name;
|
||||||
final String image;
|
final String image;
|
||||||
final double price;
|
final double price;
|
||||||
|
final int photo;
|
||||||
final double rating;
|
final double rating;
|
||||||
final int review;
|
final int review;
|
||||||
final int sale;
|
final int sale;
|
||||||
|
|
@ -30,6 +31,7 @@ class ProductDetailPage extends StatefulWidget {
|
||||||
this.name = '',
|
this.name = '',
|
||||||
this.image = '',
|
this.image = '',
|
||||||
this.price = 24,
|
this.price = 24,
|
||||||
|
this.photo = 1,
|
||||||
this.rating = 4,
|
this.rating = 4,
|
||||||
this.review = 45,
|
this.review = 45,
|
||||||
this.sale = 63})
|
this.sale = 63})
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,44 @@
|
||||||
|
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,6 +26,7 @@
|
||||||
33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; };
|
33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; };
|
||||||
33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; };
|
33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; };
|
||||||
33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; };
|
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 */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
/* Begin PBXContainerItemProxy section */
|
/* Begin PBXContainerItemProxy section */
|
||||||
|
|
@ -52,9 +53,10 @@
|
||||||
/* End PBXCopyFilesBuildPhase section */
|
/* End PBXCopyFilesBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXFileReference 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>"; };
|
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>"; };
|
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>"; };
|
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>"; };
|
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>"; };
|
33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; };
|
||||||
|
|
@ -66,6 +68,9 @@
|
||||||
33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = "<group>"; };
|
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>"; };
|
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>"; };
|
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>"; };
|
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>"; };
|
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = "<group>"; };
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
|
|
@ -75,12 +80,24 @@
|
||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
|
460D48F4120F6A092FBB8C86 /* Pods_Runner.framework in Frameworks */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
/* End PBXFrameworksBuildPhase section */
|
/* End PBXFrameworksBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXGroup 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 */ = {
|
33BA886A226E78AF003329D5 /* Configs */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
|
@ -99,6 +116,7 @@
|
||||||
33CEB47122A05771004F2AC0 /* Flutter */,
|
33CEB47122A05771004F2AC0 /* Flutter */,
|
||||||
33CC10EE2044A3C60003C045 /* Products */,
|
33CC10EE2044A3C60003C045 /* Products */,
|
||||||
D73912EC22F37F3D000D13A0 /* Frameworks */,
|
D73912EC22F37F3D000D13A0 /* Frameworks */,
|
||||||
|
02999232413A4620F94D542F /* Pods */,
|
||||||
);
|
);
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
|
@ -148,6 +166,7 @@
|
||||||
D73912EC22F37F3D000D13A0 /* Frameworks */ = {
|
D73912EC22F37F3D000D13A0 /* Frameworks */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
49B016110A69499EADAA5A41 /* Pods_Runner.framework */,
|
||||||
);
|
);
|
||||||
name = Frameworks;
|
name = Frameworks;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
|
|
@ -159,11 +178,13 @@
|
||||||
isa = PBXNativeTarget;
|
isa = PBXNativeTarget;
|
||||||
buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */;
|
buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */;
|
||||||
buildPhases = (
|
buildPhases = (
|
||||||
|
F86FCF2D201694F3D0280F28 /* [CP] Check Pods Manifest.lock */,
|
||||||
33CC10E92044A3C60003C045 /* Sources */,
|
33CC10E92044A3C60003C045 /* Sources */,
|
||||||
33CC10EA2044A3C60003C045 /* Frameworks */,
|
33CC10EA2044A3C60003C045 /* Frameworks */,
|
||||||
33CC10EB2044A3C60003C045 /* Resources */,
|
33CC10EB2044A3C60003C045 /* Resources */,
|
||||||
33CC110E2044A8840003C045 /* Bundle Framework */,
|
33CC110E2044A8840003C045 /* Bundle Framework */,
|
||||||
3399D490228B24CF009A79C7 /* ShellScript */,
|
3399D490228B24CF009A79C7 /* ShellScript */,
|
||||||
|
263F3D5435F1A33D2FF5C6C5 /* [CP] Embed Pods Frameworks */,
|
||||||
);
|
);
|
||||||
buildRules = (
|
buildRules = (
|
||||||
);
|
);
|
||||||
|
|
@ -233,6 +254,23 @@
|
||||||
/* End PBXResourcesBuildPhase section */
|
/* End PBXResourcesBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXShellScriptBuildPhase 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 */ = {
|
3399D490228B24CF009A79C7 /* ShellScript */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
alwaysOutOfDate = 1;
|
alwaysOutOfDate = 1;
|
||||||
|
|
@ -271,6 +309,28 @@
|
||||||
shellPath = /bin/sh;
|
shellPath = /bin/sh;
|
||||||
shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire";
|
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 */
|
/* End PBXShellScriptBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXSourcesBuildPhase section */
|
/* Begin PBXSourcesBuildPhase section */
|
||||||
|
|
|
||||||
|
|
@ -4,4 +4,7 @@
|
||||||
<FileRef
|
<FileRef
|
||||||
location = "group:Runner.xcodeproj">
|
location = "group:Runner.xcodeproj">
|
||||||
</FileRef>
|
</FileRef>
|
||||||
|
<FileRef
|
||||||
|
location = "group:Pods/Pods.xcodeproj">
|
||||||
|
</FileRef>
|
||||||
</Workspace>
|
</Workspace>
|
||||||
|
|
|
||||||
|
|
@ -445,6 +445,14 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.1"
|
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:
|
uuid:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ dependencies:
|
||||||
intl: 0.17.0
|
intl: 0.17.0
|
||||||
carousel_slider: 4.2.1
|
carousel_slider: 4.2.1
|
||||||
cached_network_image: 3.2.3
|
cached_network_image: 3.2.3
|
||||||
|
universal_io: 2.2.0
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
|
|
@ -105,4 +106,5 @@ flutter:
|
||||||
- assets/images/visa.png
|
- assets/images/visa.png
|
||||||
- assets/images/mastercard.png
|
- assets/images/mastercard.png
|
||||||
- assets/images/logo.png
|
- assets/images/logo.png
|
||||||
|
- assets/images/logo_dark.png
|
||||||
- assets/images/onboarding/search_product.gif
|
- assets/images/onboarding/search_product.gif
|
||||||
Loading…
Reference in New Issue