Browse Source

1.定位权限更改,增加权限说明;

2.火锅店套餐下单更改;
3.火锅下单vip更改;
4.门店列表搜索键盘优化;
5.订单列表优化;
new_revision_app
wurong 2 years ago
parent
commit
07654c9b42
  1. 1
      lib/main_page.dart
  2. 43
      lib/mine/mine_page.dart
  3. 6
      lib/order/order_detail_page.dart
  4. 5
      lib/order/order_history_page.dart
  5. 9
      lib/retrofit/data/order_product_vo.dart
  6. 132
      lib/retrofit/data/shoppingCart.dart
  7. 9
      lib/settlement/settlement.dart
  8. 2
      lib/settlement/settlement_view/activity_coupon_remarks.dart
  9. 3
      lib/union/location_map_page.dart
  10. 1
      lib/union/union_list.dart
  11. 62
      lib/utils/location.dart
  12. 5
      lib/view_widget/new_coupon_widget.dart
  13. 2
      pubspec.yaml

1
lib/main_page.dart

@ -161,6 +161,7 @@ class _MainPage extends State<MainPage> with WidgetsBindingObserver {
queryUserInfo();
///App自动更新
appAutoUpdate();
}
final XgFlutterPlugin xgFlutterPlugin = XgFlutterPlugin();

43
lib/mine/mine_page.dart

@ -78,6 +78,7 @@ class MinePageState extends State<MinePage> with AutomaticKeepAliveClientMixin {
super.initState();
querySocialInfo();
queryMsgStats();
queryCoupon();
// queryCard();
eventBus.on<EventType>().listen((event) {
@ -118,22 +119,6 @@ class MinePageState extends State<MinePage> with AutomaticKeepAliveClientMixin {
ranks.addAll(rankData.data);
}
BaseData<PageInfo<Coupon>> baseData = await apiService.queryCard({
"centre": true,
"pageNum": 1,
"pageSize": 10,
"searchKey": "",
"state": 1
}).catchError((error) {
_refreshController.refreshFailed();
});
if (baseData != null && baseData.isSuccess) {
couponNum = baseData.data.total;
_refreshController.refreshCompleted();
} else {
_refreshController.refreshFailed();
}
BaseData<UserInfo> baseDate =
await apiService.queryInfo().catchError((onError) {
_refreshController.refreshFailed();
@ -152,8 +137,34 @@ class MinePageState extends State<MinePage> with AutomaticKeepAliveClientMixin {
// EasyLoading.dismiss();
}
queryCoupon()async{
SharedPreferences value = await SharedPreferences.getInstance();
apiService = ApiService(
Dio(),
context: context,
token: value.getString("token"),
showLoading: false,
);
BaseData<PageInfo<Coupon>> baseData = await apiService.queryCard({
"centre": true,
"pageNum": 1,
"pageSize": 10,
"searchKey": "",
"state": 1
}).catchError((error) {
_refreshController.refreshFailed();
});
if (baseData != null && baseData.isSuccess) {
couponNum = baseData.data.total;
_refreshController.refreshCompleted();
} else {
_refreshController.refreshFailed();
}
}
_onRefresh() {
// queryUserInfo();
queryCoupon();
querySocialInfo();
queryMsgStats();
}

6
lib/order/order_detail_page.dart

@ -119,6 +119,8 @@ class _OrderDetailPage extends State<OrderDetailPage> {
setState(() {
statusTitle();
});
}else{
SmartDialog.showToast(baseData.msg,alignment: Alignment.center);
}
}
@ -172,7 +174,7 @@ class _OrderDetailPage extends State<OrderDetailPage> {
),
///
if(orderInfo != null)
if(orderInfo != null && orderInfo.addressExt != null)
OrderAddress(
orderStatus,
isTakeOut,
@ -521,6 +523,8 @@ class _OrderDetailPage extends State<OrderDetailPage> {
// Future.delayed(Duration(milliseconds:450), () {
queryDetails();
// });
}else{
SmartDialog.showToast(baseData.msg,alignment: Alignment.center);
}
}

5
lib/order/order_history_page.dart

@ -364,7 +364,7 @@ class _OrderHistoryList extends State<OrderHistoryList>
],
),
Container(
margin: EdgeInsets.only(left: 12.w),
margin: EdgeInsets.only(left: 12.w,top:3.h),
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
@ -614,6 +614,9 @@ class _OrderHistoryList extends State<OrderHistoryList>
if (baseData != null && baseData.isSuccess) {
SmartDialog.showToast("订单取消成功");
_onRefresh();
}else{
if(baseData.msg != null)
SmartDialog.showToast(baseData.msg,alignment: Alignment.center);
}
}

9
lib/retrofit/data/order_product_vo.dart

@ -1,3 +1,5 @@
import 'package:huixiang/retrofit/data/shoppingCart.dart';
class OrderProductVOList {
OrderProductVOList({
ActInfo actInfo,
@ -17,6 +19,7 @@ class OrderProductVOList {
String skuId,
String skuImg,
String skuNameStr,
List<SetMealDataList> setMealDataList
}) {
this.actInfo = actInfo;
this.additionalComment = additionalComment;
@ -35,6 +38,7 @@ class OrderProductVOList {
this.skuId = skuId;
this.skuImg = skuImg;
this.skuNameStr = skuNameStr;
this.setMealDataList = setMealDataList;
}
OrderProductVOList.fromJson(dynamic json) {
@ -59,6 +63,9 @@ class OrderProductVOList {
this.skuId = json['skuId'];
this.skuImg = json['skuImg'];
this.skuNameStr = json['skuNameStr'];
this.setMealDataList = []..addAll(
(json['setMealDataList'] as List ?? [])
.map((o) => SetMealDataList.fromJson(o)));
}
ActInfo actInfo;
@ -78,6 +85,7 @@ class OrderProductVOList {
String skuId;
String skuImg;
String skuNameStr;
List<SetMealDataList> setMealDataList;
Map<String, dynamic> toJson() {
@ -105,6 +113,7 @@ class OrderProductVOList {
map['skuId'] = this.skuId;
map['skuImg'] = this.skuImg;
map['skuNameStr'] = this.skuNameStr;
map['setMealDataList']=this.setMealDataList;
return map;
}

132
lib/retrofit/data/shoppingCart.dart

@ -18,8 +18,8 @@ class ShoppingCart {
int selectDiscount;
String storeName;
String tableId;
List<PromotionInfoListBean> promotionInfoList;
List<CouponListBean> couponList;
List<PromotionInfoListBeans> promotionInfoList;
List<CouponListBeans> couponList;
static ShoppingCart fromJson(Map<String, dynamic> map) {
if (map == null) return null;
@ -35,10 +35,10 @@ class ShoppingCart {
shoppingCartBean.selectDiscount = map['selectDiscount'];
shoppingCartBean.tableId = map['tableId'];
shoppingCartBean.promotionInfoList = List()..addAll(
(map['promotionInfoList'] as List ?? []).map((o) => PromotionInfoListBean.fromJson(o))
(map['promotionInfoList'] as List ?? []).map((o) => PromotionInfoListBeans.fromJson(o))
);
shoppingCartBean.couponList = List()..addAll(
(map['couponList'] as List ?? []).map((o) => CouponListBean.fromJson(o))
(map['couponList'] as List ?? []).map((o) => CouponListBeans.fromJson(o))
);
return shoppingCartBean;
}
@ -308,7 +308,7 @@ class ProductInfoList {
/// isMaxPromotion : true
/// promotionProuctList : null
class PromotionInfoListBean {
class PromotionInfoListBeans {
String id;
String createTime;
String createUser;
@ -339,43 +339,43 @@ class PromotionInfoListBean {
bool isMaxPromotion;
dynamic promotionProuctList;
static PromotionInfoListBean fromJson(Map<String, dynamic> map) {
static PromotionInfoListBeans fromJson(Map<String, dynamic> map) {
if (map == null) return null;
PromotionInfoListBean promotionInfoListBean = PromotionInfoListBean();
promotionInfoListBean.id = map['id'];
promotionInfoListBean.createTime = map['createTime'];
promotionInfoListBean.createUser = map['createUser'];
promotionInfoListBean.updateTime = map['updateTime'];
promotionInfoListBean.updateUser = map['updateUser'];
promotionInfoListBean.storeId = map['storeId'];
promotionInfoListBean.name = map['name'];
promotionInfoListBean.image = map['image'];
promotionInfoListBean.description = map['description'];
promotionInfoListBean.status = map['status'];
promotionInfoListBean.applyStartTime = map['applyStartTime'];
promotionInfoListBean.applyEndTime = map['applyEndTime'];
promotionInfoListBean.activityStartTime = map['activityStartTime'];
promotionInfoListBean.activityEndTime = map['activityEndTime'];
promotionInfoListBean.doStartTime = map['doStartTime'];
promotionInfoListBean.doEndTime = map['doEndTime'];
promotionInfoListBean.isNeedSecurityDeposit = map['isNeedSecurityDeposit'];
promotionInfoListBean.securityDeposit = map['securityDeposit'];
promotionInfoListBean.tag = map['tag'];
promotionInfoListBean.promotionType = map['promotionType'];
promotionInfoListBean.promotionPlan = map['promotionPlan'];
promotionInfoListBean.promotionDetail = List()..addAll(
PromotionInfoListBeans promotionInfoListBeans = PromotionInfoListBeans();
promotionInfoListBeans.id = map['id'];
promotionInfoListBeans.createTime = map['createTime'];
promotionInfoListBeans.createUser = map['createUser'];
promotionInfoListBeans.updateTime = map['updateTime'];
promotionInfoListBeans.updateUser = map['updateUser'];
promotionInfoListBeans.storeId = map['storeId'];
promotionInfoListBeans.name = map['name'];
promotionInfoListBeans.image = map['image'];
promotionInfoListBeans.description = map['description'];
promotionInfoListBeans.status = map['status'];
promotionInfoListBeans.applyStartTime = map['applyStartTime'];
promotionInfoListBeans.applyEndTime = map['applyEndTime'];
promotionInfoListBeans.activityStartTime = map['activityStartTime'];
promotionInfoListBeans.activityEndTime = map['activityEndTime'];
promotionInfoListBeans.doStartTime = map['doStartTime'];
promotionInfoListBeans.doEndTime = map['doEndTime'];
promotionInfoListBeans.isNeedSecurityDeposit = map['isNeedSecurityDeposit'];
promotionInfoListBeans.securityDeposit = map['securityDeposit'];
promotionInfoListBeans.tag = map['tag'];
promotionInfoListBeans.promotionType = map['promotionType'];
promotionInfoListBeans.promotionPlan = map['promotionPlan'];
promotionInfoListBeans.promotionDetail = List()..addAll(
(map['promotionDetail'] as List ?? []).map((o) => PromotionDetailBean.fromJson(o))
);
promotionInfoListBean.channels = List()..addAll(
promotionInfoListBeans.channels = List()..addAll(
(map['channels'] as List ?? []).map((o) => o.toString())
);
promotionInfoListBean.isVip = map['isVip'];
promotionInfoListBean.isDelete = map['isDelete'];
promotionInfoListBean.tenantCode = map['tenantCode'];
promotionInfoListBean.canPartake = map['canPartake'];
promotionInfoListBean.isMaxPromotion = map['isMaxPromotion'];
promotionInfoListBean.promotionProuctList = map['promotionProuctList'];
return promotionInfoListBean;
promotionInfoListBeans.isVip = map['isVip'];
promotionInfoListBeans.isDelete = map['isDelete'];
promotionInfoListBeans.tenantCode = map['tenantCode'];
promotionInfoListBeans.canPartake = map['canPartake'];
promotionInfoListBeans.isMaxPromotion = map['isMaxPromotion'];
promotionInfoListBeans.promotionProuctList = map['promotionProuctList'];
return promotionInfoListBeans;
}
Map toJson() => {
@ -437,7 +437,7 @@ class PromotionInfoListBean {
/// isMaxCoupon:true
/// productList : null
class CouponListBean {
class CouponListBeans {
String id;
String storeId;
int bizType;
@ -466,35 +466,35 @@ class CouponListBean {
bool isEx;
static CouponListBean fromJson(Map<String, dynamic> map) {
static CouponListBeans fromJson(Map<String, dynamic> map) {
if (map == null) return null;
CouponListBean couponListBean = CouponListBean();
couponListBean.id = map['id'];
couponListBean.storeId = map['storeId'];
couponListBean.bizType = map['bizType'];
couponListBean.fullAmount = map['fullAmount'];
couponListBean.discountAmount = map['discountAmount'];
couponListBean.fullNumber = map['fullNumber'];
couponListBean.discountPercent = map['discountPercent'];
couponListBean.bizId = map['bizId'];
couponListBean.publishStartTime = map['publishStartTime'];
couponListBean.publishEndTime = map['publishEndTime'];
couponListBean.useStartTime = map['useStartTime'];
couponListBean.useEndTime = map['useEndTime'];
couponListBean.promotionId = map['promotionId'];
couponListBean.mid = map['mid'];
couponListBean.couponId = map['couponId'];
couponListBean.receiveTime = map['receiveTime'];
couponListBean.useTime = map['useTime'];
couponListBean.status = map['status'];
couponListBean.tenantCode = map['tenantCode'];
couponListBean.type = map['type'];
couponListBean.promotionName = map['promotionName'];
couponListBean.usable = map['usable'];
couponListBean.allProduct = map['allProduct'];
couponListBean.isMaxCoupon = map['isMaxCoupon'];
couponListBean.productList = map['productList'];
return couponListBean;
CouponListBeans couponListBeans = CouponListBeans();
couponListBeans.id = map['id'];
couponListBeans.storeId = map['storeId'];
couponListBeans.bizType = map['bizType'];
couponListBeans.fullAmount = map['fullAmount'];
couponListBeans.discountAmount = map['discountAmount'];
couponListBeans.fullNumber = map['fullNumber'];
couponListBeans.discountPercent = map['discountPercent'];
couponListBeans.bizId = map['bizId'];
couponListBeans.publishStartTime = map['publishStartTime'];
couponListBeans.publishEndTime = map['publishEndTime'];
couponListBeans.useStartTime = map['useStartTime'];
couponListBeans.useEndTime = map['useEndTime'];
couponListBeans.promotionId = map['promotionId'];
couponListBeans.mid = map['mid'];
couponListBeans.couponId = map['couponId'];
couponListBeans.receiveTime = map['receiveTime'];
couponListBeans.useTime = map['useTime'];
couponListBeans.status = map['status'];
couponListBeans.tenantCode = map['tenantCode'];
couponListBeans.type = map['type'];
couponListBeans.promotionName = map['promotionName'];
couponListBeans.usable = map['usable'];
couponListBeans.allProduct = map['allProduct'];
couponListBeans.isMaxCoupon = map['isMaxCoupon'];
couponListBeans.productList = map['productList'];
return couponListBeans;
}
Map toJson() => {

9
lib/settlement/settlement.dart

@ -33,11 +33,10 @@ import 'package:huixiang/utils/font_weight.dart';
import 'package:huixiang/utils/min.dart';
import 'package:huixiang/view_widget/my_appbar.dart';
import 'package:huixiang/view_widget/round_button.dart';
import 'package:huixiang/view_widget/tips_dialog.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import '../retrofit/data/shoppingCart.dart';
import '../view_widget/settlement_tips_dialog.dart';
class Settlement extends StatefulWidget {
@ -85,6 +84,7 @@ class _Settlement extends State<Settlement> {
bool useVipPriceSelect = true;
bool showVipTips = false;
bool isRaiseChannel = false;
ShoppingCart shopCarGoods;
@override
void initState() {
@ -107,6 +107,8 @@ class _Settlement extends State<Settlement> {
productSkuId = widget.arguments["productSkuId"];
count1 = widget.arguments["buyNum"];
productId = widget.arguments["productId"];
shopCarGoods = widget.arguments["shoppingCart"];
if (tableId == 0) {
placeOrder = true;
}
@ -516,6 +518,9 @@ class _Settlement extends State<Settlement> {
placeOrderFirst.storeId = storeInfo.id;
placeOrderFirst.subcribeTime = null;
placeOrderFirst.tableId = "$tableId";
for(int i = 0;i<placeOrderFirst.shoppingCartSkuItemList.length;i++){
placeOrderFirst.shoppingCartSkuItemList[i].setMealDataList = shopCarGoods.shoppingCartSkuItemList[i].setMealDataList;
}
if (tableId == 0) {
///

2
lib/settlement/settlement_view/activity_coupon_remarks.dart

@ -76,7 +76,7 @@ class _ActivityCouponRemarks extends State<ActivityCouponRemarks> {
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
if(!(widget?.settleOrderInfo?.isRaise ?? false) && (widget?.settleOrderInfo?.memberVO?.isVip ?? false))
if( !(widget?.settleOrderInfo?.isRaise ?? false) && (widget?.settleOrderInfo?.memberVO?.isVip ?? false) && widget.placeOrder)
Row(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,

3
lib/union/location_map_page.dart

@ -76,7 +76,8 @@ class _LocationMap extends State<LocationMap> {
leadingColor: Colors.black,
),
body: Container(
child: BMFMapWidget(
//BMFMapWidget ,BMFTextureMapWidget不会强制遮盖其他控件
child: BMFTextureMapWidget(
mapOptions: BMFMapOptions(
center: BMFCoordinate(
double.tryParse(widget.arguments["lat"]),

1
lib/union/union_list.dart

@ -121,6 +121,7 @@ class _UnionList extends State<UnionList> {
child: TextField(
textInputAction: TextInputAction.search,
onEditingComplete: () {
FocusScope.of(context).requestFocus(FocusNode());
widget.queryStore(editingController.text);
},
controller: editingController,

62
lib/utils/location.dart

@ -2,11 +2,15 @@ import 'dart:io';
import 'package:android_intent_plus/android_intent.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bmflocation/flutter_bmflocation.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:huixiang/generated/l10n.dart';
import 'package:huixiang/view_widget/request_permission.dart';
import 'package:permission_handler/permission_handler.dart';
import 'font_weight.dart';
BaiduLocationAndroidOption initAndroidOptions() {
BaiduLocationAndroidOption options = BaiduLocationAndroidOption(
@ -99,14 +103,18 @@ class Location {
}
return true;
} else if (await Permission.location.isUndetermined) {
showAlertDialog(context);
await Permission.location.request();
Navigator.of(context).pop();
return false;
} else {
if (Platform.isIOS) {
//
requestDialog(context, locationCallback);
} else {
showAlertDialog(context);
await Permission.location.request();
Navigator.of(context).pop();
}
return false;
}
@ -162,4 +170,58 @@ class Location {
},
);
}
///
showAlertDialog(context) {
//
showDialog(
context: context,
builder: (BuildContext context) {
return SimpleDialog(
titlePadding: EdgeInsets.all(10),
backgroundColor: Colors.transparent,
elevation: 0,
alignment: Alignment.topCenter,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(6),
),
children: <Widget>[
Container(
width: double.infinity,
height: 120.h,
padding: EdgeInsets.all(16),
decoration: new BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(8),
),
child:Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"访问精确地理位置信息权限说明",
style: TextStyle(
fontSize: 15.sp,
fontWeight:MyFontWeight.regular,
color: Colors.black,
),
),
SizedBox(height: 3.h,),
Text(
"为了向您推荐附近的门店信息,推荐您在使用期间让我们使用位置信息,不授权该权限不影响app正常使用。",
style: TextStyle(
fontSize: 13.sp,
height: 1.3.h,
fontWeight:MyFontWeight.regular,
color: Colors.black,
),
),
],
),
),
],
);
},
);
}
}

5
lib/view_widget/new_coupon_widget.dart

@ -43,7 +43,7 @@ class NewCouponWidget extends StatelessWidget {
// }
return Container(
height: (coupon != null && coupon.isEx) ? 155.h : 135.h,
height: (coupon != null && coupon.isEx) ? 160.h : 140.h,
width: double.infinity,
margin: EdgeInsets.fromLTRB(14.w, 6.h, 14.w, 6.h),
padding: EdgeInsets.only(right: 5),
@ -83,11 +83,12 @@ class NewCouponWidget extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"券名称:${coupon != null ? coupon.couponName ?? "" : ""}",
"${coupon != null ? coupon.couponName ?? "" : ""}",
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(
fontSize: 15.sp,
height: 1.2.h,
fontWeight: MyFontWeight.semi_bold,
color: Color(0xFF0D0D0D),
),

2
pubspec.yaml

@ -3,7 +3,7 @@ description: 一心回乡.
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
version: 3.2.4+45
version: 3.2.4+48
environment:
sdk: ">=2.7.0 <3.0.0"

Loading…
Cancel
Save