diff --git a/lib/home/home_page.dart b/lib/home/home_page.dart index 13aae57c..1a80baea 100644 --- a/lib/home/home_page.dart +++ b/lib/home/home_page.dart @@ -487,13 +487,13 @@ class HomePageState extends State with AutomaticKeepAliveClientMixin { HomeBanner(bannerData, controller), ///吃喝玩 - UnionEntry(() { - widget.changeTab(1); + UnionEntry((int jpIndex) { + widget.changeTab(1,jpIndex); }), ///快捷操作 - ShortcutOperation(() { - widget.changeTab(1); + ShortcutOperation((int jpIndex) { + widget.changeTab(1,jpIndex); }), ///推广图 diff --git a/lib/home/home_view/shortcut_operation.dart b/lib/home/home_view/shortcut_operation.dart index 0b802f2d..b732da36 100644 --- a/lib/home/home_view/shortcut_operation.dart +++ b/lib/home/home_view/shortcut_operation.dart @@ -37,7 +37,7 @@ class _ShortcutOperation extends State { children: [ Expanded(child:GestureDetector( onTap: (){ - widget.goToOrder(); + widget.goToOrder(0); }, child: Container( width: double.infinity, diff --git a/lib/home/home_view/union_entry.dart b/lib/home/home_view/union_entry.dart index 7a907f50..bef6bd39 100644 --- a/lib/home/home_view/union_entry.dart +++ b/lib/home/home_view/union_entry.dart @@ -37,7 +37,7 @@ class _UnionEntry extends State { children: [ Expanded(child:GestureDetector( onTap: (){ - widget.goToOrder(); + widget.goToOrder(1); }, child: Container( width: double.infinity, @@ -80,7 +80,7 @@ class _UnionEntry extends State { ) ), Expanded(child:GestureDetector( onTap: (){ - widget.goToOrder(); + widget.goToOrder(2); }, child: Container( width: double.infinity, @@ -123,7 +123,7 @@ class _UnionEntry extends State { ) ), Expanded(child: GestureDetector( onTap: (){ - widget.goToOrder(); + widget.goToOrder(3); }, child: Container( width: double.infinity, diff --git a/lib/main_page.dart b/lib/main_page.dart index 605abdce..5b4f313e 100644 --- a/lib/main_page.dart +++ b/lib/main_page.dart @@ -51,6 +51,7 @@ class _MainPage extends State with WidgetsBindingObserver { List icons; final GlobalKey homePageKey = GlobalKey(); final GlobalKey minePageKey = GlobalKey(); + final GlobalKey unionPageKey = GlobalKey(); // List iconn; ApiService apiService; @@ -113,13 +114,19 @@ class _MainPage extends State with WidgetsBindingObserver { _widgetOptions = [ // BrandPage(), - HomePage(homePageKey,(index) { + HomePage(homePageKey,(index,jpIndex) { + if(index == 1){ + if(unionPageKey?.currentState != null) { + UnionPageState state = unionPageKey.currentState; + state.jumpIndex(jpIndex); + }else _widgetOptions[1] = UnionPage(unionPageKey,jpIndex); + } setState(() { pageController.jumpToPage(index); }); },invite:invite,interviewCouponList:interviewCouponList,firstLoginCouponList:firstLoginCouponList,), // MainHomePage(), - UnionPage(), + UnionPage(unionPageKey,0), // (Theme.of(context).platform == TargetPlatform.android) ? OrderPage() :CommunityPage(), CommunityPage(), MinePage(minePageKey), diff --git a/lib/order/order_history_page.dart b/lib/order/order_history_page.dart index 39bd79be..85fc6405 100644 --- a/lib/order/order_history_page.dart +++ b/lib/order/order_history_page.dart @@ -570,9 +570,9 @@ class _OrderHistoryList extends State payChannel, minService, orderInfo, - () { - SmartDialog.showToast("订单支付成功"); - Future.delayed(Duration(seconds: 1), () { + (BaseData baseData) { + SmartDialog.showToast(baseData?.msg == "ok" ?"订单支付成功" :baseData?.msg,alignment: Alignment.center); + Future.delayed(Duration(seconds: 3), () { _onRefresh(); }); }, diff --git a/lib/order/order_utils.dart b/lib/order/order_utils.dart index e8ae5452..9e2e42b8 100644 --- a/lib/order/order_utils.dart +++ b/lib/order/order_utils.dart @@ -19,7 +19,7 @@ class OrderUtils { placeOrderFirst.isTakeOut = orderInfo.isTakeOut; placeOrderFirst.notes = orderInfo.notes; placeOrderFirst.id = orderInfo.id; - placeOrderFirst.orderProductVOList = orderInfo.orderDetail.orderProductList; + placeOrderFirst.orderProductVOList = orderInfo.orderDetail?.orderProductList; placeOrderFirst.numberOfPeople = "0"; placeOrderFirst.orderSource = orderInfo.orderSource; placeOrderFirst.orderType = "${orderInfo.orderType}"; @@ -68,7 +68,7 @@ class OrderUtils { ); weChatResponseEventHandler.listen((event) async { print("payCallback: ${event.errCode}"); - queryDetails(); + queryDetails(null); }); } } else { diff --git a/lib/retrofit/min_api.g.dart b/lib/retrofit/min_api.g.dart index 1a3cec24..9ea65389 100644 --- a/lib/retrofit/min_api.g.dart +++ b/lib/retrofit/min_api.g.dart @@ -330,7 +330,7 @@ class _MinApiService implements MinApiService { data: _data); final value = BaseData.fromJson( _result.data, - (json) => WxPay.fromJson(json), + (json) => json==null?null:(WxPay.fromJson(json)), ); return value; } @@ -352,7 +352,7 @@ class _MinApiService implements MinApiService { data: _data); final value = BaseData.fromJson( _result.data, - (json) => json as dynamic, + (json) => json==null?null:(json as dynamic), ); return value; } diff --git a/lib/retrofit/retrofit_api.g.dart b/lib/retrofit/retrofit_api.g.dart index 9e250f48..07036975 100644 --- a/lib/retrofit/retrofit_api.g.dart +++ b/lib/retrofit/retrofit_api.g.dart @@ -1252,7 +1252,7 @@ class _ApiService implements ApiService { data: _data); final value = BaseData.fromJson( _result.data, - (json) => json as String, + (json) => json==null?null:(json as String), ); return value; } diff --git a/lib/union/un_page.dart b/lib/union/un_page.dart deleted file mode 100644 index e69de29b..00000000 diff --git a/lib/union/union_list.dart b/lib/union/union_list.dart new file mode 100644 index 00000000..c898a799 --- /dev/null +++ b/lib/union/union_list.dart @@ -0,0 +1,393 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:huixiang/generated/l10n.dart'; +import 'package:huixiang/retrofit/data/store.dart'; +import 'package:huixiang/utils/font_weight.dart'; +import 'package:huixiang/view_widget/border_text.dart'; +import 'package:huixiang/view_widget/classic_header.dart'; +import 'package:huixiang/view_widget/custom_image.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:huixiang/view_widget/request_permission.dart'; +import 'package:huixiang/view_widget/round_button.dart'; +import 'package:permission_handler/permission_handler.dart'; +import 'package:pull_to_refresh/pull_to_refresh.dart'; + +class UnionList extends StatefulWidget { + final RefreshController refreshController; + final List storeList; + final Function onRefresh; + + UnionList(this.refreshController,this.storeList,this.onRefresh); + + + @override + State createState() { + return _UnionList(); + } +} + +class _UnionList extends State { + final TextEditingController editingController = TextEditingController(); + + @override + Widget build(BuildContext context) { + return Column( + children: [ + Container( + height: MediaQuery.of(context).size.height - + 103.h - + MediaQuery.of(context).padding.top, + child: SmartRefresher( + controller: widget.refreshController, + enablePullUp: false, + enablePullDown: true, + physics: BouncingScrollPhysics(), + header: MyHeader(), + onRefresh: widget.onRefresh, + child: ListView.builder( + itemCount:widget.storeList == null ? 0 : widget.storeList.length, + padding: EdgeInsets.only( + top: 8.h, + bottom: 84.h, /* + (375.h - 88.h) + 4.h*/ + ), + physics: NeverScrollableScrollPhysics(), + itemBuilder: (context, position) { + return InkWell( + onTap: () { + if (widget.storeList[position].posType.code == "NORMALSTORE") { + showDeleteDialog(); + } else if (widget.storeList[position].posType.code == + "RETAILSTORE" && + widget.storeList[position].storeName == "一心回乡商城") { + Navigator.of(context).pushNamed( + '/router/shopping_mall_home', + arguments: { + "type": 0, + "id": widget.storeList[position].id, + "tenant": widget.storeList[position].tenantCode, + "storeName": widget.storeList[position].storeName + }, + ); + } else { + Navigator.of(context).pushNamed( + '/router/store_order', + arguments: { + "id": widget.storeList[position].id, + "tenant": widget.storeList[position].tenantCode, + "storeName": widget.storeList[position].storeName + }, + ); + } + }, + child: buildStoreItem(widget.storeList[position], position), + ); + })), + ) + ], + ); + } + + Widget buildSearchItem() { + return Container( + height: 36.h, + margin: EdgeInsets.fromLTRB(6.w, 0, 14.w, 0), + padding: EdgeInsets.fromLTRB(0, 6.h, 0, 6.h), + decoration: BoxDecoration( + color: Color(0xFFF5FAF7), + borderRadius: BorderRadius.circular(4), + boxShadow: [ + BoxShadow( + color: Colors.black.withAlpha(12), + offset: Offset(0, 3), + blurRadius: 14, + spreadRadius: 0, + ), + ], + ), + child: TextField( + textInputAction: TextInputAction.search, + onEditingComplete: () { + // startLocation(); + }, + controller: editingController, + cursorHeight: 30.h, + decoration: InputDecoration( + contentPadding: EdgeInsets.symmetric( + vertical: 12.h, + ), + prefixIcon: Icon( + Icons.search, + size: 24, + color: Colors.black, + ), + suffixIcon: InkWell( + onTap: () { + editingController.clear(); + }, + child: Icon( + Icons.close, + size: 19, + color: Colors.grey, + ), + ), + border: InputBorder.none, + ), + ), + ); + } + + Widget buildStoreItem(Store store, position) { + return Container( + margin: EdgeInsets.fromLTRB(16.w, 8.h, 16.w, 8.h), + // padding: EdgeInsets.fromLTRB(20.w, 20.h, 20.w, 20.h), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.all(Radius.circular(8)), + boxShadow: [ + BoxShadow( + color: Colors.black.withAlpha(25), + offset: Offset(0, 1), + blurRadius: 12, + spreadRadius: 0, + ) + ]), + width: double.infinity, + height: 228, + child: Stack( + children: [ + Positioned( + top: 0, + left: 0, + right: 0, + child: ClipRRect( + child: MImage( + store.facade, + width: double.infinity, + height: 140, + fit: BoxFit.cover, + errorSrc: "assets/image/default_1.webp", + fadeSrc: "assets/image/default_1.webp", + ), + borderRadius: BorderRadius.vertical( + top: Radius.circular(4), + ), + ), + ), + Positioned( + bottom: 0, + left: 0, + right: 0, + child: Container(), + ), + Positioned( + bottom: 16, + left: 12, + right: 0, + child: Container( + height: 100, + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + MImage( + store.logo, + width: 57, + height: 57, + fit: BoxFit.cover, + isCircle: true, + errorSrc: "assets/image/default_1.webp", + fadeSrc: "assets/image/default_1.webp", + ), + SizedBox( + width: 6.w, + ), + Expanded( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox( + height: 40.h, + ), + Text( + store.storeName, + overflow: TextOverflow.ellipsis, + style: TextStyle( + color: Color(0xFF0D0D0D), + fontSize: 14.sp, + fontWeight: MyFontWeight.bold, + ), + ), + SizedBox( + height: 5.h, + ), + Text( + "${S.of(context).dizhi}:${store.address}", + maxLines: 2, + overflow: TextOverflow.ellipsis, + style: TextStyle( + color: Color(0xFF4D4D4D), + fontSize: 12.sp, + fontWeight: MyFontWeight.regular, + ), + ), + ], + )), + Container( + width: 59.w, + height: 18.h, + alignment: Alignment.center, + margin: EdgeInsets.only(top: 20.h), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(2), + color: Color(0xFF32A060), + ), + child: Visibility( + child: Text( + (store.distance ?? 0) > 1000 + ? S.of(context).gongli( + ((store.distance ?? 0) / 1000 * 100).toInt() / + 100.0) + : S.of(context).mi( + ((store.distance ?? 0) * 100).toInt() / 100.0), + style: TextStyle( + color: Color(0xFFFFFFFF), + fontSize: 10.sp, + ), + ), + visible: store.distance != null, + ), + ), + ], + ), + ), + ), + ], + ), + ); + } + + ///扫码提示弹窗 + showDeleteDialog() { + showDialog( + context: context, + builder: (context) { + return AlertDialog( + content: Container( + width: MediaQuery.of(context).size.width - 84, + height: 130.h, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Text( + "您即将进行扫码点餐", + style: TextStyle( + fontSize: 17.sp, + fontWeight: FontWeight.bold, + color: Colors.black, + ), + ), + SizedBox( + height: 30.h, + ), + Row( + children: [ + Expanded( + child: InkWell( + child: BorderText( + text: "取消", + textColor: Color(0xFF32A060), + fontSize: 16.sp, + fontWeight: FontWeight.bold, + borderColor: Color(0xFF32A060), + radius: 4, + padding: EdgeInsets.all(12), + borderWidth: 1, + ), + onTap: () { + Navigator.of(context).pop(); + }, + ), + flex: 1, + ), + SizedBox( + width: 16.w, + ), + Expanded( + child: InkWell( + child: RoundButton( + text: "确定", + textColor: Colors.white, + radius: 4, + padding: EdgeInsets.all(12), + backgroup: Color(0xFF32A060), + fontSize: 16.sp, + fontWeight: FontWeight.bold, + ), + onTap: () { + toScan(); + Navigator.of(context).pop(); + }, + ), + flex: 1, + ), + ], + ) + ], + ), + ), + ); + }, + ); + } + + ///扫码 + toScan() async { + if (await Permission.camera.isPermanentlyDenied) { + showCupertinoDialog( + context: context, + builder: (context) { + return RequestPermission( + "assets/image/icon_camera_permission_tips.webp", + S.of(context).ninxiangjiquanxianweikaiqi, + S.of(context).weilekaipaizhaoxuanzhetouxiang, + S.of(context).kaiqiquanxian, + (result) async { + if (result) { + await openAppSettings(); + } + }, + heightRatioWithWidth: 0.82, + ); + }); + } else if (await Permission.camera.isGranted) { + // http://pos.app.gznl.top/placeorder/?tableId=1315903669597634560&tenantCode=1166&shopId=1300372027722432512 + var result = await Navigator.of(context).pushNamed('/router/qr_scan'); + // String result = await scanner.scan(); + Uri uri = Uri.parse(result); + String tableId = uri.queryParameters["tableId"]; + String tenantCode = uri.queryParameters["tenantCode"]; + String shopId = uri.queryParameters["shopId"]; + if (tableId != null && + tableId != "" && + tenantCode != null && + tenantCode != "" && + shopId != null && + shopId != "") { + Navigator.of(context).pushNamed( + '/router/store_order', + arguments: { + "id": shopId, + "tenant": tenantCode, + "storeName": "", + "tableId": int.tryParse(tableId), + }, + ); + } + } else { + await Permission.camera.request(); + } + } + +} diff --git a/lib/union/union_page.dart b/lib/union/union_page.dart index 4ae8195e..71ac0c77 100644 --- a/lib/union/union_page.dart +++ b/lib/union/union_page.dart @@ -12,6 +12,7 @@ import 'package:huixiang/main.dart'; import 'package:huixiang/retrofit/data/base_data.dart'; import 'package:huixiang/retrofit/data/store.dart'; import 'package:huixiang/retrofit/retrofit_api.dart'; +import 'package:huixiang/union/union_list.dart'; import 'package:huixiang/utils/event_type.dart'; import 'package:huixiang/utils/font_weight.dart'; import 'package:huixiang/utils/location.dart'; @@ -30,14 +31,20 @@ import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_baidu_mapapi_base/flutter_baidu_mapapi_base.dart'; class UnionPage extends StatefulWidget { + final int initialIndex; + UnionPage(Key key,this.initialIndex): super(key: key); + @override State createState() { - return _UnionPage(); + return UnionPageState(); } } -class _UnionPage extends State - with AutomaticKeepAliveClientMixin, WidgetsBindingObserver,SingleTickerProviderStateMixin { +class UnionPageState extends State + with + AutomaticKeepAliveClientMixin, + WidgetsBindingObserver, + SingleTickerProviderStateMixin { final RefreshController refreshController = RefreshController(initialRefresh: false); final RefreshController refreshController1 = @@ -50,7 +57,9 @@ class _UnionPage extends State bool isKeyBoardShow = false; BMFCoordinate latLng; - + jumpIndex(jpIndex){ + tabController.index = jpIndex; + } @override void dispose() { @@ -61,6 +70,9 @@ class _UnionPage extends State Location.getInstance().aMapFlutterLocation.stopLocation(); if (refreshController != null) refreshController.dispose(); + if (refreshController1 != null) refreshController1.dispose(); + if (refreshController2 != null) refreshController2.dispose(); + if (refreshController3 != null) refreshController3.dispose(); } @override @@ -86,10 +98,10 @@ class _UnionPage extends State void initState() { super.initState(); if (tabController == null) - tabController = TabController(length: 4, vsync: this); - tabController?.addListener(() { - startLocation(); - }); + tabController = TabController(length: 4, vsync: this,initialIndex: widget.initialIndex); + // tabController?.addListener(() { + // startLocation(); + // }); WidgetsBinding.instance.addObserver(this); eventBus.on().listen((event) { @@ -98,12 +110,21 @@ class _UnionPage extends State } }); - getLatLng(); - startLocation(); + startLocation(false); + } + + RefreshController tabRefresh(){ + RefreshController tempRef; + if (tabController.index == 0) tempRef = refreshController; + else if (tabController.index == 1) tempRef = refreshController1; + else if (tabController.index == 2) tempRef = refreshController2; + else if (tabController.index == 3) tempRef = refreshController3; + return tempRef; } - startLocation() async { - // EasyLoading.show(status: S.current.zhengzaijiazai); + startLocation(bool isOnRefresh) async { + if(!isOnRefresh) + EasyLoading.show(status: S.current.zhengzaijiazai); Location.getInstance() .aMapFlutterLocation .onResultCallback() @@ -135,7 +156,7 @@ class _UnionPage extends State event["province"], event["city"], event["district"], - editingController.text); + editingController.text,-1); if (_mapController != null) _mapController.updateMapOptions(BMFMapOptions( center: value, @@ -143,7 +164,8 @@ class _UnionPage extends State )); }); } else { - EasyLoading.dismiss(); + getLatLng(); + // EasyLoading.dismiss(); } }); @@ -151,7 +173,7 @@ class _UnionPage extends State Location.getInstance().startLocation(context).then((value) { if (!value) { EasyLoading.dismiss(); - refreshController.refreshFailed(); + tabRefresh().refreshFailed(); } }); } @@ -168,10 +190,10 @@ class _UnionPage extends State getLatLng() async { SharedPreferences.getInstance().then( (value) => { - apiService = ApiService(Dio(), - context: context, - token: value.getString('token'), - showLoading: false), + // apiService = ApiService(Dio(), + // context: context, + // token: value.getString('token'), + // showLoading: false), if (value.containsKey("latitude") && value.containsKey("longitude") && value.containsKey("province") && @@ -181,13 +203,12 @@ class _UnionPage extends State latLng = BMFCoordinate(double.tryParse(value.getString("latitude")), double.tryParse(value.getString("longitude"))), queryStore( - value.getString("latitude"), - value.getString("longitude"), - value.getString("province"), - value.getString("city"), - value.getString("district"), - editingController.text - ), + value.getString("latitude"), + value.getString("longitude"), + value.getString("province"), + value.getString("city"), + value.getString("district"), + editingController.text,-1), setState(() { if (_mapController != null) { _mapController.updateMapOptions(BMFMapOptions( @@ -199,15 +220,26 @@ class _UnionPage extends State } else { - queryStore("", "", "", "", "", editingController.text), + queryStore("", "", "", "", "", editingController.text,-1), } }, ); } List storeList; + List storeList1; + List storeList2; + List storeList3; - queryStore(latitude, longitude, province, city, district, searchKey) async { + queryStore(latitude, longitude, province, city, district, searchKey,int index) async { + if (apiService == null) { + SharedPreferences value = await SharedPreferences.getInstance(); + apiService = ApiService( + Dio(), + context: context, + token: value.getString("token"), + ); + } BaseData> baseData = await apiService.queryStore({ "city": city, "district": district, @@ -215,67 +247,88 @@ class _UnionPage extends State "latitude": latitude, "longitude": longitude, "searchKey": searchKey, - "serviceType":tabController.index == 0 ?"":(tabController.index==1?"EATSTORE":(tabController.index == 2?"DRINKSTORE":"HAPPYSTORE")), + "serviceType": (tabController.index == 0 && index == -1) || index == 0 + ? "" + : ((tabController.index == 1 && index == -1) || index == 1 + ? "EATSTORE" + : ((tabController.index == 2 && index == -1) || index == 2 ? "DRINKSTORE" : "HAPPYSTORE")), }).catchError((error) { - refreshController.refreshFailed(); + if(index == -1) + tabRefresh().refreshFailed(); }); if (baseData != null && baseData.isSuccess) { - storeList = baseData.data; - refreshController.refreshCompleted(); + if(index == -1 && storeList == null){ + if (tabController.index != 0) + queryStore(latitude, longitude, province, city, district, searchKey,0); + if (tabController.index != 1) + queryStore(latitude, longitude, province, city, district, searchKey,1); + if (tabController.index != 2) + queryStore(latitude, longitude, province, city, district, searchKey,2); + if (tabController.index != 3) + queryStore(latitude, longitude, province, city, district, searchKey,3); + } + if ((tabController.index == 0 && index == -1) || index == 0) storeList = baseData.data; + else if ((tabController.index == 1 && index == -1) || index == 1) storeList1 = baseData.data; + else if ((tabController.index == 2 && index == -1) || index == 2) storeList2 = baseData.data; + else if ((tabController.index == 3 && index == -1) || index == 3) storeList3 = baseData.data; + if(index == -1) + tabRefresh().refreshCompleted(); } else { - refreshController.refreshFailed(); + if(index == -1) + tabRefresh().refreshFailed(); } EasyLoading.dismiss(); setState(() {}); } + TabController tabController; @override Widget build(BuildContext context) { super.build(context); return Scaffold( - appBar: MyAppBar( - title: "", - leading: false, - brightness: Brightness.light, - titleChild: PreferredSize( - preferredSize: Size(double.infinity, 38.h), - child: TabBar( - controller: tabController, - isScrollable: true, - //可滚动 - indicatorColor: Color(0xff39B54A), - labelColor: Colors.black, - labelStyle: TextStyle( - fontSize: 18.sp, - fontWeight: FontWeight.bold, - ), - unselectedLabelStyle: TextStyle( - fontSize: 15.sp, - fontWeight: FontWeight.normal, - ), - // controller: tabController, - //未选中文字颜色 - unselectedLabelColor: Color(0xffA29E9E), - indicatorSize: TabBarIndicatorSize.label, - //指示器与文字等宽 - tabs: [ - MyTab(text: S.of(context).quanbu), - MyTab(text: "吃"), - MyTab(text: "喝"), - MyTab(text: "玩"), - ], + appBar: MyAppBar( + title: "", + leading: false, + brightness: Brightness.light, + titleChild: PreferredSize( + preferredSize: Size(double.infinity, 38.h), + child: TabBar( + controller: tabController, + isScrollable: true, + //可滚动 + indicatorColor: Color(0xff39B54A), + labelColor: Colors.black, + labelStyle: TextStyle( + fontSize: 18.sp, + fontWeight: FontWeight.bold, ), - )), - body: TabBarView( - controller: tabController, - children: [ - buildItem(refreshController), - buildItem(refreshController1), - buildItem(refreshController2), - buildItem(refreshController3), - ], - ), + unselectedLabelStyle: TextStyle( + fontSize: 15.sp, + fontWeight: FontWeight.normal, + ), + // controller: tabController, + //未选中文字颜色 + unselectedLabelColor: Color(0xffA29E9E), + indicatorSize: TabBarIndicatorSize.label, + //指示器与文字等宽 + tabs: [ + MyTab(text: S.of(context).quanbu), + MyTab(text: "吃"), + MyTab(text: "喝"), + MyTab(text: "玩"), + ], + ), + )), + body: TabBarView( + controller: tabController, + children: [ + UnionList(refreshController, storeList,(){startLocation(true);}), + UnionList(refreshController1, storeList1,(){startLocation(true);}), + UnionList(refreshController2, storeList2,(){startLocation(true);}), + UnionList(refreshController3, storeList3,(){startLocation(true);}), + ], + ), ); // GestureDetector( // onTap: () { @@ -359,7 +412,9 @@ class _UnionPage extends State // ); } - Widget buildItem(RefreshController refreshController,) { + Widget buildItem( + RefreshController refreshController, + ) { return Column( children: [ buildSearchItem(), @@ -374,7 +429,7 @@ class _UnionPage extends State physics: BouncingScrollPhysics(), header: MyHeader(), onRefresh: () { - startLocation(); + startLocation(false); }, child: ListView.builder( itemCount: storeList == null ? 0 : storeList.length, @@ -419,8 +474,6 @@ class _UnionPage extends State ); } - - BMFMapController _mapController; final TextEditingController editingController = TextEditingController(); @@ -448,7 +501,7 @@ class _UnionPage extends State child: TextField( textInputAction: TextInputAction.search, onEditingComplete: () { - startLocation(); + startLocation(false); }, controller: editingController, cursorHeight: 30.h,