Browse Source

Merge branch 'master' into dev

# Conflicts:
#	lib/store/store_order.dart
master
w-R 3 years ago
parent
commit
754b8bf9c3
  1. 2
      lib/main.dart
  2. 6
      lib/retrofit/data/findMiNiGroupList.dart
  3. 8
      lib/retrofit/min_api.dart
  4. 8
      lib/retrofit/retrofit_api.dart
  5. 136
      lib/store/store_order.dart
  6. 15
      lib/store/store_view/store_order_list.dart
  7. 81
      lib/test_page.dart
  8. 1
      lib/union/union_page.dart
  9. 12
      pubspec.lock
  10. 4
      pubspec.yaml

2
lib/main.dart

@ -55,6 +55,7 @@ import 'package:huixiang/setting/treaty_page.dart';
// import 'package:huixiang/store/settlement.dart'; // import 'package:huixiang/store/settlement.dart';
import 'package:huixiang/store/store_order.dart'; import 'package:huixiang/store/store_order.dart';
import 'package:huixiang/store/store_view/settlement.dart'; import 'package:huixiang/store/store_view/settlement.dart';
import 'package:huixiang/test_page.dart';
import 'package:huixiang/union/location_map_page.dart'; import 'package:huixiang/union/location_map_page.dart';
import 'package:huixiang/web/web_page.dart'; import 'package:huixiang/web/web_page.dart';
@ -264,5 +265,6 @@ Map<String, WidgetBuilder> routers = <String, WidgetBuilder>{
'/router/about_page': (context, {arguments}) => AboutPage(), '/router/about_page': (context, {arguments}) => AboutPage(),
'/router/qr_share': (context, {arguments}) => QrSharePage(), '/router/qr_share': (context, {arguments}) => QrSharePage(),
'/router/main_page': (context, {arguments}) => MainPage(), '/router/main_page': (context, {arguments}) => MainPage(),
'/router/test_page': (context, {arguments}) => TestPage(),
// '/router/ui_test': (context, {arguments}) => UITest(), // '/router/ui_test': (context, {arguments}) => UITest(),
}; };

6
lib/retrofit/data/findMiNiGroupList.dart

@ -15,7 +15,7 @@ class FindMiNiGroupList {
List<ProductListBean> productList; List<ProductListBean> productList;
dynamic productPageVO; dynamic productPageVO;
static FindMiNiGroupList fromMap(Map<String, dynamic> map) { static FindMiNiGroupList fromJson(Map<String, dynamic> map) {
if (map == null) return null; if (map == null) return null;
FindMiNiGroupList findMiNiGroupListBean = FindMiNiGroupList(); FindMiNiGroupList findMiNiGroupListBean = FindMiNiGroupList();
findMiNiGroupListBean.id = map['id']; findMiNiGroupListBean.id = map['id'];
@ -24,7 +24,7 @@ class FindMiNiGroupList {
findMiNiGroupListBean.groupImg = map['groupImg']; findMiNiGroupListBean.groupImg = map['groupImg'];
findMiNiGroupListBean.sort = map['sort']; findMiNiGroupListBean.sort = map['sort'];
findMiNiGroupListBean.productList = List()..addAll( findMiNiGroupListBean.productList = List()..addAll(
(map['productList'] as List ?? []).map((o) => ProductListBean.fromMap(o)) (map['productList'] as List ?? []).map((o) => ProductListBean.fromJson(o))
); );
findMiNiGroupListBean.productPageVO = map['productPageVO']; findMiNiGroupListBean.productPageVO = map['productPageVO'];
return findMiNiGroupListBean; return findMiNiGroupListBean;
@ -100,7 +100,7 @@ class ProductListBean {
String printerFlag; String printerFlag;
dynamic markProductNone; dynamic markProductNone;
static ProductListBean fromMap(Map<String, dynamic> map) { static ProductListBean fromJson(Map<String, dynamic> map) {
if (map == null) return null; if (map == null) return null;
ProductListBean productListBean = ProductListBean(); ProductListBean productListBean = ProductListBean();
productListBean.id = map['id']; productListBean.id = map['id'];

8
lib/retrofit/min_api.dart

@ -31,17 +31,21 @@ abstract class MinApiService {
String baseUrl, String baseUrl,
BuildContext context, BuildContext context,
String token, String token,
String tenant,
bool showLoading = true, bool showLoading = true,
bool pay = false, bool pay = false,
}) { }) {
Map<String, dynamic> headers = Map<String, dynamic> headers =
(token == null || token == "") ? {} : {'token': "Bearer $token"}; (token == null || token == "") ? {} : {'token': "Bearer $token"};
if (tenant != null && tenant != "") {
headers["tenant"] = tenant;
}
if (pay) { if (pay) {
headers["Environment"] = "app"; headers["Environment"] = "app";
} }
dio.options = BaseOptions( dio.options = BaseOptions(
connectTimeout: 60000, connectTimeout: 10000,
receiveTimeout: 60000, receiveTimeout: 10000,
headers: headers, headers: headers,
responseType: ResponseType.json, responseType: ResponseType.json,
); );

8
lib/retrofit/retrofit_api.dart

@ -37,11 +37,11 @@ import 'data/wx_pay.dart';
part 'retrofit_api.g.dart'; part 'retrofit_api.g.dart';
const base_url = "https://pos.platform.lotus-wallet.com/app/"; /// // const base_url = "https://pos.platform.lotus-wallet.com/app/"; ///
const baseUrl = "https://pos.platform.lotus-wallet.com/app/"; /// // const baseUrl = "https://pos.platform.lotus-wallet.com/app/"; ///
// const base_url = "http://192.168.10.236:8766/app/"; /// const base_url = "http://192.168.10.236:8766/app/"; ///
// const baseUrl = "http://192.168.10.236:8766/app/"; /// const baseUrl = "http://192.168.10.236:8766/app/"; ///
// const base_url = "http://192.168.10.37:8766/app/"; // const base_url = "http://192.168.10.37:8766/app/";
// const baseUrl = "http://192.168.10.37:8766/app/"; // const baseUrl = "http://192.168.10.37:8766/app/";

136
lib/store/store_order.dart

@ -8,6 +8,7 @@ import 'package:huixiang/retrofit/data/activity.dart';
import 'package:huixiang/retrofit/data/base_data.dart'; import 'package:huixiang/retrofit/data/base_data.dart';
import 'package:huixiang/retrofit/data/order_info.dart'; import 'package:huixiang/retrofit/data/order_info.dart';
import 'package:huixiang/retrofit/data/store_info.dart'; import 'package:huixiang/retrofit/data/store_info.dart';
import 'package:huixiang/retrofit/data/user_entity.dart';
import 'package:huixiang/retrofit/min_api.dart'; import 'package:huixiang/retrofit/min_api.dart';
import 'package:huixiang/retrofit/retrofit_api.dart'; import 'package:huixiang/retrofit/retrofit_api.dart';
import 'package:huixiang/store/store_view/store_activity.dart'; import 'package:huixiang/store/store_view/store_activity.dart';
@ -47,6 +48,8 @@ class _StoreOrderPage extends State<StoreOrderPage>
RefreshController refreshController; RefreshController refreshController;
List<Widget> _widgetOptions; List<Widget> _widgetOptions;
ScrollController controller = ScrollController();
@override @override
void initState() { void initState() {
super.initState(); super.initState();
@ -97,8 +100,6 @@ class _StoreOrderPage extends State<StoreOrderPage>
} }
} }
ScrollController controller = ScrollController();
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Stack( return Stack(
@ -129,14 +130,6 @@ class _StoreOrderPage extends State<StoreOrderPage>
SliverOverlapAbsorber( SliverOverlapAbsorber(
handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context), handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context),
sliver: SliverAppBar( sliver: SliverAppBar(
title: Text(
"",
style: TextStyle(
color: Colors.black,
fontWeight: FontWeight.bold,
fontSize: 18.sp,
),
),
expandedHeight: (storeInfo != null && expandedHeight: (storeInfo != null &&
storeInfo.couponVOList != null) storeInfo.couponVOList != null)
? 425.h ? 425.h
@ -145,10 +138,6 @@ class _StoreOrderPage extends State<StoreOrderPage>
snap: false, snap: false,
pinned: true, pinned: true,
stretch: false, stretch: false,
onStretchTrigger: () {
return Future.sync((){});
},
stretchTriggerOffset: 100,
leading: GestureDetector( leading: GestureDetector(
onTap: () { onTap: () {
Navigator.of(context).pop(); Navigator.of(context).pop();
@ -159,23 +148,16 @@ class _StoreOrderPage extends State<StoreOrderPage>
padding: EdgeInsets.all(6), padding: EdgeInsets.all(6),
child: Icon( child: Icon(
Icons.arrow_back_ios, Icons.arrow_back_ios,
color: Colors.white, color: Colors.black,
size: 24, size: 24,
), ),
), ),
), ),
flexibleSpace: FlexibleSpaceBar( flexibleSpace: FlexibleSpaceBar(
// title: Container( title: Title(
// margin: EdgeInsets.only(bottom: 40), controller,
// child: Text( storeInfo != null ? storeInfo.storeName : '',
// 'Expanded Title', ),
// style: TextStyle(
// color: Colors.black,
// fontWeight: FontWeight.bold,
// fontSize: 18.sp,
// ),
// ),
// ),
collapseMode: CollapseMode.pin, collapseMode: CollapseMode.pin,
stretchModes: [ stretchModes: [
StretchMode.zoomBackground, StretchMode.zoomBackground,
@ -239,13 +221,13 @@ class _StoreOrderPage extends State<StoreOrderPage>
], ],
), ),
), ),
backgroundColor: Color(0xFFFAFAFA), backgroundColor: Color(0x33FAFAFA),
centerTitle: false, centerTitle: false,
elevation: 0, elevation: 0,
bottom: PreferredSize( bottom: PreferredSize(
preferredSize: Size( preferredSize: Size(
MediaQuery.of(context).size.width, MediaQuery.of(context).size.width,
38.h, 38,
), ),
child: Container( child: Container(
padding: EdgeInsets.symmetric(horizontal: 10.w), padding: EdgeInsets.symmetric(horizontal: 10.w),
@ -311,7 +293,7 @@ class _StoreOrderPage extends State<StoreOrderPage>
), ),
), ),
Text( Text(
"0.00", "19.00",
style: TextStyle( style: TextStyle(
fontSize: 20.sp, fontSize: 20.sp,
fontWeight: MyFontWeight.medium, fontWeight: MyFontWeight.medium,
@ -480,7 +462,7 @@ class _StoreOrderPage extends State<StoreOrderPage>
), ),
), ),
Text( Text(
"0.00", "19.00",
style: TextStyle( style: TextStyle(
fontSize: 20.sp, fontSize: 20.sp,
fontWeight: MyFontWeight.medium, fontWeight: MyFontWeight.medium,
@ -517,13 +499,6 @@ class _StoreOrderPage extends State<StoreOrderPage>
Positioned( Positioned(
right: 15, right: 15,
top: 14, top: 14,
child: GestureDetector(
onTap: (){
Navigator.of(context).pushNamed(
'/router/settlement',
arguments: {},
);
},
child: RoundButton( child: RoundButton(
width: 17, width: 17,
height: 17, height: 17,
@ -533,7 +508,10 @@ class _StoreOrderPage extends State<StoreOrderPage>
backgroup: Color(0xFF32A060), backgroup: Color(0xFF32A060),
fontSize: 12.sp, fontSize: 12.sp,
radius: 100, radius: 100,
), callback: () {
Navigator.of(context)
.pushNamed('/router/test_page');
},
), ),
), ),
], ],
@ -548,19 +526,16 @@ class _StoreOrderPage extends State<StoreOrderPage>
); );
} }
/// Widget shoppGoodsItem(ProductList pro, position) {
Widget shoppGoodsItem(ProductList productList,position) {
return Container( return Container(
padding: EdgeInsets.only(bottom: 10), padding: EdgeInsets.only(bottom: 10),
child: Row( child: Row(
children: [ children: [
MImage( Image.asset(
productList != null ? productList.skuImg : "", "assets/image/default_1.png",
width: 60, width: 60,
height: 60, height: 60,
fit: BoxFit.cover, fit: BoxFit.cover,
errorSrc: "assets/image/default_1.png",
fadeSrc: "assets/image/default_1.png",
), ),
SizedBox(width: 10), SizedBox(width: 10),
Expanded( Expanded(
@ -568,7 +543,7 @@ class _StoreOrderPage extends State<StoreOrderPage>
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( Text(
productList.productName, "手工啵啵奶茶",
style: TextStyle( style: TextStyle(
color: Colors.black, color: Colors.black,
fontSize: 12.sp, fontSize: 12.sp,
@ -579,7 +554,7 @@ class _StoreOrderPage extends State<StoreOrderPage>
Row( Row(
children: [ children: [
Text( Text(
productList.skuNameStr, "无香精",
style: TextStyle( style: TextStyle(
color: Color(0xFF4C4C4C), color: Color(0xFF4C4C4C),
fontSize: 11.sp, fontSize: 11.sp,
@ -587,6 +562,14 @@ class _StoreOrderPage extends State<StoreOrderPage>
), ),
), ),
SizedBox(width: 10), SizedBox(width: 10),
Text(
"无香精",
style: TextStyle(
color: Color(0xFF4C4C4C),
fontSize: 11.sp,
fontWeight: MyFontWeight.regular,
),
)
], ],
), ),
SizedBox(height: 6), SizedBox(height: 6),
@ -598,7 +581,7 @@ class _StoreOrderPage extends State<StoreOrderPage>
Row( Row(
children: [ children: [
Text( Text(
S.of(context).huiyuanjia, "会员价",
style: TextStyle( style: TextStyle(
color: Color(0xFFFF7A1A), color: Color(0xFFFF7A1A),
fontSize: 13.sp, fontSize: 13.sp,
@ -606,7 +589,7 @@ class _StoreOrderPage extends State<StoreOrderPage>
), ),
), ),
Text( Text(
productList.sellPrice, "¥19.00",
style: TextStyle( style: TextStyle(
color: Color(0xFFFF7A1A), color: Color(0xFFFF7A1A),
fontSize: 14.sp, fontSize: 14.sp,
@ -629,7 +612,7 @@ class _StoreOrderPage extends State<StoreOrderPage>
Padding( Padding(
padding: EdgeInsets.only(left: 8, right: 8), padding: EdgeInsets.only(left: 8, right: 8),
child: Text( child: Text(
productList.buyNum.toString(), "1",
style: TextStyle( style: TextStyle(
color: Colors.black, color: Colors.black,
fontSize: 14.sp, fontSize: 14.sp,
@ -659,3 +642,58 @@ class _StoreOrderPage extends State<StoreOrderPage>
// @override // @override
// bool get wantKeepAlive => true; // bool get wantKeepAlive => true;
} }
class Title extends StatefulWidget {
final ScrollController controller;
final String title;
Title(this.controller, this.title);
@override
State<StatefulWidget> createState() {
return _Title();
}
}
class _Title extends State<Title> {
double alpha = 0;
@override
void initState() {
super.initState();
widget.controller.addListener(() {
double maxScrollExtent = widget.controller.position.maxScrollExtent;
double alphaHeight = (kToolbarHeight) / 2;
double alphaProgress = maxScrollExtent - widget.controller.offset;
double alphatemp = 0;
if (alphaProgress <= 1) {
alphatemp = 1;
} else if (alphaProgress <= alphaHeight) {
alphatemp = (((alphaHeight - alphaProgress) / alphaHeight) > 0.5) ? 1 : 0;
} else {
alphatemp = 0;
}
if (alpha != alphatemp && mounted) {
alpha = alphatemp;
print("object: $alpha");
setState(() {});
}
});
}
@override
Widget build(BuildContext context) {
return Container(
margin: EdgeInsets.only(bottom: 38),
child: Text(
widget.title ?? "",
style: TextStyle(
color: Colors.black.withOpacity(alpha),
fontWeight: FontWeight.bold,
fontSize: 18.sp,
),
),
);
}
}

15
lib/store/store_view/store_order_list.dart

@ -79,15 +79,18 @@ class _StoreOrderListPage extends State<StoreOrderListPage> {
apiService.minLogin(widget.arguments["id"]) apiService.minLogin(widget.arguments["id"])
.catchError((onError){}).then((baseData) { .catchError((onError){}).then((baseData) {
if (baseData != null && baseData.isSuccess) { if (baseData != null && baseData.isSuccess) {
UserEntity userEntity = UserEntity.fromJson(baseData.data); Map<String, dynamic> minStoreInfo = baseData.data;
String minToken = userEntity.token; String minToken = minStoreInfo["token"];
String tenant = widget.arguments["tenant"];
SharedPreferences.getInstance().then((value) => { SharedPreferences.getInstance().then((value) => {
value.setString('minToken', minToken), value.setString('minToken', minToken),
value.setString('tenant', tenant),
}); });
minService = MinApiService( minService = MinApiService(
Dio(), Dio(),
context: context, context: context,
token: minToken, token: minToken,
tenant: tenant,
); );
appletGoods(); appletGoods();
} }
@ -115,17 +118,18 @@ class _StoreOrderListPage extends State<StoreOrderListPage> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Container( return Container(
width: MediaQuery.of(context).size.width, width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height, height: MediaQuery.of(context).size.height - (kToolbarHeight + 38 + 54.h),
margin: EdgeInsets.only(top: (MediaQuery.of(context).padding.top + 38 + kToolbarHeight)),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
mainAxisSize: MainAxisSize.max, mainAxisSize: MainAxisSize.max,
children: [ children: [
Container( Container(
width: 100.w, width: 100.w,
height: MediaQuery.of(context).size.height,
child: ListView.builder( child: ListView.builder(
itemCount: appletProducts == null ? 0 : appletProducts.length, itemCount: appletProducts == null ? 0 : appletProducts.length,
controller: widget.controller, controller: controller1,
padding: EdgeInsets.zero,
itemBuilder: (context, position) { itemBuilder: (context, position) {
return orderItem(appletProducts[position],position); return orderItem(appletProducts[position],position);
}, },
@ -136,6 +140,7 @@ class _StoreOrderListPage extends State<StoreOrderListPage> {
child: ListView.builder( child: ListView.builder(
itemCount: productListBeans == null ? 0 : productListBeans.length, itemCount: productListBeans == null ? 0 : productListBeans.length,
// controller: widget.controller, // controller: widget.controller,
padding: EdgeInsets.zero,
itemBuilder: (context, position) { itemBuilder: (context, position) {
return goodsItem(productListBeans[position], position); return goodsItem(productListBeans[position], position);
}, },

81
lib/test_page.dart

@ -0,0 +1,81 @@
import 'package:flutter/material.dart';
class TestPage extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return _TestPage();
}
}
class _TestPage extends State<TestPage> {
// ZefyrController controller = ZefyrController(NotusDocument.fromDelta(null));
// FocusNode focusNode = FocusNode();
@override
Widget build(BuildContext context) {
//
// final theme = ZefyrThemeData(
// toolbarTheme: ToolbarTheme.fallback(context),
// );
return Scaffold(
// resizeToAvoidBottomInset: true,
// appBar: AppBar(
// elevation: 1.0,
// backgroundColor: Colors.grey.shade200,
// brightness: Brightness.light,
// title: Text("data"),
// ),
// body: ZefyrScaffold(
// child: ZefyrTheme(
// data: theme,
// child: ZefyrEditor(
// controller: controller,
// focusNode: focusNode,
// imageDelegate: CustomImageDelegate(),
// ),
// ),
// ),
);
}
}
// class CustomImageDelegate implements ZefyrImageDelegate<String> {
// String url = "";
//
// @override
// Future<String> pickImage(String source) async {
// // final file = await ImagePicker.pickImage(source: source);
// // if (file == null) return null;
// // // Use my storage service to upload selected file. The uploadImage method
// // // returns unique ID of newly uploaded image on my server.
// //
// // //
// // var request = await requestfile("url",file, null);
// // print(request);
// // if(request["code"] == "200") {
// // print("图片上传成功");
// // } else {
// // print("图片上传失败");
// // }
// // url = "$SERVER_URL/static/articlePictre/${request["data"]}";
// return url;
// }
//
// @override
// Widget buildImage(BuildContext context, String imageSource) {
// // We use custom "asset" scheme to distinguish asset images from other files.
// print("imageSource is $imageSource");
// // return url delta 使url imageSource
// return Image.network(imageSource);
// }
//
// @override
// String get cameraSource => url;
//
// @override
// String get gallerySource => url;
//
// }

1
lib/union/union_page.dart

@ -279,6 +279,7 @@ class _UnionPage extends State<UnionPage>
'/router/store_order', '/router/store_order',
arguments: { arguments: {
"id": storeList[position].id, "id": storeList[position].id,
"tenant": storeList[position].tenantCode,
"storeName": storeList[position].storeName "storeName": storeList[position].storeName
}, },
); );

12
pubspec.lock

@ -986,42 +986,42 @@ packages:
name: url_launcher name: url_launcher
url: "https://pub.flutter-io.cn" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "6.0.5" version: "5.7.10"
url_launcher_linux: url_launcher_linux:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_linux name: url_launcher_linux
url: "https://pub.flutter-io.cn" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.2" version: "0.0.1+4"
url_launcher_macos: url_launcher_macos:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_macos name: url_launcher_macos
url: "https://pub.flutter-io.cn" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.2" version: "0.0.1+9"
url_launcher_platform_interface: url_launcher_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_platform_interface name: url_launcher_platform_interface
url: "https://pub.flutter-io.cn" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.1" version: "1.0.9"
url_launcher_web: url_launcher_web:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_web name: url_launcher_web
url: "https://pub.flutter-io.cn" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.4" version: "0.1.5+3"
url_launcher_windows: url_launcher_windows:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_windows name: url_launcher_windows
url: "https://pub.flutter-io.cn" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.2" version: "0.0.1+3"
uuid: uuid:
dependency: transitive dependency: transitive
description: description:

4
pubspec.yaml

@ -56,7 +56,7 @@ dependencies:
barcode_widget: ^2.0.1 barcode_widget: ^2.0.1
flutter_qr_reader: ^1.0.5 flutter_qr_reader: ^1.0.5
qr_flutter: ^4.0.0 qr_flutter: ^4.0.0
url_launcher: ^6.0.5 url_launcher: ^5.0.0
image_cropper: ^1.4.1 image_cropper: ^1.4.1
image_picker_gallery_camera: ^0.1.6 image_picker_gallery_camera: ^0.1.6
@ -87,6 +87,8 @@ dependencies:
# flutter_bugly: ^0.3.3 # flutter_bugly: ^0.3.3
# bitmap: ^0.1.2 # bitmap: ^0.1.2
# zefyr: ^0.12.0
dev_dependencies: dev_dependencies:
flutter_test: flutter_test:
sdk: flutter sdk: flutter

Loading…
Cancel
Save