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/store_order.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/web/web_page.dart';
@ -264,5 +265,6 @@ Map<String, WidgetBuilder> routers = <String, WidgetBuilder>{
'/router/about_page': (context, {arguments}) => AboutPage(),
'/router/qr_share': (context, {arguments}) => QrSharePage(),
'/router/main_page': (context, {arguments}) => MainPage(),
'/router/test_page': (context, {arguments}) => TestPage(),
// '/router/ui_test': (context, {arguments}) => UITest(),
};

6
lib/retrofit/data/findMiNiGroupList.dart

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

8
lib/retrofit/min_api.dart

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

8
lib/retrofit/retrofit_api.dart

@ -37,11 +37,11 @@ import 'data/wx_pay.dart';
part 'retrofit_api.g.dart';
const base_url = "https://pos.platform.lotus-wallet.com/app/"; ///
const baseUrl = "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 base_url = "http://192.168.10.236:8766/app/"; ///
// const baseUrl = "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 base_url = "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/order_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/retrofit_api.dart';
import 'package:huixiang/store/store_view/store_activity.dart';
@ -47,6 +48,8 @@ class _StoreOrderPage extends State<StoreOrderPage>
RefreshController refreshController;
List<Widget> _widgetOptions;
ScrollController controller = ScrollController();
@override
void initState() {
super.initState();
@ -97,8 +100,6 @@ class _StoreOrderPage extends State<StoreOrderPage>
}
}
ScrollController controller = ScrollController();
@override
Widget build(BuildContext context) {
return Stack(
@ -129,14 +130,6 @@ class _StoreOrderPage extends State<StoreOrderPage>
SliverOverlapAbsorber(
handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context),
sliver: SliverAppBar(
title: Text(
"",
style: TextStyle(
color: Colors.black,
fontWeight: FontWeight.bold,
fontSize: 18.sp,
),
),
expandedHeight: (storeInfo != null &&
storeInfo.couponVOList != null)
? 425.h
@ -145,10 +138,6 @@ class _StoreOrderPage extends State<StoreOrderPage>
snap: false,
pinned: true,
stretch: false,
onStretchTrigger: () {
return Future.sync((){});
},
stretchTriggerOffset: 100,
leading: GestureDetector(
onTap: () {
Navigator.of(context).pop();
@ -159,23 +148,16 @@ class _StoreOrderPage extends State<StoreOrderPage>
padding: EdgeInsets.all(6),
child: Icon(
Icons.arrow_back_ios,
color: Colors.white,
color: Colors.black,
size: 24,
),
),
),
flexibleSpace: FlexibleSpaceBar(
// title: Container(
// margin: EdgeInsets.only(bottom: 40),
// child: Text(
// 'Expanded Title',
// style: TextStyle(
// color: Colors.black,
// fontWeight: FontWeight.bold,
// fontSize: 18.sp,
// ),
// ),
// ),
title: Title(
controller,
storeInfo != null ? storeInfo.storeName : '',
),
collapseMode: CollapseMode.pin,
stretchModes: [
StretchMode.zoomBackground,
@ -239,13 +221,13 @@ class _StoreOrderPage extends State<StoreOrderPage>
],
),
),
backgroundColor: Color(0xFFFAFAFA),
backgroundColor: Color(0x33FAFAFA),
centerTitle: false,
elevation: 0,
bottom: PreferredSize(
preferredSize: Size(
MediaQuery.of(context).size.width,
38.h,
38,
),
child: Container(
padding: EdgeInsets.symmetric(horizontal: 10.w),
@ -311,7 +293,7 @@ class _StoreOrderPage extends State<StoreOrderPage>
),
),
Text(
"0.00",
"19.00",
style: TextStyle(
fontSize: 20.sp,
fontWeight: MyFontWeight.medium,
@ -480,7 +462,7 @@ class _StoreOrderPage extends State<StoreOrderPage>
),
),
Text(
"0.00",
"19.00",
style: TextStyle(
fontSize: 20.sp,
fontWeight: MyFontWeight.medium,
@ -517,13 +499,6 @@ class _StoreOrderPage extends State<StoreOrderPage>
Positioned(
right: 15,
top: 14,
child: GestureDetector(
onTap: (){
Navigator.of(context).pushNamed(
'/router/settlement',
arguments: {},
);
},
child: RoundButton(
width: 17,
height: 17,
@ -533,7 +508,10 @@ class _StoreOrderPage extends State<StoreOrderPage>
backgroup: Color(0xFF32A060),
fontSize: 12.sp,
radius: 100,
),
callback: () {
Navigator.of(context)
.pushNamed('/router/test_page');
},
),
),
],
@ -548,19 +526,16 @@ class _StoreOrderPage extends State<StoreOrderPage>
);
}
///
Widget shoppGoodsItem(ProductList productList,position) {
Widget shoppGoodsItem(ProductList pro, position) {
return Container(
padding: EdgeInsets.only(bottom: 10),
child: Row(
children: [
MImage(
productList != null ? productList.skuImg : "",
Image.asset(
"assets/image/default_1.png",
width: 60,
height: 60,
fit: BoxFit.cover,
errorSrc: "assets/image/default_1.png",
fadeSrc: "assets/image/default_1.png",
),
SizedBox(width: 10),
Expanded(
@ -568,7 +543,7 @@ class _StoreOrderPage extends State<StoreOrderPage>
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
productList.productName,
"手工啵啵奶茶",
style: TextStyle(
color: Colors.black,
fontSize: 12.sp,
@ -579,7 +554,7 @@ class _StoreOrderPage extends State<StoreOrderPage>
Row(
children: [
Text(
productList.skuNameStr,
"无香精",
style: TextStyle(
color: Color(0xFF4C4C4C),
fontSize: 11.sp,
@ -587,6 +562,14 @@ class _StoreOrderPage extends State<StoreOrderPage>
),
),
SizedBox(width: 10),
Text(
"无香精",
style: TextStyle(
color: Color(0xFF4C4C4C),
fontSize: 11.sp,
fontWeight: MyFontWeight.regular,
),
)
],
),
SizedBox(height: 6),
@ -598,7 +581,7 @@ class _StoreOrderPage extends State<StoreOrderPage>
Row(
children: [
Text(
S.of(context).huiyuanjia,
"会员价",
style: TextStyle(
color: Color(0xFFFF7A1A),
fontSize: 13.sp,
@ -606,7 +589,7 @@ class _StoreOrderPage extends State<StoreOrderPage>
),
),
Text(
productList.sellPrice,
"¥19.00",
style: TextStyle(
color: Color(0xFFFF7A1A),
fontSize: 14.sp,
@ -629,7 +612,7 @@ class _StoreOrderPage extends State<StoreOrderPage>
Padding(
padding: EdgeInsets.only(left: 8, right: 8),
child: Text(
productList.buyNum.toString(),
"1",
style: TextStyle(
color: Colors.black,
fontSize: 14.sp,
@ -659,3 +642,58 @@ class _StoreOrderPage extends State<StoreOrderPage>
// @override
// 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"])
.catchError((onError){}).then((baseData) {
if (baseData != null && baseData.isSuccess) {
UserEntity userEntity = UserEntity.fromJson(baseData.data);
String minToken = userEntity.token;
Map<String, dynamic> minStoreInfo = baseData.data;
String minToken = minStoreInfo["token"];
String tenant = widget.arguments["tenant"];
SharedPreferences.getInstance().then((value) => {
value.setString('minToken', minToken),
value.setString('tenant', tenant),
});
minService = MinApiService(
Dio(),
context: context,
token: minToken,
tenant: tenant,
);
appletGoods();
}
@ -115,17 +118,18 @@ class _StoreOrderListPage extends State<StoreOrderListPage> {
Widget build(BuildContext context) {
return Container(
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(
mainAxisAlignment: MainAxisAlignment.start,
mainAxisSize: MainAxisSize.max,
children: [
Container(
width: 100.w,
height: MediaQuery.of(context).size.height,
child: ListView.builder(
itemCount: appletProducts == null ? 0 : appletProducts.length,
controller: widget.controller,
controller: controller1,
padding: EdgeInsets.zero,
itemBuilder: (context, position) {
return orderItem(appletProducts[position],position);
},
@ -136,6 +140,7 @@ class _StoreOrderListPage extends State<StoreOrderListPage> {
child: ListView.builder(
itemCount: productListBeans == null ? 0 : productListBeans.length,
// controller: widget.controller,
padding: EdgeInsets.zero,
itemBuilder: (context, 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',
arguments: {
"id": storeList[position].id,
"tenant": storeList[position].tenantCode,
"storeName": storeList[position].storeName
},
);

12
pubspec.lock

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

4
pubspec.yaml

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

Loading…
Cancel
Save