Commit f97a4ff7 by Mobile : Ball (Apprentice)

Merge branch 'develop' of https://gitlab.2fellows.com/art/feelver into develop

# Conflicts:
#	lib/main.dart
parents 5497e545 633285b5
...@@ -34,7 +34,9 @@ class MyApp extends StatelessWidget { ...@@ -34,7 +34,9 @@ class MyApp extends StatelessWidget {
), ),
home: ReviewShopPage()
home: SplashScreenPage()
......
...@@ -14,17 +14,17 @@ class shopserviceModel { ...@@ -14,17 +14,17 @@ class shopserviceModel {
shopserviceModel( shopserviceModel(
{this.currentPage, {this.currentPage,
this.data, this.data,
this.firstPageUrl, this.firstPageUrl,
this.from, this.from,
this.lastPage, this.lastPage,
this.lastPageUrl, this.lastPageUrl,
this.nextPageUrl, this.nextPageUrl,
this.path, this.path,
this.perPage, this.perPage,
this.prevPageUrl, this.prevPageUrl,
this.to, this.to,
this.total}); this.total});
shopserviceModel.fromJson(Map<String, dynamic> json) { shopserviceModel.fromJson(Map<String, dynamic> json) {
currentPage = json['current_page']; currentPage = json['current_page'];
...@@ -76,20 +76,20 @@ class Data { ...@@ -76,20 +76,20 @@ class Data {
String price; String price;
String specialPrice; String specialPrice;
String sku; String sku;
dynamic tax; Null tax;
int quantity; int quantity;
dynamic weight; Null weight;
String visibility; String visibility;
dynamic newsFromDate; Null newsFromDate;
dynamic newsToDate; Null newsToDate;
dynamic layout; Null layout;
dynamic theme; Null theme;
String duration; String duration;
dynamic sellingStartTime; Null sellingStartTime;
dynamic sellingEndTime; Null sellingEndTime;
dynamic redemptionStartTime; Null redemptionStartTime;
dynamic redemptionEndTime; Null redemptionEndTime;
dynamic availibility; Null availibility;
String isFeatured; String isFeatured;
String isDeal; String isDeal;
String hasTeam; String hasTeam;
...@@ -107,13 +107,13 @@ class Data { ...@@ -107,13 +107,13 @@ class Data {
int attributeSetId; int attributeSetId;
int vendorId; int vendorId;
String allowRoute; String allowRoute;
String type; Null type;
int star; int star;
List<CategoryByProductId> categoryByProductId; List<CategoryByProductId> categoryByProductId;
List<Null> ratings; List<Null> ratings;
int storeProductId; int storeProductId;
String typeRateService; Null typeRateService;
String priceRateService; Null priceRateService;
int productId; int productId;
int storeId; int storeId;
String storeCode; String storeCode;
...@@ -127,62 +127,62 @@ class Data { ...@@ -127,62 +127,62 @@ class Data {
Data( Data(
{this.id, {this.id,
this.urlCode, this.urlCode,
this.name, this.name,
this.cover, this.cover,
this.excerpt, this.excerpt,
this.detail, this.detail,
this.price, this.price,
this.specialPrice, this.specialPrice,
this.sku, this.sku,
this.tax, this.tax,
this.quantity, this.quantity,
this.weight, this.weight,
this.visibility, this.visibility,
this.newsFromDate, this.newsFromDate,
this.newsToDate, this.newsToDate,
this.layout, this.layout,
this.theme, this.theme,
this.duration, this.duration,
this.sellingStartTime, this.sellingStartTime,
this.sellingEndTime, this.sellingEndTime,
this.redemptionStartTime, this.redemptionStartTime,
this.redemptionEndTime, this.redemptionEndTime,
this.availibility, this.availibility,
this.isFeatured, this.isFeatured,
this.isDeal, this.isDeal,
this.hasTeam, this.hasTeam,
this.offpeak, this.offpeak,
this.reviewStatus, this.reviewStatus,
this.relatedStatus, this.relatedStatus,
this.upSellsStatus, this.upSellsStatus,
this.crossSellsStatus, this.crossSellsStatus,
this.allowGiftMessage, this.allowGiftMessage,
this.stockStatus, this.stockStatus,
this.status, this.status,
this.businessTypeId, this.businessTypeId,
this.businessCateId, this.businessCateId,
this.businessServiceId, this.businessServiceId,
this.attributeSetId, this.attributeSetId,
this.vendorId, this.vendorId,
this.allowRoute, this.allowRoute,
this.type, this.type,
this.star, this.star,
this.categoryByProductId, this.categoryByProductId,
this.ratings, this.ratings,
this.storeProductId, this.storeProductId,
this.typeRateService, this.typeRateService,
this.priceRateService, this.priceRateService,
this.productId, this.productId,
this.storeId, this.storeId,
this.storeCode, this.storeCode,
this.storeName, this.storeName,
this.location, this.location,
this.storeStatus, this.storeStatus,
this.vendorStatus, this.vendorStatus,
this.latitude, this.latitude,
this.longitude, this.longitude,
this.popular}); this.popular});
Data.fromJson(Map<String, dynamic> json) { Data.fromJson(Map<String, dynamic> json) {
id = json['id']; id = json['id'];
...@@ -233,7 +233,12 @@ class Data { ...@@ -233,7 +233,12 @@ class Data {
categoryByProductId.add(new CategoryByProductId.fromJson(v)); categoryByProductId.add(new CategoryByProductId.fromJson(v));
}); });
} }
// if (json['ratings'] != null) {
// ratings = new List<Null>();
// json['ratings'].forEach((v) {
// ratings.add(new Null.fromJson(v));
// });
// }
storeProductId = json['store_product_id']; storeProductId = json['store_product_id'];
typeRateService = json['type_rate_service']; typeRateService = json['type_rate_service'];
priceRateService = json['price_rate_service']; priceRateService = json['price_rate_service'];
...@@ -297,7 +302,9 @@ class Data { ...@@ -297,7 +302,9 @@ class Data {
data['category_by_product_id'] = data['category_by_product_id'] =
this.categoryByProductId.map((v) => v.toJson()).toList(); this.categoryByProductId.map((v) => v.toJson()).toList();
} }
// if (this.ratings != null) {
// data['ratings'] = this.ratings.map((v) => v.toJson()).toList();
// }
data['store_product_id'] = this.storeProductId; data['store_product_id'] = this.storeProductId;
data['type_rate_service'] = this.typeRateService; data['type_rate_service'] = this.typeRateService;
data['price_rate_service'] = this.priceRateService; data['price_rate_service'] = this.priceRateService;
...@@ -326,8 +333,8 @@ class CategoryByProductId { ...@@ -326,8 +333,8 @@ class CategoryByProductId {
Null type; Null type;
String status; String status;
int sortOrder; int sortOrder;
int storeId; Null storeId;
int vendorId; Null vendorId;
Null createdAt; Null createdAt;
String updatedAt; String updatedAt;
String visibility; String visibility;
...@@ -335,21 +342,21 @@ class CategoryByProductId { ...@@ -335,21 +342,21 @@ class CategoryByProductId {
CategoryByProductId( CategoryByProductId(
{this.id, {this.id,
this.parentId, this.parentId,
this.name, this.name,
this.code, this.code,
this.displayName, this.displayName,
this.cover, this.cover,
this.detail, this.detail,
this.type, this.type,
this.status, this.status,
this.sortOrder, this.sortOrder,
this.storeId, this.storeId,
this.vendorId, this.vendorId,
this.createdAt, this.createdAt,
this.updatedAt, this.updatedAt,
this.visibility, this.visibility,
this.pivot}); this.pivot});
CategoryByProductId.fromJson(Map<String, dynamic> json) { CategoryByProductId.fromJson(Map<String, dynamic> json) {
id = json['id']; id = json['id'];
......
...@@ -107,16 +107,16 @@ class Api<T> { ...@@ -107,16 +107,16 @@ class Api<T> {
} }
Future<Response<T>> shopservice(Object body) async { Future<Response<T>> shopservice(String url) async {
var _model; var _model;
var _fail; var _fail;
var result; var result;
print("this is body"+body.toString()); print("this is body "+url.toString());
// (body as Map)['lang'] = allTranslations.currentLanguage; // (body as Map)['lang'] = allTranslations.currentLanguage;
await _httpConnection("${this._baseApi}/product/getListsProductFormat?vendor_id=9&store_id=284&is_paginate=1&per_page=1&v=1", this._headerApi, null) await _httpConnection(url.toString(), this._headerApi, null)
.then((response){ .then((response){
print("ผลลัพท์ เท่ากับ" + "${response.body}"); print("ผลลัพท์ เท่ากับ" + "${response.body}");
if(response.statusCode == 200){ if(response.statusCode == 200){
...@@ -199,20 +199,20 @@ class Api<T> { ...@@ -199,20 +199,20 @@ class Api<T> {
return result; return result;
} }
Future<Response<T>> getProductDetail(Object body) async{ Future<Response<T>> getProductDetail(String url) async{
var _model; var _model;
var _fail; var _fail;
var result; var result;
print("this is body " + body.toString()); print("this is body " + url.toString());
// (body as Map)['lang'] = allTranslations.currentLanguage; // (body as Map)['lang'] = allTranslations.currentLanguage;
await http.get(Uri.encodeFull("https://backend.feelver.com/api/product/1000?store_id=284&vendor_id=9"), headers: this._headerApi ).then((response) { await http.get(Uri.encodeFull(url.toString()), headers: this._headerApi, ).then((response) {
print("ผลลัพ เท่ากับบบบ2 " + "${response.body}"); print("ผลลัพ เท่ากับบบบ2 " + "${response.body}");
print("statusCode=${response.statusCode}"); print("statusCode=${response.statusCode}");
if (response.statusCode == 200) { if (response.statusCode == 200) {
print("INif"); print("INif");
// https://backend.feelver.com/api/product/1000?store_id=284&vendor_id=9
_model = ProductModel.fromJson(json.decode(response.body)); _model = ProductModel.fromJson(json.decode(response.body));
} else { } else {
......
import 'package:feelverapp/ui/booking/booking_detail_presenter.dart'; import 'package:feelverapp/ui/booking/booking_detail_presenter.dart';
import 'package:feelverapp/ui/booking/bookingform.dart'; import 'package:feelverapp/ui/booking/bookingform.dart';
import 'package:feelverapp/ui/payment/mycart.dart';
import 'package:feelverapp/util/SizeConfig.dart'; import 'package:feelverapp/util/SizeConfig.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
...@@ -27,6 +28,8 @@ class _BookingDetailState extends State<BookingDetail> { ...@@ -27,6 +28,8 @@ class _BookingDetailState extends State<BookingDetail> {
// print(widget.getid); // print(widget.getid);
presenter = BookingDetailtPresenter(this); presenter = BookingDetailtPresenter(this);
setState(() { setState(() {
presenter.vendor_id = widget.vendor_id;
presenter.store_id = widget.store_id;
presenter.getid = widget.getid; presenter.getid = widget.getid;
}); });
presenter.getDetail(); presenter.getDetail();
...@@ -98,6 +101,7 @@ class _BookingDetailState extends State<BookingDetail> { ...@@ -98,6 +101,7 @@ class _BookingDetailState extends State<BookingDetail> {
: Container( : Container(
padding: EdgeInsets.only( padding: EdgeInsets.only(
left: SizeConfig.getPadding(24), left: SizeConfig.getPadding(24),
right: SizeConfig.getPadding(24),
top: SizeConfig.getPadding(16), top: SizeConfig.getPadding(16),
bottom: SizeConfig.getPadding(16)), bottom: SizeConfig.getPadding(16)),
alignment: Alignment.topLeft, alignment: Alignment.topLeft,
...@@ -243,6 +247,12 @@ class _BookingDetailState extends State<BookingDetail> { ...@@ -243,6 +247,12 @@ class _BookingDetailState extends State<BookingDetail> {
// fontWeight: FontWeight.w500), // fontWeight: FontWeight.w500),
// ), // ),
// ), // ),
Divider(
color: Colors.black,
height: SizeConfig.getHeight(35),
indent: 20,
endIndent: 20,
),
SizedBox( SizedBox(
height: SizeConfig.getHeight(16), height: SizeConfig.getHeight(16),
), ),
...@@ -372,28 +382,43 @@ class _BookingDetailState extends State<BookingDetail> { ...@@ -372,28 +382,43 @@ class _BookingDetailState extends State<BookingDetail> {
fontWeight: FontWeight.w500), fontWeight: FontWeight.w500),
), ),
), ),
Container( InkWell(onTap: (){
margin: EdgeInsets.only( Navigator.push(
top: SizeConfig.getPadding(20), context,
left: SizeConfig.getPadding(250)), CupertinoPageRoute(
builder: (context) => MyCart(
// getid: presenter.model.result[0]
// .storeProduct[i].product.id,
// vendor_id: presenter.model.result[0].storeProduct[i]
// .product.vendorId,
// store_id: presenter.model.result[0].storeProduct[i].storeId,
),
),
);
},
child: Container(
margin: EdgeInsets.only(
top: SizeConfig.getPadding(20),
left: SizeConfig.getPadding(250)),
// color: Colors.red, // color: Colors.red,
width: SizeConfig.getWidth(100), width: SizeConfig.getWidth(100),
height: SizeConfig.getHeight(45), height: SizeConfig.getHeight(45),
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(0), borderRadius: BorderRadius.circular(0),
color: Color.fromRGBO(238, 175, 183, 1), color: Color.fromRGBO(238, 175, 183, 1),
), ),
child: Container( child: Container(
padding: EdgeInsets.only(top: SizeConfig.getPadding(6)), padding: EdgeInsets.only(top: SizeConfig.getPadding(6)),
child: Text( child: Text(
'หยิบใส่รถเข็น', 'หยิบใส่รถเข็น',
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: TextStyle( style: TextStyle(
color: Colors.white, color: Colors.white,
fontSize: SizeConfig.getFontSize(14), fontSize: SizeConfig.getFontSize(14),
fontFamily: "SF_Pro_Text", fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500), fontWeight: FontWeight.w500),
),
), ),
), ),
), ),
......
...@@ -32,7 +32,9 @@ class BookingDetailtPresenter extends BasePresenter<BookingDetail> { ...@@ -32,7 +32,9 @@ class BookingDetailtPresenter extends BasePresenter<BookingDetail> {
_api = Api<ProductModel>(); _api = Api<ProductModel>();
var res = await _api.getProductDetail({}); var res = await _api.getProductDetail(
'https://backend.feelver.com/api/product/' + getid.toString() + '?store_id=' + store_id.toString() + '&vendor_id=' + vendor_id.toString()
);
if (res.fail == null) { if (res.fail == null) {
if (res.success.status) { if (res.success.status) {
......
...@@ -61,7 +61,21 @@ class _FavoriteState extends State<Favorite> { ...@@ -61,7 +61,21 @@ class _FavoriteState extends State<Favorite> {
), ),
child: Container( child: Container(
child: presenter.favoriteModel == null child: presenter.favoriteModel == null
? Container() ? Container(
child: Center(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
SizedBox(
child: CircularProgressIndicator( valueColor: new AlwaysStoppedAnimation<Color>(
Color.fromRGBO(69, 85, 79, 1),
),),
height: 30.0,
width: 30.0,
),]
))
)
: ListView.builder( : ListView.builder(
itemCount: presenter.favoriteModel.wishListItem.length, itemCount: presenter.favoriteModel.wishListItem.length,
itemBuilder: (context, i) { itemBuilder: (context, i) {
...@@ -98,7 +112,7 @@ class _FavoriteState extends State<Favorite> { ...@@ -98,7 +112,7 @@ class _FavoriteState extends State<Favorite> {
.cover, .cover,
width: SizeConfig.getWidth(110), width: SizeConfig.getWidth(110),
height: SizeConfig.getHeight(150), height: SizeConfig.getHeight(150),
fit: BoxFit.fitWidth, fit: BoxFit.cover,
), ),
Expanded( Expanded(
child: Container( child: Container(
...@@ -114,18 +128,20 @@ class _FavoriteState extends State<Favorite> { ...@@ -114,18 +128,20 @@ class _FavoriteState extends State<Favorite> {
// color: Colors.blue, // color: Colors.blue,
child: Row( child: Row(
children: <Widget>[ children: <Widget>[
Expanded( Expanded(
child: Container(
child: Container( child: Text(
child: Text( presenter.favoriteModel.wishListItem[index]
presenter.favoriteModel.wishListItem[index].product.name, .product.name,
style: TextStyle( style: TextStyle(
color: Colors.black, color: Colors.black,
fontSize: SizeConfig.getFontSize(15)), fontSize: SizeConfig.getFontSize(15),
maxLines: 2, fontFamily: "SF_Pro_Text",
), fontWeight: FontWeight.w700),
maxLines: 2,
), ),
), ),
),
// Spacer(), // Spacer(),
IconButton( IconButton(
onPressed: () { onPressed: () {
...@@ -145,8 +161,10 @@ class _FavoriteState extends State<Favorite> { ...@@ -145,8 +161,10 @@ class _FavoriteState extends State<Favorite> {
child: Text( child: Text(
'นวดเเผนไทย', 'นวดเเผนไทย',
style: TextStyle( style: TextStyle(
color: Colors.black, color: Colors.black,
), fontSize: SizeConfig.getFontSize(14),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
), ),
), ),
SizedBox( SizedBox(
...@@ -223,7 +241,7 @@ class _FavoriteState extends State<Favorite> { ...@@ -223,7 +241,7 @@ class _FavoriteState extends State<Favorite> {
children: <Widget>[ children: <Widget>[
Container( Container(
color: Color.fromRGBO(69, 85, 79, 1), color: Color.fromRGBO(69, 85, 79, 1),
height: SizeConfig.getHeight(200), height: SizeConfig.getHeight(180),
width: MediaQuery.of(context).size.width, width: MediaQuery.of(context).size.width,
), ),
Positioned( Positioned(
...@@ -239,23 +257,17 @@ class _FavoriteState extends State<Favorite> { ...@@ -239,23 +257,17 @@ class _FavoriteState extends State<Favorite> {
), ),
), ),
Positioned( Positioned(
top: SizeConfig.getPadding(77), top: SizeConfig.getPadding(70),
left: SizeConfig.getPadding(16), left: SizeConfig.getPadding(16),
child: Container( child: Container(
child: GestureDetector( child: GestureDetector(
onTap: () { onTap: () {
showDialog( Navigator.pop(context);
context: context,
builder: (BuildContext context) {
return NavDrawer();
},
);
}, },
child: Image.asset( child: Icon(
'assets/images/ic_menu.png', Icons.keyboard_arrow_left,
height: SizeConfig.getWidth(24), color: Colors.white,
width: SizeConfig.getWidth(30), size: SizeConfig.getFontSize(40),
fit: BoxFit.cover,
), ),
), ),
), ),
......
import 'package:feelverapp/model/favorite/delete_favorite_Model.dart'; import 'package:feelverapp/model/favorite/delete_favorite_Model.dart';
import 'package:feelverapp/model/favorite/favorite_Model.dart'; import 'package:feelverapp/model/favorite/favorite_Model.dart';
import 'package:feelverapp/service/Loading.dart';
import 'package:feelverapp/service/api.dart'; import 'package:feelverapp/service/api.dart';
import 'package:feelverapp/service/base_presenter.dart'; import 'package:feelverapp/service/base_presenter.dart';
import 'package:feelverapp/ui/favorite/favorite.dart'; import 'package:feelverapp/ui/favorite/favorite.dart';
...@@ -14,16 +15,16 @@ class FavoritePresenter extends BasePresenter<Favorite> { ...@@ -14,16 +15,16 @@ class FavoritePresenter extends BasePresenter<Favorite> {
FavoritePresenter(State<Favorite> state) : super(state); FavoritePresenter(State<Favorite> state) : super(state);
Favoriteitem() async { Favoriteitem() async {
var _id = await AccountUtil.getID(); var _id = await AccountUtil.getID();
print(_id);
print("555555555555");
_api = Api<FavoriteModel>(); _api = Api<FavoriteModel>();
var res = await _api.favorite({ var res = await _api.favorite({
"customer_id": _id, "customer_id": _id,
}); });
if (res.fail == null) { if (res.fail == null) {
setState(() { setState(() {
favoriteModel = res.success; favoriteModel = res.success;
...@@ -34,11 +35,13 @@ class FavoritePresenter extends BasePresenter<Favorite> { ...@@ -34,11 +35,13 @@ class FavoritePresenter extends BasePresenter<Favorite> {
} }
Deletefavoriteitem(String id) async { Deletefavoriteitem(String id) async {
LoadingView(state.context).show();
_api = Api<DeletefavoriteModel>(); _api = Api<DeletefavoriteModel>();
var res = await _api.deletefavorite({ var res = await _api.deletefavorite({
"id": id, "id": id,
}); });
LoadingView(state.context).hide();
if (res.fail == null) { if (res.fail == null) {
setState(() { setState(() {
deletefavoriteModel = res.success; deletefavoriteModel = res.success;
......
...@@ -77,6 +77,12 @@ class _HomePageState extends State<HomePage> with TickerProviderStateMixin { ...@@ -77,6 +77,12 @@ class _HomePageState extends State<HomePage> with TickerProviderStateMixin {
height: SizeConfig.getWidth(24), height: SizeConfig.getWidth(24),
), ),
onPressed: () { onPressed: () {
setState(() {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => HomePage()),
);
});
print("Pressed"); print("Pressed");
}, },
), ),
...@@ -259,7 +265,7 @@ class _HomePageState extends State<HomePage> with TickerProviderStateMixin { ...@@ -259,7 +265,7 @@ class _HomePageState extends State<HomePage> with TickerProviderStateMixin {
child: ClipRRect( child: ClipRRect(
borderRadius: BorderRadius.all( borderRadius: BorderRadius.all(
Radius.circular(SizeConfig.getWidth(56))), Radius.circular(SizeConfig.getWidth(56))),
child: Image.network( child: presenter.getmodel.result[0].image==null?Container(): Image.network(
presenter.getmodel.result[0].image, presenter.getmodel.result[0].image,
fit: BoxFit.contain, fit: BoxFit.contain,
width: SizeConfig.getWidth(30), width: SizeConfig.getWidth(30),
...@@ -285,7 +291,7 @@ class _HomePageState extends State<HomePage> with TickerProviderStateMixin { ...@@ -285,7 +291,7 @@ class _HomePageState extends State<HomePage> with TickerProviderStateMixin {
child: ClipRRect( child: ClipRRect(
borderRadius: BorderRadius.all( borderRadius: BorderRadius.all(
Radius.circular(SizeConfig.getWidth(56))), Radius.circular(SizeConfig.getWidth(56))),
child: Image.network( child: presenter.getmodel.result[0].image==null?Container(): Image.network(
presenter.getmodel.result[0].image, presenter.getmodel.result[0].image,
fit: BoxFit.contain, fit: BoxFit.contain,
width: SizeConfig.getWidth(30), width: SizeConfig.getWidth(30),
......
...@@ -187,9 +187,11 @@ class _ShopNearbyPlacesPageState extends State<ShopNearbyPlacesPage> ...@@ -187,9 +187,11 @@ class _ShopNearbyPlacesPageState extends State<ShopNearbyPlacesPage>
return presenter.getmodel == null return presenter.getmodel == null
? Container( ? Container(
child: Center( child: Center(
child: CircularProgressIndicator( child: CircularProgressIndicator(
valueColor: new AlwaysStoppedAnimation<Color>(Colors.teal), valueColor: new AlwaysStoppedAnimation<Color>(Colors.teal),
))) ),
),
)
: Container( : Container(
padding: EdgeInsets.only( padding: EdgeInsets.only(
top: SizeConfig.getPadding(80), top: SizeConfig.getPadding(80),
...@@ -223,7 +225,7 @@ class _ShopNearbyPlacesPageState extends State<ShopNearbyPlacesPage> ...@@ -223,7 +225,7 @@ class _ShopNearbyPlacesPageState extends State<ShopNearbyPlacesPage>
CupertinoPageRoute( CupertinoPageRoute(
builder: (context) => ShopListDetail( builder: (context) => ShopListDetail(
// id: id, // id: id,
), ),
), ),
); );
}); });
......
...@@ -9,12 +9,14 @@ import 'package:flutter/material.dart'; ...@@ -9,12 +9,14 @@ import 'package:flutter/material.dart';
import 'dart:math'; import 'dart:math';
class MainShop extends StatefulWidget { class MainShop extends StatefulWidget {
int getid; int getid;
int vendor_id; int vendor_id;
int store_id; int store_id;
MainShop({Key key, this.title,this.getid,this.vendor_id,this.store_id}) : super(key: key); MainShop({Key key, this.title,this.getid,this.vendor_id,this.store_id}) : super(key: key);
final String title; final String title;
...@@ -285,7 +287,7 @@ class _MainShopState extends State<MainShop> ...@@ -285,7 +287,7 @@ class _MainShopState extends State<MainShop>
child: Container( child: Container(
// color: Colors.blue, // color: Colors.blue,
// height: double.maxFinite, // height: double.maxFinite,
child: ShopServicePage(), child: ShopServicePage(getid: widget.getid,vendor_id: widget.vendor_id,store_id: widget.store_id,),
), ),
), ),
], ],
...@@ -295,7 +297,7 @@ class _MainShopState extends State<MainShop> ...@@ -295,7 +297,7 @@ class _MainShopState extends State<MainShop>
Container( Container(
// color: Colors.red, // color: Colors.red,
child: ShopReviewsPage(), child: ShopReviewsPage(getid: widget.getid,vendor_id: widget.vendor_id,store_id: widget.store_id,),
// child: getlist(), // child: getlist(),
//width: 20, //width: 20,
), ),
......
...@@ -3,8 +3,19 @@ import 'package:feelverapp/util/rating_star.dart'; ...@@ -3,8 +3,19 @@ import 'package:feelverapp/util/rating_star.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class ShopReviewsPage extends StatefulWidget { class ShopReviewsPage extends StatefulWidget {
int getid;
int vendor_id;
int store_id;
ShopReviewsPage({Key key, this.getid,this.vendor_id,this.store_id}) : super(key: key);
@override @override
_ShopReviewsPageState createState() => _ShopReviewsPageState(); _ShopReviewsPageState createState() => _ShopReviewsPageState();
// setState(() {
// presenter.vendor_id = widget.vendor_id;
// presenter.store_id = widget.store_id;
// presenter.getid = widget.getid;
// });
} }
class _ShopReviewsPageState extends State<ShopReviewsPage> { class _ShopReviewsPageState extends State<ShopReviewsPage> {
......
...@@ -9,6 +9,13 @@ import '../booking/booking_detail.dart'; ...@@ -9,6 +9,13 @@ import '../booking/booking_detail.dart';
import 'shop_main.dart'; import 'shop_main.dart';
class ShopServicePage extends StatefulWidget { class ShopServicePage extends StatefulWidget {
int getid;
int vendor_id;
int store_id;
ShopServicePage({Key key, this.getid, this.vendor_id, this.store_id})
: super(key: key);
@override @override
_ShopServicePageState createState() => _ShopServicePageState(); _ShopServicePageState createState() => _ShopServicePageState();
} }
...@@ -24,6 +31,12 @@ class _ShopServicePageState extends State<ShopServicePage> ...@@ -24,6 +31,12 @@ class _ShopServicePageState extends State<ShopServicePage>
super.initState(); super.initState();
presenter = ShopServicePresenter(this); presenter = ShopServicePresenter(this);
setState(() {
presenter.vendor_id = widget.vendor_id;
presenter.store_id = widget.store_id;
presenter.getid = widget.getid;
});
presenter.Servicelistitem(); presenter.Servicelistitem();
} }
...@@ -35,31 +48,44 @@ class _ShopServicePageState extends State<ShopServicePage> ...@@ -35,31 +48,44 @@ class _ShopServicePageState extends State<ShopServicePage>
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
SizeConfig(context); SizeConfig(context);
return Container(
child: presenter.serviceModel == null return presenter.serviceModel == null
? Container() ? Container(
: ListView.builder( child: Center(
itemCount: presenter.serviceModel.data.length, child: CircularProgressIndicator(
itemBuilder: (context, i) { valueColor: new AlwaysStoppedAnimation<Color>(Colors.teal),
return myCard( ),
presenter.serviceModel.data[i].name,
presenter.serviceModel.data[i].cover,
presenter.serviceModel.data[i].price,
presenter.serviceModel.data[i].duration,
presenter.serviceModel.data[i].id,
presenter.serviceModel.data[i].specialPrice == null
? ""
: presenter.serviceModel.data[i].specialPrice,
presenter.serviceModel.data[i].vendorId,
presenter.serviceModel.data[i].storeId,
);
},
), ),
); )
: Container(
child: presenter.serviceModel.data == null
? Container()
: ListView.builder(
itemCount: presenter.serviceModel.data.length,
itemBuilder: (context, i) {
// print(presenter.serviceModel.data.length);
return myCard(
presenter.serviceModel.data[i].name,
presenter.serviceModel.data[i].cover == null
? "https://heart.kku.ac.th/media/tz_portfolio_plus/article/cache/dujdao-sahasthas-2-14_o.png"
: presenter.serviceModel.data[i].cover,
presenter.serviceModel.data[i].excerpt,
presenter.serviceModel.data[i].price,
presenter.serviceModel.data[i].duration,
presenter.serviceModel.data[i].id,
presenter.serviceModel.data[i].specialPrice == null
? ""
: presenter.serviceModel.data[i].specialPrice,
presenter.serviceModel.data[i].vendorId,
presenter.serviceModel.data[i].storeId,
);
},
),
);
} }
Widget myCard(String title, String image, String price, String time, int id, Widget myCard(String title, String image, String detail, String price,
String special_price , int vendor_id,int store_id) { String time, int id, String special_price, int vendor_id, int store_id) {
return InkWell( return InkWell(
onTap: () { onTap: () {
setState( setState(
...@@ -68,8 +94,9 @@ class _ShopServicePageState extends State<ShopServicePage> ...@@ -68,8 +94,9 @@ class _ShopServicePageState extends State<ShopServicePage>
context, context,
CupertinoPageRoute( CupertinoPageRoute(
builder: (context) => MainShop( builder: (context) => MainShop(
getid: id,vendor_id: vendor_id,store_id: store_id, getid: id,
vendor_id: vendor_id,
store_id: store_id,
), ),
), ),
); );
...@@ -96,7 +123,7 @@ class _ShopServicePageState extends State<ShopServicePage> ...@@ -96,7 +123,7 @@ class _ShopServicePageState extends State<ShopServicePage>
// color: Colors.blue, // color: Colors.blue,
height: SizeConfig.getHeight(250), height: SizeConfig.getHeight(250),
child: presenter.serviceModel == null child: presenter.serviceModel == null
? Image.asset( ? Image.network(
"assets/images/demo_img.png", "assets/images/demo_img.png",
fit: BoxFit.cover, fit: BoxFit.cover,
) )
...@@ -133,12 +160,12 @@ class _ShopServicePageState extends State<ShopServicePage> ...@@ -133,12 +160,12 @@ class _ShopServicePageState extends State<ShopServicePage>
height: 5, height: 5,
), ),
Text( Text(
"SPA Cenvaree @ Centara Grand CentralWorld Bangkok", detail,
style: TextStyle( style: TextStyle(
color: Color(0xff969696), color: Color(0xff969696),
fontSize: SizeConfig.getFontSize(11), fontSize: SizeConfig.getFontSize(11),
fontFamily: "SF_Pro_Text", fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500), fontWeight: FontWeight.w500),maxLines: 3,
), ),
], ],
), ),
...@@ -149,30 +176,28 @@ class _ShopServicePageState extends State<ShopServicePage> ...@@ -149,30 +176,28 @@ class _ShopServicePageState extends State<ShopServicePage>
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Row( // Row(
crossAxisAlignment: CrossAxisAlignment.center, // crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[ // children: <Widget>[
Image.asset( // Image.asset(
'assets/images/pin_drop.png', // 'assets/images/pin_drop.png',
height: 20, // height: 20,
width: 20, // width: 20,
), // ),
SizedBox( // SizedBox(
width: 5, // width: 5,
), // ),
Text( // Text(
"พญาไท กรุงเทพฯ", // addres,
style: TextStyle( // style: TextStyle(
color: Colors.black, // color: Colors.black,
fontSize: SizeConfig.getFontSize(13), // fontSize: SizeConfig.getFontSize(13),
fontFamily: "SF_Pro_Text", // fontFamily: "SF_Pro_Text",
), // ),
), // ),
], // ],
), // ),
SizedBox(
height: 10,
),
Row( Row(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[ children: <Widget>[
......
...@@ -6,6 +6,10 @@ import 'package:flutter/material.dart'; ...@@ -6,6 +6,10 @@ import 'package:flutter/material.dart';
class ShopServicePresenter extends BasePresenter<ShopServicePage> { class ShopServicePresenter extends BasePresenter<ShopServicePage> {
Api _api; Api _api;
int getid;
int vendor_id;
int store_id;
final formkey = GlobalKey<FormState>(); final formkey = GlobalKey<FormState>();
shopserviceModel serviceModel; shopserviceModel serviceModel;
...@@ -13,20 +17,17 @@ class ShopServicePresenter extends BasePresenter<ShopServicePage> { ...@@ -13,20 +17,17 @@ class ShopServicePresenter extends BasePresenter<ShopServicePage> {
Servicelistitem() async { Servicelistitem() async {
_api = Api<shopserviceModel>(); _api = Api<shopserviceModel>();
var res = await _api.shopservice({ var res = await _api.shopservice(
"vendor_id": "9", 'https://backend-uat.feelver.com/api/product/getListsProductFormat?vendor_id=' +
"store_id": "284", vendor_id.toString() +
"is_paginate": "1", '&store_id=' +
"per_page": "1", store_id.toString() +
"v": "1", '&is_paginate=1&per_page=99&v=1');
});
if (res.fail == null) { if (res.fail == null) {
setState(() { setState(() {
serviceModel = res.success; serviceModel = res.success;
print("sssssssssssss"); print('${serviceModel.data[1].name}');
print('${serviceModel.data[0].name}');
}); });
} else { } else {
print('res Fail'); print('res Fail');
......
...@@ -99,6 +99,13 @@ packages: ...@@ -99,6 +99,13 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "5.2.1" version: "5.2.1"
firebase_crashlytics:
dependency: "direct main"
description:
name: firebase_crashlytics
url: "https://pub.dartlang.org"
source: hosted
version: "0.1.4+1"
flutter: flutter:
dependency: "direct main" dependency: "direct main"
description: flutter description: flutter
......
...@@ -37,6 +37,7 @@ dependencies: ...@@ -37,6 +37,7 @@ dependencies:
date_format: ^1.0.8 date_format: ^1.0.8
flutter_datetime_picker: ^1.4.0 flutter_datetime_picker: ^1.4.0
carousel_slider: ^2.2.1 carousel_slider: ^2.2.1
firebase_crashlytics: ^0.1.4+1
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment