From 1133013487706606232b5f6ccca6674e30ab6d02 Mon Sep 17 00:00:00 2001 From: fmk Date: Thu, 21 Apr 2022 10:59:13 +0800 Subject: [PATCH 01/21] =?UTF-8?q?ios=20=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ios/Runner.xcodeproj/project.pbxproj | 12 +++--- lib/community/community_course.dart | 2 +- lib/community/community_page.dart | 8 ++-- .../community_view/community_dynamic.dart | 38 +++++++++---------- lib/community/community_view/home_class.dart | 28 +++++++------- lib/community/headlines/article_list.dart | 14 +++---- lib/home/guide_page.dart | 4 +- lib/login/login_page.dart | 18 ++++----- lib/mine/mine_view/mine_view.dart | 4 +- lib/retrofit/min_api.dart | 2 +- lib/retrofit/retrofit_api.dart | 2 +- lib/store/store_order.dart | 20 +++++----- lib/store/store_view/store_info.dart | 4 +- lib/union/union_view/union_coupon.dart | 4 +- 14 files changed, 80 insertions(+), 80 deletions(-) diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 1a8ccb08..1c667829 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -616,7 +616,7 @@ CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = NO; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 87; + CURRENT_PROJECT_VERSION = 88; DEVELOPMENT_TEAM = YF3Q8DVP52; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( @@ -666,7 +666,7 @@ "$(PROJECT_DIR)/baidu", "$(PROJECT_DIR)/Runner/baidu", ); - MARKETING_VERSION = 1.0.87; + MARKETING_VERSION = 1.0.88; ONLY_ACTIVE_ARCH = YES; OTHER_LDFLAGS = ( "$(inherited)", @@ -816,7 +816,7 @@ CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = NO; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 87; + CURRENT_PROJECT_VERSION = 88; DEVELOPMENT_TEAM = YF3Q8DVP52; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( @@ -866,7 +866,7 @@ "$(PROJECT_DIR)/baidu", "$(PROJECT_DIR)/Runner/baidu", ); - MARKETING_VERSION = 1.0.87; + MARKETING_VERSION = 1.0.88; ONLY_ACTIVE_ARCH = YES; OTHER_LDFLAGS = ( "$(inherited)", @@ -907,7 +907,7 @@ CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = NO; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 87; + CURRENT_PROJECT_VERSION = 88; DEVELOPMENT_TEAM = YF3Q8DVP52; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( @@ -957,7 +957,7 @@ "$(PROJECT_DIR)/baidu", "$(PROJECT_DIR)/Runner/baidu", ); - MARKETING_VERSION = 1.0.87; + MARKETING_VERSION = 1.0.88; ONLY_ACTIVE_ARCH = YES; OTHER_LDFLAGS = ( "$(inherited)", diff --git a/lib/community/community_course.dart b/lib/community/community_course.dart index 49b5a5f7..43d90d9b 100644 --- a/lib/community/community_course.dart +++ b/lib/community/community_course.dart @@ -269,7 +269,7 @@ class _CommunityCourse extends State ///课程banner CourseBanner(bannerData,), - SizedBox(height: 28), + SizedBox(height: 28.h), ///合集列表 HomeClass(collectMap,collectList,), diff --git a/lib/community/community_page.dart b/lib/community/community_page.dart index 5427554b..f465f050 100644 --- a/lib/community/community_page.dart +++ b/lib/community/community_page.dart @@ -80,7 +80,7 @@ class _CommunityPage extends State leading: false, titleChild: PreferredSize( preferredSize: Size( - MediaQuery.of(context).size.width - 60, + MediaQuery.of(context).size.width - 60.w, 38.h, ), child: TabBar( @@ -92,12 +92,12 @@ class _CommunityPage extends State labelPadding: EdgeInsets.only(left: 8.w, right: 8.w), indicatorSize: TabBarIndicatorSize.label, unselectedLabelStyle: TextStyle( - fontSize: 15.sp, + fontSize: MediaQuery.of(context).size.width >= 650 ? 10.sp : 15.sp, fontWeight: FontWeight.w400, ), labelStyle: TextStyle( color: Colors.black, - fontSize: 18.sp, + fontSize: MediaQuery.of(context).size.width >= 650 ? 12.sp : 18.sp, fontWeight: FontWeight.bold, ), labelColor: Colors.black, @@ -110,7 +110,7 @@ class _CommunityPage extends State action: GestureDetector( behavior: HitTestBehavior.opaque, child: Container(color: Colors.transparent, - padding: EdgeInsets.only(left: 20,right: 20), + padding: EdgeInsets.only(left: 20.w,right: 20.w), child: SvgPicture.asset( "assets/svg/shequ_fabu.svg", fit: BoxFit.contain, diff --git a/lib/community/community_view/community_dynamic.dart b/lib/community/community_view/community_dynamic.dart index 52bcd4a2..27bdb7aa 100644 --- a/lib/community/community_view/community_dynamic.dart +++ b/lib/community/community_view/community_dynamic.dart @@ -159,10 +159,10 @@ class _CommunityDynamic extends State { return Column( children: [ Container( - margin: EdgeInsets.only(top: 2), + margin: EdgeInsets.only(top: 2.h), key: globalKey, alignment: Alignment.topCenter, - padding: EdgeInsets.only(left: 16,top: 16,right: 16), + padding: EdgeInsets.only(left: 16.w,top: 16.h,right: 16.w), decoration: BoxDecoration( color: Colors.white, boxShadow: [ @@ -184,7 +184,7 @@ class _CommunityDynamic extends State { crossAxisAlignment: CrossAxisAlignment.center, children: [ Container( - height: 44, + height: 44.h, child: Row( children: [ GestureDetector( @@ -213,7 +213,7 @@ class _CommunityDynamic extends State { ), ), SizedBox( - width: 8, + width: 8.w, ), Column( mainAxisAlignment: MainAxisAlignment.spaceEvenly, @@ -222,7 +222,7 @@ class _CommunityDynamic extends State { Text( widget?.article?.authorName ?? "", style: TextStyle( - fontSize: 15.sp, + fontSize: MediaQuery.of(context).size.width >= 650 ? 12.sp :15.sp, fontWeight: MyFontWeight.semi_bold, color: Color(0xFF1A1A1A), ), @@ -230,7 +230,7 @@ class _CommunityDynamic extends State { Text( widget?.article?.createTime ?? "", style: TextStyle( - fontSize: 13.sp, + fontSize: MediaQuery.of(context).size.width >= 650 ? 10.sp :13.sp, fontWeight: MyFontWeight.regular, color: Color(0xFF808080), ), @@ -353,7 +353,7 @@ class _CommunityDynamic extends State { children: [ Expanded( child: Container( - padding: EdgeInsets.only(bottom: 16), + padding: EdgeInsets.only(bottom: 16.h), child:Row( // mainAxisAlignment: MainAxisAlignment.center, // crossAxisAlignment: CrossAxisAlignment.center, @@ -364,7 +364,7 @@ class _CommunityDynamic extends State { height: 16, ), SizedBox( - width: 5, + width: 5.w, ), Text( (widget.article != null) @@ -381,7 +381,7 @@ class _CommunityDynamic extends State { ), Expanded( child:Container( - padding: EdgeInsets.only(bottom: 16), + padding: EdgeInsets.only(bottom: 16.h), child:Row( // mainAxisAlignment: MainAxisAlignment.center, // crossAxisAlignment: CrossAxisAlignment.center, @@ -392,7 +392,7 @@ class _CommunityDynamic extends State { height: 16, ), SizedBox( - width: 5, + width: 5.w, ), Text( "${widget.article.comments ?? 0}", @@ -406,7 +406,7 @@ class _CommunityDynamic extends State { ))), Expanded( child:Container( - padding: EdgeInsets.only(bottom: 16), + padding: EdgeInsets.only(bottom: 16.h), child:Row( // mainAxisAlignment: MainAxisAlignment.center, // crossAxisAlignment: CrossAxisAlignment.center, @@ -417,7 +417,7 @@ class _CommunityDynamic extends State { height: 16, ), SizedBox( - width: 5, + width: 5.w, ), Text( "${widget.article.likes ?? 0}", @@ -440,7 +440,7 @@ class _CommunityDynamic extends State { }); }, child: Container( - padding: EdgeInsets.only(top:3,bottom: 16), + padding: EdgeInsets.only(top:3.h,bottom: 16.h), alignment: Alignment.center, // color: Colors.red, child: Text( @@ -458,7 +458,7 @@ class _CommunityDynamic extends State { ), ), Container( - height: 16, + height: 16.h, color: Color(0xFFF7F7F7), ), ], @@ -793,7 +793,7 @@ class _CommunityDynamic extends State { child: Column( children: [ SizedBox( - height: 10, + height: 10.h, ), GestureDetector( onTap: () { @@ -806,7 +806,7 @@ class _CommunityDynamic extends State { child: Row( children: [ SizedBox( - width: 4, + width: 4.w, ), Image.asset( "assets/image/icon_share.webp", @@ -816,7 +816,7 @@ class _CommunityDynamic extends State { color: Color(0xff515151), ), SizedBox( - width: 12, + width: 12.w, ), Text( S.of(context).fenxiang, @@ -847,7 +847,7 @@ class _CommunityDynamic extends State { child: Row( children: [ SizedBox( - width: 4, + width: 4.w, ), SvgPicture.asset( "assets/svg/ju_b.svg", @@ -855,7 +855,7 @@ class _CommunityDynamic extends State { height: 20, ), SizedBox( - width: 15, + width: 15.w, ), Text( S.of(context).jubaogaineirong, diff --git a/lib/community/community_view/home_class.dart b/lib/community/community_view/home_class.dart index 0c395342..add55a71 100644 --- a/lib/community/community_view/home_class.dart +++ b/lib/community/community_view/home_class.dart @@ -48,7 +48,7 @@ class _HomeClass extends State { Widget collectItem(CollectClassList collectList) { return Container( - width: 168, + width: 168.w, // height: 250, margin: EdgeInsets.symmetric( horizontal: 6.w, @@ -58,7 +58,7 @@ class _HomeClass extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( - padding: EdgeInsets.only(left: 16, top: 5), + padding: EdgeInsets.only(left: 16.w, top: 5.h), child: Text( collectList.name, style: TextStyle( @@ -70,11 +70,11 @@ class _HomeClass extends State { ), Container( height: 195, - margin: EdgeInsets.only(top: 10), + margin: EdgeInsets.only(top: 10.h), child: ListView.builder( scrollDirection: Axis.horizontal, physics: BouncingScrollPhysics(), - padding: EdgeInsets.symmetric(horizontal: 10), + padding: EdgeInsets.symmetric(horizontal: 10.w), itemCount: widget.collectMap[collectList.id] == null ? 0 : widget.collectMap[collectList.id].length, @@ -105,8 +105,8 @@ class _HomeClass extends State { Widget classItem(CourseList collect) { return Container( - width: 168, - height: 195, + width: 168.w, + height: 195.h, decoration: BoxDecoration( borderRadius: BorderRadius.vertical( bottom: Radius.circular(4), @@ -122,7 +122,7 @@ class _HomeClass extends State { color: Colors.white, ), margin: EdgeInsets.symmetric( - horizontal: 6, + horizontal: 6.w, ), child: Column( children: [ @@ -154,7 +154,7 @@ class _HomeClass extends State { child: MImage( collect.coverImg, width: double.infinity, - height: 120, + height: 120.h, fit: BoxFit.cover, errorSrc: "assets/image/default_1.webp", fadeSrc: "assets/image/default_1.webp", @@ -179,7 +179,7 @@ class _HomeClass extends State { height: 16.h, color: Colors.white, ), - SizedBox(width: 5), + SizedBox(width: 5.w), Text( collect.viewers.toString(), style: TextStyle( @@ -190,7 +190,7 @@ class _HomeClass extends State { ), ], ), - SizedBox(width: 8), + SizedBox(width: 8.w), // Row( // children: [ // Image.asset( @@ -219,8 +219,8 @@ class _HomeClass extends State { children: [ Spacer(), Container( - margin: EdgeInsets.only(top: 8, right: 8), - padding: EdgeInsets.only(left: 2, right: 2), + margin: EdgeInsets.only(top: 8.h, right: 8.w), + padding: EdgeInsets.only(left: 2.w, right: 2.w), height: 20.h, alignment: Alignment.center, decoration: BoxDecoration( @@ -245,7 +245,7 @@ class _HomeClass extends State { ), Expanded( child: Container( - padding: EdgeInsets.all(8), + padding: EdgeInsets.all(8.w), child: Column( mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.start, @@ -268,7 +268,7 @@ class _HomeClass extends State { ), ], ), - SizedBox(height: 2), + SizedBox(height: 2.h), Text( "${S.of(context).jiangshi}:${collect.author.name}", overflow: TextOverflow.ellipsis, diff --git a/lib/community/headlines/article_list.dart b/lib/community/headlines/article_list.dart index ff315e7e..4dca7c8b 100644 --- a/lib/community/headlines/article_list.dart +++ b/lib/community/headlines/article_list.dart @@ -38,13 +38,13 @@ class _ArticleList extends State { @override Widget build(BuildContext context) { return Container( - margin: EdgeInsets.only(top: 20, left: 16, right: 16), + margin: EdgeInsets.only(top: 20.h, left: 16.w, right: 16.w), child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ Padding( - padding: EdgeInsets.only(bottom: 12), + padding: EdgeInsets.only(bottom: 12.h), child: Text( S.of(context).zuixinwenzhang, overflow: TextOverflow.ellipsis, @@ -82,7 +82,7 @@ class _ArticleList extends State { return Container( width: double.infinity, padding: EdgeInsets.all(16), - margin: EdgeInsets.only(bottom: 12), + margin: EdgeInsets.only(bottom: 12.h), color: Colors.white, child: Row( crossAxisAlignment: CrossAxisAlignment.start, @@ -90,7 +90,7 @@ class _ArticleList extends State { children: [ Expanded( child: Container( - height: 105, + height: MediaQuery.of(context).size.width >= 650 ? 133.h :105, child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.spaceAround, @@ -105,11 +105,11 @@ class _ArticleList extends State { color: Colors.black, ), ), - SizedBox(height:5), + SizedBox(height:5.h), Text( widget?.articles[position]?.viceTitle ?? "", overflow: TextOverflow.ellipsis, - maxLines: 3, + maxLines: 2, style: TextStyle( fontSize: 12.sp, fontWeight: MyFontWeight.regular, @@ -132,7 +132,7 @@ class _ArticleList extends State { ), ), ), - SizedBox(width: 8), + SizedBox(width: 8.w), Image.asset( "assets/image/browse.webp", width: 14, diff --git a/lib/home/guide_page.dart b/lib/home/guide_page.dart index 32a6031a..016d9711 100644 --- a/lib/home/guide_page.dart +++ b/lib/home/guide_page.dart @@ -309,7 +309,7 @@ class _GuidePage extends State { fit: BoxFit.fill, ), SizedBox( - height: 66.h, + height: MediaQuery.of(context).size.width >= 650 ? 20.h :66.h, ), Container( alignment: Alignment.center, @@ -323,7 +323,7 @@ class _GuidePage extends State { ), ), SizedBox( - height: 23.h, + height: MediaQuery.of(context).size.width >= 650 ? 15.h :23.h, ), Padding( padding: EdgeInsets.only(left: 52.w, right: 52.w), diff --git a/lib/login/login_page.dart b/lib/login/login_page.dart index 23671846..490debd7 100644 --- a/lib/login/login_page.dart +++ b/lib/login/login_page.dart @@ -1066,7 +1066,7 @@ class _MyLoginPageState extends State with TickerProviderStateMixin { context: context, builder: (BuildContext context) { return SimpleDialog( - titlePadding: EdgeInsets.all(10), + titlePadding: EdgeInsets.all(10.h), backgroundColor: Colors.transparent, elevation: 0, shape: RoundedRectangleBorder( @@ -1079,7 +1079,7 @@ class _MyLoginPageState extends State with TickerProviderStateMixin { Container( alignment: Alignment.center, width: double.infinity, - height: 305.h, + height: MediaQuery.of(context).size.width >= 650 ? 410.h :305.h, padding: EdgeInsets.only(left: 16.w, right: 16.w), decoration: new BoxDecoration( color: Colors.white, @@ -1105,7 +1105,7 @@ class _MyLoginPageState extends State with TickerProviderStateMixin { style: TextStyle( fontWeight: MyFontWeight.medium, fontSize: 14.sp, - height: 1.3.h, + height: 1.2.h, color: Color(0xff727272), ), ), @@ -1124,14 +1124,14 @@ class _MyLoginPageState extends State with TickerProviderStateMixin { ]), ), SizedBox( - height: 10.h, + height: 5.h, ), Text( S.of(context).yinsizhengce2, style: TextStyle( color: Color(0xff727272), fontSize: 14.sp, - height: 1.3.h, + height: 1.2.h, fontWeight: MyFontWeight.medium, ), ), @@ -1155,8 +1155,8 @@ class _MyLoginPageState extends State with TickerProviderStateMixin { margin: EdgeInsets.only(bottom: 20.h), child: BorderText( padding: EdgeInsets.only( - top: 10.h, - bottom: 10.h, + top: 5.h, + bottom: 5.h, left: 36.w, right: 36.w, ), @@ -1192,8 +1192,8 @@ class _MyLoginPageState extends State with TickerProviderStateMixin { ); }, padding: EdgeInsets.only( - top: 10.h, - bottom: 10.h, + top: 5.h, + bottom: 5.h, left: 21.5.w, right: 21.5.w, ), diff --git a/lib/mine/mine_view/mine_view.dart b/lib/mine/mine_view/mine_view.dart index 6a913b82..125ed7dc 100644 --- a/lib/mine/mine_view/mine_view.dart +++ b/lib/mine/mine_view/mine_view.dart @@ -239,7 +239,7 @@ class _MineView extends State { ? S.of(context).denglu : "${widget.userInfo.nickname}", style: TextStyle( - fontSize: 16.sp, + fontSize: MediaQuery.of(context).size.width >= 650 ? 14.sp :16.sp, fontWeight: FontWeight.bold, color: Color(0xFF353535), ), @@ -267,7 +267,7 @@ class _MineView extends State { ? "" : "我的积分:${widget.userInfo.points}", style: TextStyle( - fontSize: 12.sp, + fontSize: MediaQuery.of(context).size.width >= 650 ? 10.sp :12.sp, fontWeight: MyFontWeight.regular, color: Color(0xFF2F2F2F), ), diff --git a/lib/retrofit/min_api.dart b/lib/retrofit/min_api.dart index ebe58ba5..33adbca6 100644 --- a/lib/retrofit/min_api.dart +++ b/lib/retrofit/min_api.dart @@ -32,7 +32,7 @@ part 'min_api.g.dart'; // const base_url = "http://192.168.10.37:8766/app/"; -const localBaseUrl = "http://192.168.10.236:8766/app/";///本地 +const localBaseUrl = "https://pos.api.lotus-wallet.com/app/";///本地 const serviceBaseUrl = "https://pos.api.lotus-wallet.com/app/";///线上 diff --git a/lib/retrofit/retrofit_api.dart b/lib/retrofit/retrofit_api.dart index 65a3ccda..751209d3 100644 --- a/lib/retrofit/retrofit_api.dart +++ b/lib/retrofit/retrofit_api.dart @@ -68,7 +68,7 @@ part 'retrofit_api.g.dart'; // const base_url = "http://192.168.10.132:8766/app/";///詹云久 -const localBaseUrl = "http://192.168.10.236:8766/app/";///本地 +const localBaseUrl = "https://pos.platform.lotus-wallet.com/app/";///本地 const serviceBaseUrl = "https://pos.platform.lotus-wallet.com/app/";///线上 @RestApi(baseUrl: localBaseUrl) diff --git a/lib/store/store_order.dart b/lib/store/store_order.dart index abd6ae69..57f22673 100644 --- a/lib/store/store_order.dart +++ b/lib/store/store_order.dart @@ -257,8 +257,8 @@ class _StoreOrderPage extends State height: double.infinity, color: Colors.transparent, alignment: Alignment.centerRight, - margin: EdgeInsets.only(left: 10), - padding: EdgeInsets.all(10), + margin: EdgeInsets.only(left: 10.w), + padding: EdgeInsets.all(10.h), child: Icon( Icons.arrow_back_ios, color: Colors.black, @@ -315,7 +315,7 @@ class _StoreOrderPage extends State if (storeInfo == null || storeInfo.couponVOList == null) SizedBox( - height: 8, + height: 8.h, ), ///门店对应VIP信息 @@ -323,7 +323,7 @@ class _StoreOrderPage extends State ], ), ), - top:105.h, + top:MediaQuery.of(context).size.width >= 650 ? 80.h :105.h, bottom: 0, left: 0, right: 0, @@ -338,7 +338,7 @@ class _StoreOrderPage extends State bottom: PreferredSize( preferredSize: Size( MediaQuery.of(context).size.width, - 38, + 38.h, ), child: Container( padding: EdgeInsets.symmetric(horizontal: 10.w), @@ -355,12 +355,12 @@ class _StoreOrderPage extends State ), indicatorSize: TabBarIndicatorSize.label, unselectedLabelStyle: TextStyle( - fontSize: 15.sp, + fontSize: MediaQuery.of(context).size.width >= 650 ? 10.sp : 15.sp, fontWeight: FontWeight.w400, ), labelStyle: TextStyle( color: Colors.black, - fontSize: 18.sp, + fontSize: MediaQuery.of(context).size.width >= 650 ? 12.sp :18.sp, fontWeight: FontWeight.bold, ), labelColor: Colors.black, @@ -477,8 +477,8 @@ class _StoreOrderPage extends State right: 15, top: 14, child: RoundButton( - width: 17, - height: 17, + width: 17.w, + height: 17.h, text: "${count()}", textColor: Colors.white, fontWeight: MyFontWeight.regular, @@ -966,7 +966,7 @@ class _Title extends State { @override Widget build(BuildContext context) { return Container( - margin: EdgeInsets.only(bottom: 38), + margin: EdgeInsets.only(bottom: 38.h), child: Text( widget.title ?? "", style: TextStyle( diff --git a/lib/store/store_view/store_info.dart b/lib/store/store_view/store_info.dart index 97fa5013..99e9d57b 100644 --- a/lib/store/store_view/store_info.dart +++ b/lib/store/store_view/store_info.dart @@ -30,7 +30,7 @@ class _StoreInfoView extends State<StoreInfoView> { top: 5.h, bottom: 6.h, ), - height: 154.h, + height: MediaQuery.of(context).size.width >= 650 ? 180.h :154.h, padding: EdgeInsets.all(12.w), decoration: BoxDecoration( color: Colors.white, @@ -123,7 +123,7 @@ class _StoreInfoView extends State<StoreInfoView> { ), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, - crossAxisAlignment: CrossAxisAlignment.end, + crossAxisAlignment: CrossAxisAlignment.center, children: [ Expanded( child: Text( diff --git a/lib/union/union_view/union_coupon.dart b/lib/union/union_view/union_coupon.dart index ea545bfa..0daa0d1c 100644 --- a/lib/union/union_view/union_coupon.dart +++ b/lib/union/union_view/union_coupon.dart @@ -62,7 +62,7 @@ class _UnionCoupon extends State<UnionCoupon> { Widget buildCoupon() { return Container( - height: 109.h, + height: 116.h, child: ListView.builder( itemCount: (widget.storeInfo != null && widget.storeInfo.couponVOList != null) ? widget.storeInfo.couponVOList.length @@ -258,7 +258,7 @@ class _UnionCoupon extends State<UnionCoupon> { ? Colors.grey : Color(0xFF32A060), padding: EdgeInsets.symmetric( - horizontal: 8.w, vertical: 4.h), + horizontal: 8.w, vertical:2.h), fontSize: 12.sp, ), ), From b5e7eff6cd68eda9c30f1dde88090e3bb19b1cfe Mon Sep 17 00:00:00 2001 From: fmk <fengmeikan@hotmail.com> Date: Thu, 28 Apr 2022 18:47:14 +0800 Subject: [PATCH 02/21] =?UTF-8?q?ios=20=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ios/Runner.xcodeproj/project.pbxproj | 12 ++++++------ lib/community/community_view/community_dynamic.dart | 2 +- lib/community/release_dynamic.dart | 8 ++++---- lib/home/home_view/home_banner.dart | 6 +++--- lib/retrofit/min_api.dart | 4 ++-- lib/retrofit/retrofit_api.dart | 4 ++-- lib/union/union_view/union_coupon.dart | 2 +- 7 files changed, 19 insertions(+), 19 deletions(-) diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 1c667829..cab64196 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -616,7 +616,7 @@ CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = NO; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 88; + CURRENT_PROJECT_VERSION = 90; DEVELOPMENT_TEAM = YF3Q8DVP52; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( @@ -666,7 +666,7 @@ "$(PROJECT_DIR)/baidu", "$(PROJECT_DIR)/Runner/baidu", ); - MARKETING_VERSION = 1.0.88; + MARKETING_VERSION = 1.0.90; ONLY_ACTIVE_ARCH = YES; OTHER_LDFLAGS = ( "$(inherited)", @@ -816,7 +816,7 @@ CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = NO; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 88; + CURRENT_PROJECT_VERSION = 90; DEVELOPMENT_TEAM = YF3Q8DVP52; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( @@ -866,7 +866,7 @@ "$(PROJECT_DIR)/baidu", "$(PROJECT_DIR)/Runner/baidu", ); - MARKETING_VERSION = 1.0.88; + MARKETING_VERSION = 1.0.90; ONLY_ACTIVE_ARCH = YES; OTHER_LDFLAGS = ( "$(inherited)", @@ -907,7 +907,7 @@ CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = NO; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 88; + CURRENT_PROJECT_VERSION = 90; DEVELOPMENT_TEAM = YF3Q8DVP52; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( @@ -957,7 +957,7 @@ "$(PROJECT_DIR)/baidu", "$(PROJECT_DIR)/Runner/baidu", ); - MARKETING_VERSION = 1.0.88; + MARKETING_VERSION = 1.0.90; ONLY_ACTIVE_ARCH = YES; OTHER_LDFLAGS = ( "$(inherited)", diff --git a/lib/community/community_view/community_dynamic.dart b/lib/community/community_view/community_dynamic.dart index 27bdb7aa..83a235dc 100644 --- a/lib/community/community_view/community_dynamic.dart +++ b/lib/community/community_view/community_dynamic.dart @@ -184,7 +184,7 @@ class _CommunityDynamic extends State<CommunityDynamic> { crossAxisAlignment: CrossAxisAlignment.center, children: [ Container( - height: 44.h, + // height: 44.h, child: Row( children: [ GestureDetector( diff --git a/lib/community/release_dynamic.dart b/lib/community/release_dynamic.dart index d3aef942..540f5d4d 100644 --- a/lib/community/release_dynamic.dart +++ b/lib/community/release_dynamic.dart @@ -103,7 +103,7 @@ class _ReleaseDynamic extends State<ReleaseDynamic> { overflow: TextOverflow.ellipsis, style: TextStyle( fontWeight: MyFontWeight.semi_bold, - fontSize: 18.sp, + fontSize: 14.sp, color: Colors.red, ), ), @@ -117,8 +117,8 @@ class _ReleaseDynamic extends State<ReleaseDynamic> { overflow: TextOverflow.ellipsis, style: TextStyle( fontWeight: MyFontWeight.medium, - fontSize: 14.sp, - color: Colors.black, + fontSize: 12.sp, + color: Color(0xFFB3B2B2), ), ), ) @@ -164,7 +164,7 @@ class _ReleaseDynamic extends State<ReleaseDynamic> { SmartDialog.showToast("请输入您此刻的想法!"); return; } - EasyLoading.show(status: S.of(context).zhengzaijiazai); + EasyLoading.show(status: "上传中"); fileUpload().then((value) async { String subjectType = "text"; diff --git a/lib/home/home_view/home_banner.dart b/lib/home/home_view/home_banner.dart index 4d3df053..f5d245a0 100644 --- a/lib/home/home_view/home_banner.dart +++ b/lib/home/home_view/home_banner.dart @@ -90,11 +90,11 @@ class _HomeBanner extends State<HomeBanner> { break; case 4: String router = bannerData.content; + // String router = "/router/store_order?{\"storeId\":\"1512378184161558528\",\"tenantCode\":\"1188\",\"storeName\":\"农场煮意\"}"; if (router.contains("?")) { - String params = router.substring(router.indexOf("?")); - params = params.replaceAll("?", ""); + String params = router.substring(router.indexOf("?")+1); Map map = jsonDecode(params); - Navigator.of(context).pushNamed(router, arguments: map); + Navigator.of(context).pushNamed(router.substring(0,router.indexOf("?")), arguments: map); } else { Navigator.of(context).pushNamed(router); } diff --git a/lib/retrofit/min_api.dart b/lib/retrofit/min_api.dart index 33adbca6..f8e85a64 100644 --- a/lib/retrofit/min_api.dart +++ b/lib/retrofit/min_api.dart @@ -58,8 +58,8 @@ abstract class MinApiService { } headers["Environment"] = "app"; dio.options = BaseOptions( - connectTimeout: 10000, - receiveTimeout: 10000, + connectTimeout: 20000, + receiveTimeout: 20000, headers: headers, responseType: ResponseType.json, ); diff --git a/lib/retrofit/retrofit_api.dart b/lib/retrofit/retrofit_api.dart index 751209d3..1f7b8706 100644 --- a/lib/retrofit/retrofit_api.dart +++ b/lib/retrofit/retrofit_api.dart @@ -87,8 +87,8 @@ abstract class ApiService { headers["Environment"] = "app"; } dio.options = BaseOptions( - connectTimeout: 10000, - receiveTimeout: 10000, + connectTimeout: 60000, + receiveTimeout: 60000, headers: headers, responseType: ResponseType.json, ); diff --git a/lib/union/union_view/union_coupon.dart b/lib/union/union_view/union_coupon.dart index 0daa0d1c..ad38744f 100644 --- a/lib/union/union_view/union_coupon.dart +++ b/lib/union/union_view/union_coupon.dart @@ -193,7 +193,7 @@ class _UnionCoupon extends State<UnionCoupon> { : S.of(context).quanchangzhe(widget .storeInfo .couponVOList[position] - .discountPercent)) + .discountPercent /10.0)) : "", overflow: TextOverflow.ellipsis, style: TextStyle( From eeea0d1740d3c1bfb90550fd0fbdf39bbc84faf6 Mon Sep 17 00:00:00 2001 From: w-R <953969641@qq.com> Date: Fri, 29 Apr 2022 09:32:57 +0800 Subject: [PATCH 03/21] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=A4=BE=E7=BE=A4?= =?UTF-8?q?=E8=A7=86=E9=A2=91=E4=B8=8A=E4=BC=A0=E6=97=B6=E9=97=B4,?= =?UTF-8?q?=E9=A6=96=E9=A1=B5banner=E8=B7=B3=E8=BD=AC;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/home/huixiang_view/huixiang_banner.dart | 6 +++--- lib/union/union_view/union_coupon.dart | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/home/huixiang_view/huixiang_banner.dart b/lib/home/huixiang_view/huixiang_banner.dart index e4361723..a57b800c 100644 --- a/lib/home/huixiang_view/huixiang_banner.dart +++ b/lib/home/huixiang_view/huixiang_banner.dart @@ -83,11 +83,11 @@ class _HuiXiangBanner extends State<HuiXiangBanner> { break; case 4: String router = bannerData.content; + // String router = "/router/store_order?{\"id\":\"1512378184161558528\",\"tenant\":\"1188\",\"storeName\":\"农场煮意\"}"; if (router.contains("?")) { - String params = router.substring(router.indexOf("?")); - params = params.replaceAll("?", ""); + String params = router.substring(router.indexOf("?")+1); Map map = jsonDecode(params); - Navigator.of(context).pushNamed(router, arguments: map); + Navigator.of(context).pushNamed(router.substring(0,router.indexOf("?")), arguments: map); } else { Navigator.of(context).pushNamed(router); } diff --git a/lib/union/union_view/union_coupon.dart b/lib/union/union_view/union_coupon.dart index ad38744f..b9c2ef64 100644 --- a/lib/union/union_view/union_coupon.dart +++ b/lib/union/union_view/union_coupon.dart @@ -126,7 +126,7 @@ class _UnionCoupon extends State<UnionCoupon> { .bizType == 5) ? S.of(context).duihuanquan - : "${widget.storeInfo.couponVOList[position].discountPercent ~/ 10}折", + : "${widget.storeInfo.couponVOList[position].discountPercent / 10.0}折", style: TextStyle( fontSize: 36.sp, color: Color(0xFFFF7A1A), From 5552abc52c4621e0dda671aa87be7bd7230030d2 Mon Sep 17 00:00:00 2001 From: w-R <953969641@qq.com> Date: Fri, 29 Apr 2022 14:10:22 +0800 Subject: [PATCH 04/21] =?UTF-8?q?=E4=BC=98=E6=83=A0=E5=88=B8=E6=9B=B4?= =?UTF-8?q?=E6=94=B9;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/view_widget/new_coupon_widget.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/view_widget/new_coupon_widget.dart b/lib/view_widget/new_coupon_widget.dart index 1f16bb3a..b80b0bdc 100644 --- a/lib/view_widget/new_coupon_widget.dart +++ b/lib/view_widget/new_coupon_widget.dart @@ -93,7 +93,7 @@ class NewCouponWidget extends StatelessWidget { ), Expanded( child: Text( - (coupon.storeId != "0" && coupon?.storeList != null && coupon.storeList.firstWhere((x) => x.id == coupon.storeId)!=null ? + (coupon.storeId != "0" && coupon?.storeList != null && coupon.storeList.isNotEmpty && coupon.storeList.firstWhere((x) => x.id == coupon.storeId)!=null ? coupon.storeList.firstWhere((x) => x.id == coupon.storeId).storeName : coupon.tenantName), overflow: TextOverflow.ellipsis, style: TextStyle( From 140371a5246ffce9d0cd99256a70eec2d8f21d2f Mon Sep 17 00:00:00 2001 From: w-R <953969641@qq.com> Date: Sat, 7 May 2022 13:36:59 +0800 Subject: [PATCH 05/21] =?UTF-8?q?=E4=BC=98=E6=83=A0=E5=88=B8=E6=9B=B4?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/retrofit/min_api.dart | 2 +- lib/retrofit/retrofit_api.dart | 2 +- lib/settlement/settlement.dart | 10 +++++----- lib/settlement/settlement_view/coupon.dart | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/retrofit/min_api.dart b/lib/retrofit/min_api.dart index f8e85a64..5b8d9f8f 100644 --- a/lib/retrofit/min_api.dart +++ b/lib/retrofit/min_api.dart @@ -32,7 +32,7 @@ part 'min_api.g.dart'; // const base_url = "http://192.168.10.37:8766/app/"; -const localBaseUrl = "https://pos.api.lotus-wallet.com/app/";///本地 +const localBaseUrl = "http://192.168.10.78:8765/app/";///本地 const serviceBaseUrl = "https://pos.api.lotus-wallet.com/app/";///线上 diff --git a/lib/retrofit/retrofit_api.dart b/lib/retrofit/retrofit_api.dart index 1f7b8706..1b7fc4bc 100644 --- a/lib/retrofit/retrofit_api.dart +++ b/lib/retrofit/retrofit_api.dart @@ -68,7 +68,7 @@ part 'retrofit_api.g.dart'; // const base_url = "http://192.168.10.132:8766/app/";///詹云久 -const localBaseUrl = "https://pos.platform.lotus-wallet.com/app/";///本地 +const localBaseUrl = "http://192.168.10.78:8766/app/";///本地 const serviceBaseUrl = "https://pos.platform.lotus-wallet.com/app/";///线上 @RestApi(baseUrl: localBaseUrl) diff --git a/lib/settlement/settlement.dart b/lib/settlement/settlement.dart index 6bd2185e..4965a9f3 100644 --- a/lib/settlement/settlement.dart +++ b/lib/settlement/settlement.dart @@ -588,18 +588,18 @@ class _Settlement extends State<Settlement> { couponBean: couponListBean); }, ); - if (couponBean != null) { + // if (couponBean != null) { this.couponListBean = couponBean; - coupons = couponListBean.promotionName; + coupons = couponListBean?.promotionName ?? ""; promotions = ""; queryOrderInfo( - address != null ? address.id : null, + address?.id, selectedBtn, - couponListBean != null ? couponListBean.id : null, + couponListBean?.id, 0, null, ); - } + // } } ///活动弹窗 diff --git a/lib/settlement/settlement_view/coupon.dart b/lib/settlement/settlement_view/coupon.dart index f8998f46..c920d3e3 100644 --- a/lib/settlement/settlement_view/coupon.dart +++ b/lib/settlement/settlement_view/coupon.dart @@ -167,7 +167,7 @@ class _CouponWidget extends State<CouponWidget> { margin: EdgeInsets.only(right: 23.w), child: GestureDetector( onTap: () { - Navigator.of(context).pop(widget.couponList); + Navigator.of(context).pop(widget.selected ? null : widget.couponList); }, child: Image.asset( widget.selected From a1efd61980f7347dfe88e5178e2b76f55660300f Mon Sep 17 00:00:00 2001 From: fmk <fengmeikan@hotmail.com> Date: Sat, 7 May 2022 13:37:52 +0800 Subject: [PATCH 06/21] =?UTF-8?q?ios=20=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ios/Runner.xcodeproj/project.pbxproj | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index cab64196..8b522980 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -616,7 +616,7 @@ CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = NO; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 90; + CURRENT_PROJECT_VERSION = 92; DEVELOPMENT_TEAM = YF3Q8DVP52; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( @@ -666,7 +666,7 @@ "$(PROJECT_DIR)/baidu", "$(PROJECT_DIR)/Runner/baidu", ); - MARKETING_VERSION = 1.0.90; + MARKETING_VERSION = 1.0.92; ONLY_ACTIVE_ARCH = YES; OTHER_LDFLAGS = ( "$(inherited)", @@ -816,7 +816,7 @@ CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = NO; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 90; + CURRENT_PROJECT_VERSION = 92; DEVELOPMENT_TEAM = YF3Q8DVP52; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( @@ -866,7 +866,7 @@ "$(PROJECT_DIR)/baidu", "$(PROJECT_DIR)/Runner/baidu", ); - MARKETING_VERSION = 1.0.90; + MARKETING_VERSION = 1.0.92; ONLY_ACTIVE_ARCH = YES; OTHER_LDFLAGS = ( "$(inherited)", @@ -907,7 +907,7 @@ CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = NO; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 90; + CURRENT_PROJECT_VERSION = 92; DEVELOPMENT_TEAM = YF3Q8DVP52; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( @@ -957,7 +957,7 @@ "$(PROJECT_DIR)/baidu", "$(PROJECT_DIR)/Runner/baidu", ); - MARKETING_VERSION = 1.0.90; + MARKETING_VERSION = 1.0.92; ONLY_ACTIVE_ARCH = YES; OTHER_LDFLAGS = ( "$(inherited)", From 117e5a78098a869364666d6ef846190d589f8876 Mon Sep 17 00:00:00 2001 From: w-R <953969641@qq.com> Date: Sat, 7 May 2022 15:19:51 +0800 Subject: [PATCH 07/21] =?UTF-8?q?=E5=BC=B9=E7=AA=97=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/settlement/settlement.dart | 8 ++++---- lib/view_widget/tips_dialog.dart | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/settlement/settlement.dart b/lib/settlement/settlement.dart index 4965a9f3..6a159a94 100644 --- a/lib/settlement/settlement.dart +++ b/lib/settlement/settlement.dart @@ -153,7 +153,7 @@ class _Settlement extends State<Settlement> { minOrderInfo = baseData.data; }); }else{ - SmartDialog.showToast(baseData.msg, alignment: Alignment.center); + SmartDialog.showToast(baseData?.msg, alignment: Alignment.center); } } @@ -614,14 +614,14 @@ class _Settlement extends State<Settlement> { ); if (pro != null) { this.promotion = pro; - promotions = promotion.name; + promotions = promotion?.name ?? ""; coupons = ""; queryOrderInfo( - address != null ? address.id : null, + address?.id, selectedBtn, null, 0, - promotion != null ? promotion.id : null, + promotion?.id, ); } } diff --git a/lib/view_widget/tips_dialog.dart b/lib/view_widget/tips_dialog.dart index 069a4003..0ac62ada 100644 --- a/lib/view_widget/tips_dialog.dart +++ b/lib/view_widget/tips_dialog.dart @@ -38,7 +38,7 @@ class _Tips extends State<Tips> { child: Text( widget.text ?? S.of(context).querenyaoshanchudangqianpinglunma, style: TextStyle( - fontSize: 17.sp, + fontSize: 15.sp, fontWeight: MyFontWeight.medium, color: Color(0xFF353535), ), @@ -65,7 +65,7 @@ class _Tips extends State<Tips> { child: Text( S.of(context).quxiao, style: TextStyle( - fontSize: 17.sp, + fontSize: 16.sp, fontWeight: MyFontWeight.medium, color: Color(0xFF353535), ), @@ -91,7 +91,7 @@ class _Tips extends State<Tips> { child: Text( S.of(context).queren, style: TextStyle( - fontSize: 17.sp, + fontSize: 16.sp, fontWeight: MyFontWeight.medium, color: Color(0xFF32A060), ), From a78e04a28b12c00ee9d0574842a86467aefc9b27 Mon Sep 17 00:00:00 2001 From: w-R <953969641@qq.com> Date: Sat, 7 May 2022 17:18:10 +0800 Subject: [PATCH 08/21] =?UTF-8?q?=E4=BC=98=E6=83=A0=E5=88=B8=E6=9B=B4?= =?UTF-8?q?=E6=94=B92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/settlement/settlement.dart | 8 ++++---- lib/view_widget/tips_dialog.dart | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/settlement/settlement.dart b/lib/settlement/settlement.dart index 6a159a94..a7a777da 100644 --- a/lib/settlement/settlement.dart +++ b/lib/settlement/settlement.dart @@ -597,7 +597,7 @@ class _Settlement extends State<Settlement> { selectedBtn, couponListBean?.id, 0, - null, + promotion?.id, ); // } } @@ -612,17 +612,17 @@ class _Settlement extends State<Settlement> { return SettlementActivity(settleOrderInfo, storeInfo); }, ); - if (pro != null) { + // if (pro != null) { this.promotion = pro; promotions = promotion?.name ?? ""; coupons = ""; queryOrderInfo( address?.id, selectedBtn, - null, + couponListBean?.id, 0, promotion?.id, ); - } + // } } } diff --git a/lib/view_widget/tips_dialog.dart b/lib/view_widget/tips_dialog.dart index 0ac62ada..0c2df306 100644 --- a/lib/view_widget/tips_dialog.dart +++ b/lib/view_widget/tips_dialog.dart @@ -23,7 +23,7 @@ class _Tips extends State<Tips> { child: Center( child: Container( width: MediaQuery.of(context).size.width - 80.w, - height: 146.h, + height: 165.h, decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(8), @@ -32,7 +32,7 @@ class _Tips extends State<Tips> { children: [ Container( width: double.infinity, - height: 90.h, + height:109.h, alignment: Alignment.center, padding: EdgeInsets.all(10), child: Text( From 8c42c34df6d551966302f5e86895550b046ab572 Mon Sep 17 00:00:00 2001 From: w-R <953969641@qq.com> Date: Sat, 7 May 2022 18:47:33 +0800 Subject: [PATCH 09/21] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=BB=93=E7=AE=97?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E6=8E=A5=E5=8F=A3=E6=9B=B4=E6=94=B9,+?= =?UTF-8?q?=E4=BC=A0=E6=94=AF=E4=BB=98=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/settlement/settlement.dart | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/lib/settlement/settlement.dart b/lib/settlement/settlement.dart index a7a777da..7b27e760 100644 --- a/lib/settlement/settlement.dart +++ b/lib/settlement/settlement.dart @@ -96,6 +96,7 @@ class _Settlement extends State<Settlement> { null, 0, widget.arguments["pid"], + payChannel ); } else if (coupons != null && coupons != "" || tableId <= 0) { queryOrderInfo( @@ -104,9 +105,10 @@ class _Settlement extends State<Settlement> { widget.arguments["cid"], 0, null, + payChannel ); } else - queryOrderInfo(null, selectedBtn, null, 0, null); + queryOrderInfo(null, selectedBtn, null, 0, null,payChannel); }); weChatResponseEventHandler.listen((event) async { @@ -122,13 +124,16 @@ class _Settlement extends State<Settlement> { memberCouponId, orderId, promotionId, + payChannel, ) async { BaseData<SettleOrderInfo> baseData = await minService.getOrderInfo({ "addressId": addressId, "isTake": isTake, "memberCouponId": memberCouponId, "orderId": orderId, - "promotionId": promotionId + "promotionId": promotionId, + "payChannel": payChannel + }).catchError((error) {}); if (baseData != null && baseData.isSuccess) { setState(() { @@ -162,7 +167,7 @@ class _Settlement extends State<Settlement> { this.selectedBtn = selectedBtn; }); if (address != null) { - queryOrderInfo(address.id, selectedBtn, null, 0, null); + queryOrderInfo(address.id, selectedBtn, null, 0, null,payChannel); return; } BaseData<List<Address>> baseDate = @@ -206,7 +211,7 @@ class _Settlement extends State<Settlement> { } } - queryOrderInfo(address.id, selectedBtn, null, 0, null); + queryOrderInfo(address.id, selectedBtn, null, 0, null,payChannel); } } @@ -222,7 +227,7 @@ class _Settlement extends State<Settlement> { }); }); - queryOrderInfo(address.id, selectedBtn, null, 0, null); + queryOrderInfo(address.id, selectedBtn, null, 0, null,payChannel); } } @@ -438,7 +443,7 @@ class _Settlement extends State<Settlement> { this.selectedBtn = 0; }); queryOrderInfo(addressId, isTake, - memberCouponId, orderId, promotionId); + memberCouponId, orderId, promotionId,payChannel); }, queryAddress, storeInfo, address, selectedAddress), @@ -556,6 +561,14 @@ class _Settlement extends State<Settlement> { payChannelCheck(int payChannel) { this.payChannel = payChannel; + queryOrderInfo( + address?.id, + selectedBtn, + couponListBean?.id, + 0, + promotion?.id, + payChannel + ); } mobileChange(String mobile) { @@ -597,7 +610,8 @@ class _Settlement extends State<Settlement> { selectedBtn, couponListBean?.id, 0, - promotion?.id, + null, + payChannel ); // } } @@ -619,9 +633,10 @@ class _Settlement extends State<Settlement> { queryOrderInfo( address?.id, selectedBtn, - couponListBean?.id, + null, 0, promotion?.id, + payChannel ); // } } From dccf1f73dce83be475c33f8621ca90614156c7e8 Mon Sep 17 00:00:00 2001 From: w-R <953969641@qq.com> Date: Mon, 9 May 2022 23:19:34 +0800 Subject: [PATCH 10/21] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E6=9B=B4=E6=94=B9;=20=E5=B9=B3=E5=8F=B0=E4=BD=99=E9=A2=9D?= =?UTF-8?q?=E6=9B=B4=E6=94=B9;=20=E7=A4=BE=E7=BE=A4=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=9B=B4=E6=94=B9;=20=E8=AE=A2=E5=8D=95=E4=BC=98=E6=83=A0?= =?UTF-8?q?=E5=88=B8=E9=80=89=E6=8B=A9=E6=9B=B4=E6=94=B9;=20=E7=A4=BE?= =?UTF-8?q?=E7=BE=A4=E8=AF=84=E8=AE=BA=E5=88=97=E8=A1=A8=E7=82=B9=E5=87=BB?= =?UTF-8?q?=E4=BA=8B=E4=BB=B6=E6=9B=B4=E6=94=B9;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/image/2x/order_kf.webp | Bin 0 -> 42998 bytes assets/image/3x/order_kf.webp | Bin 0 -> 60350 bytes assets/image/order_kf.webp | Bin 0 -> 15304 bytes lib/community/community_child_page.dart | 39 ++++++-- lib/mine/personal_page.dart | 7 +- lib/order/order_detail_page.dart | 14 ++- lib/order/order_view/order_address.dart | 2 +- lib/retrofit/min_api.g.dart | 4 +- lib/retrofit/retrofit_api.g.dart | 2 +- lib/settlement/settlement.dart | 46 +++++----- .../activity_coupon_remarks.dart | 5 +- lib/settlement/settlement_view/coupon.dart | 2 +- .../settlement_view/pay_method.dart | 6 +- .../settlement_order_commodity.dart | 5 +- lib/store/store_order.dart | 3 + lib/store/store_view/shop_goods.dart | 1 + lib/view_widget/tips_dialog.dart | 1 + lib/web/web_view/comment_list.dart | 85 +++++++++++------- 18 files changed, 144 insertions(+), 78 deletions(-) create mode 100644 assets/image/2x/order_kf.webp create mode 100644 assets/image/3x/order_kf.webp create mode 100644 assets/image/order_kf.webp diff --git a/assets/image/2x/order_kf.webp b/assets/image/2x/order_kf.webp new file mode 100644 index 0000000000000000000000000000000000000000..4b742e177c2aefa76fdcd9f30ba06d4b93c89805 GIT binary patch literal 42998 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 literal 0 HcmV?d00001 diff --git a/assets/image/3x/order_kf.webp b/assets/image/3x/order_kf.webp new file mode 100644 index 0000000000000000000000000000000000000000..a05cad0a525ee81ff00e362506c0701d4f2b73de GIT binary patch literal 60350 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 literal 0 HcmV?d00001 diff --git a/assets/image/order_kf.webp b/assets/image/order_kf.webp new file mode 100644 index 0000000000000000000000000000000000000000..d29feb96c03b4fa095ee11718fc71dcdb21892ac GIT binary patch literal 15304 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 b+j&++!gVx5F)f9agVy>ZILSRG3-G@H&z)MI literal 0 HcmV?d00001 diff --git a/lib/community/community_child_page.dart b/lib/community/community_child_page.dart index 7eee6f2b..4a7db4d9 100644 --- a/lib/community/community_child_page.dart +++ b/lib/community/community_child_page.dart @@ -59,6 +59,7 @@ class CommunityChildPageState extends State<CommunityChildPage> with AutomaticKe Dio(), context: context, token: value.getString("token"), + showLoading: false ); } if(isLoadMore){ @@ -146,9 +147,9 @@ class CommunityChildPageState extends State<CommunityChildPage> with AutomaticKe userId: userId, isList: true, exitFull: () { - setState(() { - onRefresh(); - }); + // setState(() { + // onRefresh(); + // }); }, ), onTap: () { @@ -159,10 +160,11 @@ class CommunityChildPageState extends State<CommunityChildPage> with AutomaticKe "userId": userId, }, ).then((value) { - onRefresh(); - setState(() {}); + queryDetails(articles[position].id); + // onRefresh(); + // setState(() {}); }); - setState(() {}); + // setState(() {}); }, ); }, @@ -173,6 +175,31 @@ class CommunityChildPageState extends State<CommunityChildPage> with AutomaticKe ); } + ///详情接口 + queryDetails(id) async { + SharedPreferences value = await SharedPreferences.getInstance(); + if (apiService == null) + apiService = ApiService( + Dio(), + context: context, + token: value.getString("token"), + ); + BaseData<Article> baseData = await apiService.informationInfo(id) + .catchError((onError) { + debugPrint(onError.toString()); + }); + if (baseData != null && baseData.isSuccess) { + this.articles.forEach((element) { + if(element.id == id){ + setState(() { + element.likes = baseData.data.likes; + element.viewers = baseData.data.viewers; + }); + } + }); + } + } + @override bool get wantKeepAlive => true; } diff --git a/lib/mine/personal_page.dart b/lib/mine/personal_page.dart index 78348136..8084782d 100644 --- a/lib/mine/personal_page.dart +++ b/lib/mine/personal_page.dart @@ -59,7 +59,8 @@ class _PersonalPage extends State<PersonalPage> with WidgetsBindingObserver { WidgetsBinding.instance.addObserver(this); SharedPreferences.getInstance().then((value) => { apiService = ApiService(Dio(), - context: context, token: value.getString('token')), + context: context, token: value.getString('token'), + showLoading: true), _onRefresh(), }); } @@ -147,6 +148,10 @@ class _PersonalPage extends State<PersonalPage> with WidgetsBindingObserver { refreshController.loadNoData(); } } + else{ + refreshController.refreshFailed(); + refreshController.loadFailed(); + } } ///去编辑个人资料 diff --git a/lib/order/order_detail_page.dart b/lib/order/order_detail_page.dart index beebb515..b6d6d933 100644 --- a/lib/order/order_detail_page.dart +++ b/lib/order/order_detail_page.dart @@ -40,7 +40,6 @@ class _OrderDetailPage extends State<OrderDetailPage> { SharedPreferences.getInstance().then((value) { apiService = ApiService( Dio(), - showLoading: true, context: context, token: value.getString("token"), ); @@ -67,7 +66,7 @@ class _OrderDetailPage extends State<OrderDetailPage> { ); minService = MinApiService( Dio(), - showLoading:true, + // showLoading:true, context: context, token: minToken, tenant: tenant, @@ -85,6 +84,15 @@ class _OrderDetailPage extends State<OrderDetailPage> { int refundStatus = 0; queryDetails() async { + if (apiService == null) { + SharedPreferences value = await SharedPreferences.getInstance(); + apiService = ApiService( + Dio(), + context: context, + token: value.getString("token"), + showLoading: true + ); + } BaseData<OrderInfo> baseData = await apiService .orderDetail(widget.arguments["id"]) .catchError((error) {}); @@ -214,7 +222,7 @@ class _OrderDetailPage extends State<OrderDetailPage> { payResult(BaseData baseData) { queryDetails(); - SmartDialog.showToast("订单支付成功"); + SmartDialog.showToast(baseData?.msg == "ok" ?"订单支付成功" :baseData?.msg,alignment: Alignment.center); } statusTitle() { diff --git a/lib/order/order_view/order_address.dart b/lib/order/order_view/order_address.dart index 1be9afcd..37990ce6 100644 --- a/lib/order/order_view/order_address.dart +++ b/lib/order/order_view/order_address.dart @@ -144,7 +144,7 @@ class _OrderAddress extends State<OrderAddress> { } else if (widget.payStatus < 4) { SmartDialog.show( widget: TextImageWidget( - "assets/image/icon_empty.webp", + "assets/image/order_kf.webp", S.of(context).ruxutuikuanqingyumendianlianxi, "", S.of(context).zhidianmendian, diff --git a/lib/retrofit/min_api.g.dart b/lib/retrofit/min_api.g.dart index 0e6494d9..f94274f0 100644 --- a/lib/retrofit/min_api.g.dart +++ b/lib/retrofit/min_api.g.dart @@ -100,7 +100,7 @@ class _MinApiService implements MinApiService { data: _data); final value = BaseData<List<ShoppingCart>>.fromJson( _result.data, - (json) => (json as List<dynamic>) + (json) => json==null?null:(json as List<dynamic>) .map<ShoppingCart>( (i) => ShoppingCart.fromJson(i as Map<String, dynamic>)) .toList()); @@ -241,7 +241,7 @@ class _MinApiService implements MinApiService { data: _data); final value = BaseData<MinOrderInfo>.fromJson( _result.data, - (json) => MinOrderInfo.fromJson(json), + (json) => json==null?null:MinOrderInfo.fromJson(json), ); return value; } diff --git a/lib/retrofit/retrofit_api.g.dart b/lib/retrofit/retrofit_api.g.dart index 68536369..8d41ae6c 100644 --- a/lib/retrofit/retrofit_api.g.dart +++ b/lib/retrofit/retrofit_api.g.dart @@ -887,7 +887,7 @@ class _ApiService implements ApiService { data: _data); final value = BaseData<OrderInfo>.fromJson( _result.data, - (json) => OrderInfo.fromJson(json), + (json) => json==null?null:OrderInfo.fromJson(json), ); return value; } diff --git a/lib/settlement/settlement.dart b/lib/settlement/settlement.dart index 7b27e760..6e0626cf 100644 --- a/lib/settlement/settlement.dart +++ b/lib/settlement/settlement.dart @@ -133,7 +133,6 @@ class _Settlement extends State<Settlement> { "orderId": orderId, "promotionId": promotionId, "payChannel": payChannel - }).catchError((error) {}); if (baseData != null && baseData.isSuccess) { setState(() { @@ -152,7 +151,9 @@ class _Settlement extends State<Settlement> { print("ididididididid: $id"); BaseData<MinOrderInfo> baseData = await minService.getOrderDetails({ "id": id, - }).catchError((error) {}); + }).catchError((error) { + print(error); + }); if (baseData != null && baseData.isSuccess) { setState(() { minOrderInfo = baseData.data; @@ -263,11 +264,13 @@ class _Settlement extends State<Settlement> { placeOrderFirst.promotionInfoDTO.promotionId = (promotion != null && tableId <= 0) ? promotion.id - : widget.arguments["pid"] ?? ""; + : ""; + // : widget.arguments["pid"] ?? ""; placeOrderFirst.promotionInfoDTO.couponId = (couponListBean != null && tableId <= 0) ? couponListBean.id - : widget.arguments["cid"] ?? ""; + : ""; + // : widget.arguments["cid"] ?? ""; placeOrderFirst.recMobile = (mobile == null || mobile == "") ? mobile : storeInfo.headMobile; placeOrderFirst.shoppingCartSkuItemList = settleOrderInfo.orderProductList; @@ -294,23 +297,18 @@ class _Settlement extends State<Settlement> { } else { ///火锅店下单, 等待结算 BaseData<dynamic> baseData; - if (parentId == "") { - // 下单 - if (placeOrder) { - // 结算 - querySettlement(); - } else { + if (placeOrder) { + // 结算 + querySettlement(); + } + else{ + if (parentId == "") { // 下单 baseData = await minService .placeOrderFirst(placeOrderFirst.toJson()) .catchError((error) { print("error: $error"); }); - } - } else { - if (placeOrder) { - // 结算 - querySettlement(); } else { //加菜 baseData = await minService @@ -470,8 +468,8 @@ class _Settlement extends State<Settlement> { couponCart, activityCart, settleOrderInfo, - coupons, - promotions, + payChannel == 4 ? null : coupons, + payChannel == 4 ? null : promotions, couponCount(), placeOrder, remakers, @@ -564,9 +562,9 @@ class _Settlement extends State<Settlement> { queryOrderInfo( address?.id, selectedBtn, - couponListBean?.id, + payChannel == 4 ? null : couponListBean?.id, 0, - promotion?.id, + payChannel == 4 ? null : promotion?.id, payChannel ); } @@ -601,10 +599,11 @@ class _Settlement extends State<Settlement> { couponBean: couponListBean); }, ); - // if (couponBean != null) { + if (couponBean != null) { this.couponListBean = couponBean; coupons = couponListBean?.promotionName ?? ""; promotions = ""; + this.promotion = null; queryOrderInfo( address?.id, selectedBtn, @@ -613,7 +612,7 @@ class _Settlement extends State<Settlement> { null, payChannel ); - // } + } } ///活动弹窗 @@ -626,10 +625,11 @@ class _Settlement extends State<Settlement> { return SettlementActivity(settleOrderInfo, storeInfo); }, ); - // if (pro != null) { + if (pro != null) { this.promotion = pro; promotions = promotion?.name ?? ""; coupons = ""; + this.couponListBean = null; queryOrderInfo( address?.id, selectedBtn, @@ -638,6 +638,6 @@ class _Settlement extends State<Settlement> { promotion?.id, payChannel ); - // } + } } } diff --git a/lib/settlement/settlement_view/activity_coupon_remarks.dart b/lib/settlement/settlement_view/activity_coupon_remarks.dart index 1d112d39..345b7649 100644 --- a/lib/settlement/settlement_view/activity_coupon_remarks.dart +++ b/lib/settlement/settlement_view/activity_coupon_remarks.dart @@ -46,8 +46,8 @@ class _ActivityCouponRemarks extends State<ActivityCouponRemarks> { boxShadow: [ BoxShadow( color: Color(0x0D000000), - offset: Offset(0, 3), - blurRadius: 14, + offset: Offset(0, 1), + blurRadius: 8, spreadRadius: 0, ), ], @@ -58,6 +58,7 @@ class _ActivityCouponRemarks extends State<ActivityCouponRemarks> { left: 16, right: 16, top: 15, + bottom: 14 ), padding: EdgeInsets.only( left: 16, diff --git a/lib/settlement/settlement_view/coupon.dart b/lib/settlement/settlement_view/coupon.dart index c920d3e3..f8998f46 100644 --- a/lib/settlement/settlement_view/coupon.dart +++ b/lib/settlement/settlement_view/coupon.dart @@ -167,7 +167,7 @@ class _CouponWidget extends State<CouponWidget> { margin: EdgeInsets.only(right: 23.w), child: GestureDetector( onTap: () { - Navigator.of(context).pop(widget.selected ? null : widget.couponList); + Navigator.of(context).pop(widget.couponList); }, child: Image.asset( widget.selected diff --git a/lib/settlement/settlement_view/pay_method.dart b/lib/settlement/settlement_view/pay_method.dart index 13b874f7..4770543d 100644 --- a/lib/settlement/settlement_view/pay_method.dart +++ b/lib/settlement/settlement_view/pay_method.dart @@ -41,7 +41,7 @@ class _PayMethod extends State<PayMethod> { left: 16.w, right: 16.w, top: 12.h, - bottom: 4.h, + bottom: 16.h, ), padding: EdgeInsets.only( left: 16.w, @@ -53,8 +53,8 @@ class _PayMethod extends State<PayMethod> { boxShadow: [ BoxShadow( color: Color(0x000000).withAlpha(25), - offset: Offset(0, 1), - blurRadius: 12.0, + offset: Offset(0, 2), + blurRadius: 3, ), ], color: Colors.white, diff --git a/lib/settlement/settlement_view/settlement_order_commodity.dart b/lib/settlement/settlement_view/settlement_order_commodity.dart index 97933282..d5c05e1e 100644 --- a/lib/settlement/settlement_view/settlement_order_commodity.dart +++ b/lib/settlement/settlement_view/settlement_order_commodity.dart @@ -125,6 +125,7 @@ class _SettlementOrderCommodity extends State<SettlementOrderCommodity> { width: 44, height: 44, fit: BoxFit.cover, + radius: BorderRadius.circular(4), errorSrc: "assets/image/default_1.webp", fadeSrc: "assets/image/default_1.webp", ), @@ -259,8 +260,8 @@ class _SettlementOrderCommodity extends State<SettlementOrderCommodity> { boxShadow: [ BoxShadow( color: Colors.black.withAlpha(25), - offset: Offset(0, 1), - blurRadius: 12, + offset: Offset(0, 2), + blurRadius: 3, spreadRadius: 0, ) ], diff --git a/lib/store/store_order.dart b/lib/store/store_order.dart index 57f22673..9523df4c 100644 --- a/lib/store/store_order.dart +++ b/lib/store/store_order.dart @@ -753,6 +753,9 @@ class _StoreOrderPage extends State<StoreOrderPage> setState(() {}); }); } + else { + SmartDialog.showToast(baseDate?.msg, alignment: Alignment.center); + } } } diff --git a/lib/store/store_view/shop_goods.dart b/lib/store/store_view/shop_goods.dart index 682e941d..f0213ce0 100644 --- a/lib/store/store_view/shop_goods.dart +++ b/lib/store/store_view/shop_goods.dart @@ -57,6 +57,7 @@ class _ShopGoods extends State<ShopGoods> { : ""), width: 70, height: 70, + radius: BorderRadius.circular(4), fit: BoxFit.cover, errorSrc: "assets/image/default_1.webp", fadeSrc: "assets/image/default_1.webp", diff --git a/lib/view_widget/tips_dialog.dart b/lib/view_widget/tips_dialog.dart index 0c2df306..35bda7fd 100644 --- a/lib/view_widget/tips_dialog.dart +++ b/lib/view_widget/tips_dialog.dart @@ -57,6 +57,7 @@ class _Tips extends State<Tips> { child: InkWell( onTap: () { SmartDialog.dismiss(); + widget.tips(); }, child: Container( width: double.infinity, diff --git a/lib/web/web_view/comment_list.dart b/lib/web/web_view/comment_list.dart index 0a9d3130..bcf2cc41 100644 --- a/lib/web/web_view/comment_list.dart +++ b/lib/web/web_view/comment_list.dart @@ -16,7 +16,6 @@ import 'package:like_button/like_button.dart'; import 'package:shared_preferences/shared_preferences.dart'; class CommentList extends StatefulWidget { - final bool isKeyBoardShow; final Function reply; final Function delCommentTips; @@ -26,8 +25,9 @@ class CommentList extends StatefulWidget { final int like; final Function requestApiFinish; - CommentList(Key key, this.like, this.relationalId,this.relationalType, - this.isKeyBoardShow, this.reply, this.delCommentTips, this.fontSize,{this.requestApiFinish}) + CommentList(Key key, this.like, this.relationalId, this.relationalType, + this.isKeyBoardShow, this.reply, this.delCommentTips, this.fontSize, + {this.requestApiFinish}) : super(key: key); @override @@ -59,7 +59,6 @@ class CommentListState extends State<CommentList> { } else { element.likes += 1; element.liked = true; - } } }); @@ -129,8 +128,8 @@ class CommentListState extends State<CommentList> { color: Colors.white, child: InkWell( onTap: () { - showPressMenu(memberList[position].createUser, - memberList[position]); + // showPressMenu(memberList[position].createUser, + // memberList[position]); }, child: commentItem(memberList[position]), ), @@ -198,8 +197,7 @@ class CommentListState extends State<CommentList> { //评论列表 queryMemberCommentList() async { - if(widget?.relationalId == null || widget.relationalId.isEmpty) - return; + if (widget?.relationalId == null || widget.relationalId.isEmpty) return; SharedPreferences sharedPreferences = await SharedPreferences.getInstance(); if (apiService == null) apiService = ApiService( @@ -263,14 +261,26 @@ class CommentListState extends State<CommentList> { mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.center, children: [ - MImage( - memberList.userAvatarUrl ?? "", - fit: BoxFit.cover, - isCircle: true, - width: 40, - height: 40, - fadeSrc: "assets/image/default_user.webp", - errorSrc: "assets/image/default_user.webp", + GestureDetector( + onTap: () { + setState(() { + Navigator.of(context) + .pushNamed('/router/personal_page', arguments: { + "memberId": memberList.createUser, + }); + }); + }, + behavior: HitTestBehavior.opaque, + child: MImage( + memberList.userAvatarUrl ?? "", + fit: BoxFit.cover, + isCircle: true, + width: 40, + height: 40, + radius: BorderRadius.circular(4), + fadeSrc: "assets/image/default_user.webp", + errorSrc: "assets/image/default_user.webp", + ), ), SizedBox( width: 12.w, @@ -366,24 +376,33 @@ class CommentListState extends State<CommentList> { ], ), ), - Container( - padding: EdgeInsets.only( - left: 68.w, - right: 16.w, - top: 16.h, - bottom: 16.h, - ), - child: Align( - alignment: Alignment.centerLeft, - child: Text( - memberList.content, - style: TextStyle( - fontSize: widget.fontSize + 2, - color: Color(0xff1A1A1A), + GestureDetector( + behavior: HitTestBehavior.opaque, + onTap: () { + setState(() { + showPressMenu(memberList.createUser, + memberList); + }); + }, + child: + Container( + padding: EdgeInsets.only( + left: 68.w, + right: 16.w, + top: 16.h, + bottom: 16.h, ), - ), - ), - ), + child: Align( + alignment: Alignment.centerLeft, + child: Text( + memberList.content, + style: TextStyle( + fontSize: widget.fontSize + 2, + color: Color(0xff1A1A1A), + ), + ), + ), + )), SizedBox( height: 12.h, ), From 362eb452cce68a74fb395647e21c4fee75ca124b Mon Sep 17 00:00:00 2001 From: w-R <953969641@qq.com> Date: Mon, 9 May 2022 23:45:00 +0800 Subject: [PATCH 11/21] =?UTF-8?q?=E7=A4=BE=E7=BE=A4=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/community/community_child_page.dart | 13 +++++++++++++ lib/mine/personal_page.dart | 3 +++ lib/retrofit/min_api.dart | 2 +- lib/retrofit/retrofit_api.dart | 2 +- 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/lib/community/community_child_page.dart b/lib/community/community_child_page.dart index 4a7db4d9..70c1a496 100644 --- a/lib/community/community_child_page.dart +++ b/lib/community/community_child_page.dart @@ -33,6 +33,8 @@ class CommunityChildPageState extends State<CommunityChildPage> with AutomaticKe int pageNum = 1; String userId; bool isLoadMore = false; + bool isRefresh = true; + bool isLoadingData = false; ScrollController sc = ScrollController(); List<Article> articles = []; @@ -52,6 +54,14 @@ class CommunityChildPageState extends State<CommunityChildPage> with AutomaticKe ///动态列表 queryCommunity() async { + if(!isRefresh){ + isRefresh = true; + return; + } + if(isLoadingData){ + return; + } + isLoadingData = true; if (apiService == null) { SharedPreferences value = await SharedPreferences.getInstance(); userId = value.getString('userId'); @@ -107,6 +117,8 @@ class CommunityChildPageState extends State<CommunityChildPage> with AutomaticKe refreshController.loadNoData(); } } + + isLoadingData = false; } @override @@ -191,6 +203,7 @@ class CommunityChildPageState extends State<CommunityChildPage> with AutomaticKe if (baseData != null && baseData.isSuccess) { this.articles.forEach((element) { if(element.id == id){ + isRefresh = false; setState(() { element.likes = baseData.data.likes; element.viewers = baseData.data.viewers; diff --git a/lib/mine/personal_page.dart b/lib/mine/personal_page.dart index 8084782d..b46306b1 100644 --- a/lib/mine/personal_page.dart +++ b/lib/mine/personal_page.dart @@ -142,6 +142,9 @@ class _PersonalPage extends State<PersonalPage> with WidgetsBindingObserver { article.likes = element?.likes; article.comments = element?.comments; articles.add(article); + }); + setState(() { + }); // print("comments: ${comments.length}"); if (int.tryParse(baseData.data.total) < (pageNum * 10)) { diff --git a/lib/retrofit/min_api.dart b/lib/retrofit/min_api.dart index 5b8d9f8f..f8e85a64 100644 --- a/lib/retrofit/min_api.dart +++ b/lib/retrofit/min_api.dart @@ -32,7 +32,7 @@ part 'min_api.g.dart'; // const base_url = "http://192.168.10.37:8766/app/"; -const localBaseUrl = "http://192.168.10.78:8765/app/";///本地 +const localBaseUrl = "https://pos.api.lotus-wallet.com/app/";///本地 const serviceBaseUrl = "https://pos.api.lotus-wallet.com/app/";///线上 diff --git a/lib/retrofit/retrofit_api.dart b/lib/retrofit/retrofit_api.dart index 1b7fc4bc..1f7b8706 100644 --- a/lib/retrofit/retrofit_api.dart +++ b/lib/retrofit/retrofit_api.dart @@ -68,7 +68,7 @@ part 'retrofit_api.g.dart'; // const base_url = "http://192.168.10.132:8766/app/";///詹云久 -const localBaseUrl = "http://192.168.10.78:8766/app/";///本地 +const localBaseUrl = "https://pos.platform.lotus-wallet.com/app/";///本地 const serviceBaseUrl = "https://pos.platform.lotus-wallet.com/app/";///线上 @RestApi(baseUrl: localBaseUrl) From 8164222c670c8b80251eb7af56661e0ee4cc157d Mon Sep 17 00:00:00 2001 From: w-R <953969641@qq.com> Date: Mon, 9 May 2022 23:51:06 +0800 Subject: [PATCH 12/21] =?UTF-8?q?=E5=85=85=E5=80=BC=E4=BC=98=E5=8C=96;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/mine/recharge_page.dart | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/mine/recharge_page.dart b/lib/mine/recharge_page.dart index 158b0141..b6fc9d0b 100644 --- a/lib/mine/recharge_page.dart +++ b/lib/mine/recharge_page.dart @@ -41,7 +41,7 @@ class _RechargePage extends State<RechargePage> { List<RechargeList> rechargeA; int selectIndex = 0; UserInfo userInfo; - dynamic mBalance; + String mBalance = "0"; @override void initState() { @@ -93,7 +93,7 @@ class _RechargePage extends State<RechargePage> { await apiService.queryInfo().catchError((onError) {}); if (baseData != null && baseData.isSuccess) { userInfo = baseData.data; - mBalance = double.tryParse(userInfo?.money ?? "0"); + mBalance = userInfo?.money ?? "0"; if (mounted) setState(() {}); } } @@ -198,7 +198,7 @@ class _RechargePage extends State<RechargePage> { Text.rich( TextSpan(children: [ TextSpan( - text: "$mBalance", + text: mBalance, style: TextStyle( fontSize: 26.sp, color: Color(0xFF181818), From 61bb9d79309198780f757157cac405b5910b237a Mon Sep 17 00:00:00 2001 From: w-R <953969641@qq.com> Date: Tue, 10 May 2022 17:01:57 +0800 Subject: [PATCH 13/21] =?UTF-8?q?=E7=A4=BE=E7=BE=A4=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/community/community_child_page.dart | 120 ++- lib/mine/personal_page.dart | 964 ++++++++++++------------ lib/order/order_view/order_info.dart | 1 + lib/store/store_view/shop_goods.dart | 2 +- 4 files changed, 561 insertions(+), 526 deletions(-) diff --git a/lib/community/community_child_page.dart b/lib/community/community_child_page.dart index 70c1a496..5acb2ee0 100644 --- a/lib/community/community_child_page.dart +++ b/lib/community/community_child_page.dart @@ -36,7 +36,6 @@ class CommunityChildPageState extends State<CommunityChildPage> with AutomaticKe bool isRefresh = true; bool isLoadingData = false; ScrollController sc = ScrollController(); - List<Article> articles = []; @override @@ -53,7 +52,7 @@ class CommunityChildPageState extends State<CommunityChildPage> with AutomaticKe } ///动态列表 - queryCommunity() async { + queryCommunity(String searchKey) async { if(!isRefresh){ isRefresh = true; return; @@ -76,45 +75,70 @@ class CommunityChildPageState extends State<CommunityChildPage> with AutomaticKe pageNum += 1; isLoadMore = false; } - else pageNum = 1; + else if(searchKey == null)pageNum = 1; BaseData<PageInfo<ComunityComment>> baseData = await apiService.trendList({ "mid":"", "onlyFollow": widget.typeStr == "关注" ? true : false, "onlyMe": false, - "pageNum": pageNum, + "pageNum": searchKey == null?pageNum:1, "pageSize": 10, - "searchKey": "" + "searchKey": searchKey??"" }).catchError((error) { - refreshController.refreshFailed(); - refreshController.loadFailed(); + if(searchKey == null) { + refreshController.refreshFailed(); + refreshController.loadFailed(); + } }); - - refreshController.refreshCompleted(); - refreshController.loadComplete(); + if(searchKey == null) { + refreshController.refreshCompleted(); + refreshController.loadComplete(); + } if (baseData.isSuccess) { - if (pageNum == 1) { - articles.clear(); - } - baseData.data.list.forEach((element) { - var article = Article(); - article.id = element.id; - article.content = jsonEncode(element.subjectInfo); - article.mainTitle =element.subject; - article.followed = element.selfFollow; - article.authorHeadImg = element.memberInfo?.avatar; - article.authorName = element.memberInfo?.nickname; - article.location = element.location; - article.createTime = element.createTime; - article.author = element.memberInfo?.mid; - article.viewers = element?.viewers; - article.likes = element?.likes; - article.comments = element?.comments; - articles.add(article); - }); - // comments.sort((a,b)=>b.createTime.compareTo(a.createTime)); - // print("comments: ${comments.length}"); - if (int.tryParse(baseData.data.total) < (pageNum * 10)) { - refreshController.loadNoData(); + if(searchKey != null){ + if(baseData?.data?.list != null && baseData.data.list.isNotEmpty) + articles.forEach((element) { + if(element.id == searchKey){ + element.content = jsonEncode(baseData.data.list[0].subjectInfo); + element.mainTitle =baseData.data.list[0].subject; + element.followed = baseData.data.list[0].selfFollow; + element.authorHeadImg = baseData.data.list[0].memberInfo?.avatar; + element.authorName = baseData.data.list[0].memberInfo?.nickname; + element.location = baseData.data.list[0].location; + element.createTime = baseData.data.list[0].createTime; + element.author = baseData.data.list[0].memberInfo?.mid; + element.viewers = baseData.data.list[0]?.viewers; + element.likes = baseData.data.list[0]?.likes; + element.comments = baseData.data.list[0]?.comments; + this.isRefresh = false; + setState(() { + }); + } + }); + }else{ + if (pageNum == 1) { + articles.clear(); + } + baseData.data.list.forEach((element) { + var article = Article(); + article.id = element.id; + article.content = jsonEncode(element.subjectInfo); + article.mainTitle =element.subject; + article.followed = element.selfFollow; + article.authorHeadImg = element.memberInfo?.avatar; + article.authorName = element.memberInfo?.nickname; + article.location = element.location; + article.createTime = element.createTime; + article.author = element.memberInfo?.mid; + article.viewers = element?.viewers; + article.likes = element?.likes; + article.comments = element?.comments; + articles.add(article); + }); + // comments.sort((a,b)=>b.createTime.compareTo(a.createTime)); + // print("comments: ${comments.length}"); + if (int.tryParse(baseData.data.total) < (pageNum * 10)) { + refreshController.loadNoData(); + } } } @@ -125,7 +149,7 @@ class CommunityChildPageState extends State<CommunityChildPage> with AutomaticKe Widget build(BuildContext context) { super.build(context); return FutureBuilder( - future: queryCommunity(), + future: queryCommunity(null), builder: (context, position) { return SmartRefresher( controller: refreshController, @@ -172,7 +196,7 @@ class CommunityChildPageState extends State<CommunityChildPage> with AutomaticKe "userId": userId, }, ).then((value) { - queryDetails(articles[position].id); + queryCommunity(articles[position].id); // onRefresh(); // setState(() {}); }); @@ -187,32 +211,6 @@ class CommunityChildPageState extends State<CommunityChildPage> with AutomaticKe ); } - ///详情接口 - queryDetails(id) async { - SharedPreferences value = await SharedPreferences.getInstance(); - if (apiService == null) - apiService = ApiService( - Dio(), - context: context, - token: value.getString("token"), - ); - BaseData<Article> baseData = await apiService.informationInfo(id) - .catchError((onError) { - debugPrint(onError.toString()); - }); - if (baseData != null && baseData.isSuccess) { - this.articles.forEach((element) { - if(element.id == id){ - isRefresh = false; - setState(() { - element.likes = baseData.data.likes; - element.viewers = baseData.data.viewers; - }); - } - }); - } - } - @override bool get wantKeepAlive => true; } diff --git a/lib/mine/personal_page.dart b/lib/mine/personal_page.dart index b46306b1..6c150478 100644 --- a/lib/mine/personal_page.dart +++ b/lib/mine/personal_page.dart @@ -30,6 +30,7 @@ class PersonalPage extends StatefulWidget { final Map<String, dynamic> arguments; PersonalPage({this.arguments}); + @override State<StatefulWidget> createState() { return _PersonalPage(); @@ -47,10 +48,10 @@ class _PersonalPage extends State<PersonalPage> with WidgetsBindingObserver { MemberInfor memberInfor; String filePath; bool isLoadMore = false; + bool isRefresh = true; + bool isLoadingData = false; String memberId; - Map<String, dynamic> modifyInfo = { - "background": "" - }; + Map<String, dynamic> modifyInfo = {"background": ""}; @override void initState() { @@ -58,16 +59,17 @@ class _PersonalPage extends State<PersonalPage> with WidgetsBindingObserver { memberId = widget.arguments["memberId"]; WidgetsBinding.instance.addObserver(this); SharedPreferences.getInstance().then((value) => { - apiService = ApiService(Dio(), - context: context, token: value.getString('token'), - showLoading: true), - _onRefresh(), - }); + apiService = ApiService(Dio(), + context: context, + token: value.getString('token'), + showLoading: true), + _onRefresh(), + }); } _onRefresh() async { - queryCommunity(); - queryMember(memberId); + queryCommunity(null); + queryMember(memberId); } ///查询会员信息 @@ -81,7 +83,7 @@ class _PersonalPage extends State<PersonalPage> with WidgetsBindingObserver { ); } BaseData<MemberInfor> baseData = - await apiService.memberDetail(id).catchError((error) { + await apiService.memberDetail(id).catchError((error) { refreshController.refreshFailed(); }); if (baseData != null && baseData.isSuccess) { @@ -89,72 +91,106 @@ class _PersonalPage extends State<PersonalPage> with WidgetsBindingObserver { memberInfor = baseData.data; }); refreshController.refreshCompleted(); - }else { + } else { refreshController.refreshFailed(); } } ///动态列表 - queryCommunity() async { + queryCommunity(String searchKey) async { + if(!isRefresh){ + isRefresh = true; + return; + } + if(isLoadingData){ + return; + } + isLoadingData = true; if (apiService == null) { SharedPreferences value = await SharedPreferences.getInstance(); userId = value.getString('userId'); apiService = ApiService( - Dio(), - context: context, - token: value.getString("token"), + Dio(), + context: context, + token: value.getString("token"), + showLoading: false ); } if(isLoadMore){ pageNum += 1; isLoadMore = false; } - else pageNum = 1; + else if(searchKey == null)pageNum = 1; BaseData<PageInfo<ComunityComment>> baseData = await apiService.trendList({ - "mid":memberId == "0" ? userId : memberId, + "mid": memberId == "0" ? userId : memberId, "onlyFollow": false, "onlyMe": true, - "pageNum": pageNum, + "pageNum": searchKey == null?pageNum:1, "pageSize": 10, - "searchKey": "" + "searchKey": searchKey??"" }).catchError((error) { - refreshController.refreshFailed(); - refreshController.loadFailed(); + if(searchKey == null) { + refreshController.refreshFailed(); + refreshController.loadFailed(); + } }); - if (baseData.isSuccess) { + if(searchKey == null) { refreshController.refreshCompleted(); refreshController.loadComplete(); - if (pageNum == 1) { - articles.clear(); + } + if (baseData.isSuccess) { + if(searchKey != null){ + if(baseData?.data?.list != null && baseData.data.list.isNotEmpty) + articles.forEach((element) { + if(element.id == searchKey){ + element.content = jsonEncode(baseData.data.list[0].subjectInfo); + element.mainTitle =baseData.data.list[0].subject; + element.followed = baseData.data.list[0].selfFollow; + element.authorHeadImg = baseData.data.list[0].memberInfo?.avatar; + element.authorName = baseData.data.list[0].memberInfo?.nickname; + element.location = baseData.data.list[0].location; + element.createTime = baseData.data.list[0].createTime; + element.author = baseData.data.list[0].memberInfo?.mid; + element.viewers = baseData.data.list[0]?.viewers; + element.likes = baseData.data.list[0]?.likes; + element.comments = baseData.data.list[0]?.comments; + this.isRefresh = false; + setState(() { + }); + } + }); } - baseData.data.list.forEach((element) { - var article = Article(); - article.id = element.id; - article.content = jsonEncode(element.subjectInfo); - article.mainTitle = element.subject; - article.followed = element.selfFollow; - article.authorHeadImg = element.memberInfo?.avatar; - article.authorName = element.memberInfo?.nickname; - article.location = element.location; - article.createTime = element.createTime; - article.author = element.memberInfo?.mid; - article.viewers = element?.viewers; - article.likes = element?.likes; - article.comments = element?.comments; - articles.add(article); - }); - setState(() { - - }); - // print("comments: ${comments.length}"); - if (int.tryParse(baseData.data.total) < (pageNum * 10)) { - refreshController.loadNoData(); + else{ + if (pageNum == 1) { + articles.clear(); + } + baseData.data.list.forEach((element) { + var article = Article(); + article.id = element.id; + article.content = jsonEncode(element.subjectInfo); + article.mainTitle =element.subject; + article.followed = element.selfFollow; + article.authorHeadImg = element.memberInfo?.avatar; + article.authorName = element.memberInfo?.nickname; + article.location = element.location; + article.createTime = element.createTime; + article.author = element.memberInfo?.mid; + article.viewers = element?.viewers; + article.likes = element?.likes; + article.comments = element?.comments; + articles.add(article); + }); + setState(() { + }); + // comments.sort((a,b)=>b.createTime.compareTo(a.createTime)); + // print("comments: ${comments.length}"); + if (int.tryParse(baseData.data.total) < (pageNum * 10)) { + refreshController.loadNoData(); + } } } - else{ - refreshController.refreshFailed(); - refreshController.loadFailed(); - } + + isLoadingData = false; } ///去编辑个人资料 @@ -165,7 +201,9 @@ class _PersonalPage extends State<PersonalPage> with WidgetsBindingObserver { .pushNamed('/router/login_page', arguments: {"login": "login"}); return; } - await Navigator.of(context).pushNamed('/router/user_info_page').then((value) { + await Navigator.of(context) + .pushNamed('/router/user_info_page') + .then((value) { _onRefresh(); setState(() {}); }); @@ -273,7 +311,9 @@ class _PersonalPage extends State<PersonalPage> with WidgetsBindingObserver { ///文件上传 fileUpload() async { if (filePath != null && filePath != "" && await File(filePath).exists()) { - BaseData<UploadResult> baseData = await apiService.upload(File(filePath), 123123123,false).catchError((onError) {}); + BaseData<UploadResult> baseData = await apiService + .upload(File(filePath), 123123123, false) + .catchError((onError) {}); if (baseData != null && baseData.isSuccess) { UploadResult uploadResult = baseData.data; modifyInfo["background"] = uploadResult.url; @@ -305,450 +345,446 @@ class _PersonalPage extends State<PersonalPage> with WidgetsBindingObserver { scrollController: scrollController, child: SingleChildScrollView( physics: BouncingScrollPhysics(), - child:Column( - mainAxisAlignment: MainAxisAlignment.spaceAround, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Container( - height: 248, - color: Color(0xFFFFFFFF), - // color: Colors.red, - child: - Stack( - // alignment: Alignment.bottomLeft, - children: [ - Positioned( - top:0, - left: 0, - bottom: 36, - right: 0, - child:Stack( - alignment: Alignment.bottomRight, - children: [ - Container( - color: Colors.black, - child: Opacity( - opacity: 0.9, - child: MImage( - memberInfor?.background ?? "", - width: double.infinity, - height: 260.h, - fit: BoxFit.cover, - errorSrc: - "assets/image/default_1.webp", - fadeSrc: - "assets/image/default_1.webp", - ))), - Container( - margin: EdgeInsets.only( - top: 50.h, left: 16.w, right: 16.w), - alignment: Alignment.topLeft, - decoration: BoxDecoration( - color: Colors.transparent, - ), - child: Column( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - crossAxisAlignment: - CrossAxisAlignment.center, - children: [ - GestureDetector( - child: Image.asset( - "assets/image/integral_return.webp", - width: 24, - height: 24, - ), - onTap: () { - Navigator.of(context).pop(); - }, + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceAround, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + height: 248, + color: Color(0xFFFFFFFF), + // color: Colors.red, + child: Stack( + // alignment: Alignment.bottomLeft, + children: [ + Positioned( + top: 0, + left: 0, + bottom: 36, + right: 0, + child: Stack( + alignment: Alignment.bottomRight, + children: [ + Container( + color: Colors.black, + child: Opacity( + opacity: 0.9, + child: MImage( + memberInfor?.background ?? "", + width: double.infinity, + height: 260.h, + fit: BoxFit.cover, + errorSrc: "assets/image/default_1.webp", + fadeSrc: "assets/image/default_1.webp", + ))), + Container( + margin: EdgeInsets.only( + top: 50.h, left: 16.w, right: 16.w), + alignment: Alignment.topLeft, + decoration: BoxDecoration( + color: Colors.transparent, ), - ], - ), - ), - if(memberId == "0") - Positioned( - bottom: 9, - right: 16.w, - child:GestureDetector( - onTap: (){ - showImagePicker(); - }, - child:Container( - padding: EdgeInsets.only(left: 2, right: 2), - width: 59.w, - height: 23.h, - alignment: Alignment.center, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(2), - color: Color(0x80000000), - ), - child: Text( - S.of(context).genghuanbeijing, - overflow: TextOverflow.ellipsis, - style: TextStyle( - fontSize: 12.sp, - fontWeight: MyFontWeight.regular, - color: Color(0xFFFFFFFF), + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + GestureDetector( + child: Image.asset( + "assets/image/integral_return.webp", + width: 24, + height: 24, + ), + onTap: () { + Navigator.of(context).pop(); + }, ), - ), + ], ), ), - ), - ], - ), - ), - homeInfo(), - ], - ), - ), - Container( - color: Color(0xFFFFFFFF), - child: - Column( - mainAxisAlignment: MainAxisAlignment.spaceAround, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Container( - margin: EdgeInsets.only( - left: 86, top: 12, right: 16), - child: GestureDetector( - onTap: () { - setState(() { - isShrink = !isShrink; - }); - }, - child: Row( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - Expanded( - flex: 1, - child: Text( - memberId == "0" ? ((memberInfor?.signature == "") ? "还未编辑个性签名~" : memberInfor?.signature ?? "") - :"个性签名: ${(memberInfor?.signature == "") ? "还未编辑个性签名~" :memberInfor?.signature ?? ""}", - overflow: isShrink - ? TextOverflow.visible - : TextOverflow.ellipsis, - maxLines: isShrink ? 10 : 2, - style: TextStyle( - fontSize: 12.sp, - color: Color(0xFF868686), - fontWeight: - MyFontWeight.regular, - height: 1.5), - )), - Icon( - (isShrink != null && !isShrink) - ? Icons.chevron_right - : Icons.keyboard_arrow_up, - color: Colors.black, - size: 18, - ), - ], - ), - )), - Container( - margin: EdgeInsets.only(left: 16, right: 16), - child: Row( - mainAxisAlignment: - MainAxisAlignment.spaceAround, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Expanded( - child: GestureDetector( - behavior: HitTestBehavior.opaque, - onTap: () {}, - child: Container( - color: Colors.transparent, - padding: EdgeInsets.all(16), - child: Column( - children: [ - Text( - memberInfor != null ? memberInfor.follow.toString() : "0", - style: TextStyle( - color: Color(0xFF353535), - fontSize: 16.sp, - fontWeight: - MyFontWeight.semi_bold, - ), - ), - SizedBox( - height: 4, - ), - Text( - S.of(context).guanzhu, - style: TextStyle( - color: Color(0xFF353535), - fontSize: 12.sp, - fontWeight: - MyFontWeight.regular, - ), - ), - ], - )), - ), - ), - Expanded( - child: GestureDetector( - behavior: HitTestBehavior.opaque, - onTap: () {}, - child: Container( - color: Colors.transparent, - padding: EdgeInsets.all(16), - child: Column( - children: [ - Text( - memberInfor != null ? memberInfor.fans.toString() : "0", - style: TextStyle( - color: Color(0xFF353535), - fontSize: 16.sp, - fontWeight: - MyFontWeight.semi_bold, - ), - ), - SizedBox( - height: 4, - ), - Text( - S.of(context).fensi, - style: TextStyle( - color: Color(0xFF353535), - fontSize: 12.sp, - fontWeight: - MyFontWeight.regular, - ), - ), - ], - )), - ), - ), - Expanded( - child: GestureDetector( - behavior: HitTestBehavior.opaque, - onTap: () {}, - child: Container( - color: Colors.transparent, - padding: EdgeInsets.all(16), - child: Column( - children: [ - Text( - (memberInfor?.trendTotal??0).toString(), - style: TextStyle( - color: Color(0xFF353535), - fontSize: 16.sp, - fontWeight: - MyFontWeight.semi_bold, - ), - ), - SizedBox( - height: 4, + if (memberId == "0") + Positioned( + bottom: 9, + right: 16.w, + child: GestureDetector( + onTap: () { + showImagePicker(); + }, + child: Container( + padding: EdgeInsets.only(left: 2, right: 2), + width: 59.w, + height: 23.h, + alignment: Alignment.center, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(2), + color: Color(0x80000000), ), - Text( - S.of(context).dongtai, + child: Text( + S.of(context).genghuanbeijing, + overflow: TextOverflow.ellipsis, style: TextStyle( - color: Color(0xFF353535), fontSize: 12.sp, - fontWeight: - MyFontWeight.regular, + fontWeight: MyFontWeight.regular, + color: Color(0xFFFFFFFF), ), ), - ], - )), - ), + ), + ), + ), + ], ), - Expanded( + ), + homeInfo(), + ], + ), + ), + Container( + color: Color(0xFFFFFFFF), + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceAround, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + margin: EdgeInsets.only(left: 86, top: 12, right: 16), child: GestureDetector( - behavior: HitTestBehavior.opaque, - onTap: () {}, - child: Container( - color: Colors.transparent, - padding: EdgeInsets.all(16), - child: Column( - children: [ - Text( - (memberInfor?.gainLikeTotal ?? 0).toString(), - style: TextStyle( - color: Color(0xFF353535), - fontSize: 16.sp, - fontWeight: - MyFontWeight.semi_bold, - ), - ), - SizedBox( - height: 4, - ), - Text( - "获赞", + onTap: () { + setState(() { + isShrink = !isShrink; + }); + }, + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + Expanded( + flex: 1, + child: Text( + memberId == "0" + ? ((memberInfor?.signature == "") + ? "还未编辑个性签名~" + : memberInfor?.signature ?? "") + : "个性签名: ${(memberInfor?.signature == "") ? "还未编辑个性签名~" : memberInfor?.signature ?? ""}", + overflow: isShrink + ? TextOverflow.visible + : TextOverflow.ellipsis, + maxLines: isShrink ? 10 : 2, style: TextStyle( - color: Color(0xFF353535), - fontSize: 12.sp, - fontWeight: - MyFontWeight.regular, - ), - ), - ], - )), - ), + fontSize: 12.sp, + color: Color(0xFF868686), + fontWeight: MyFontWeight.regular, + height: 1.5), + )), + Icon( + (isShrink != null && !isShrink) + ? Icons.chevron_right + : Icons.keyboard_arrow_up, + color: Colors.black, + size: 18, + ), + ], + ), + )), + Container( + margin: EdgeInsets.only(left: 16, right: 16), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded( + child: GestureDetector( + behavior: HitTestBehavior.opaque, + onTap: () {}, + child: Container( + color: Colors.transparent, + padding: EdgeInsets.all(16), + child: Column( + children: [ + Text( + memberInfor != null + ? memberInfor.follow.toString() + : "0", + style: TextStyle( + color: Color(0xFF353535), + fontSize: 16.sp, + fontWeight: MyFontWeight.semi_bold, + ), + ), + SizedBox( + height: 4, + ), + Text( + S.of(context).guanzhu, + style: TextStyle( + color: Color(0xFF353535), + fontSize: 12.sp, + fontWeight: MyFontWeight.regular, + ), + ), + ], + )), + ), + ), + Expanded( + child: GestureDetector( + behavior: HitTestBehavior.opaque, + onTap: () {}, + child: Container( + color: Colors.transparent, + padding: EdgeInsets.all(16), + child: Column( + children: [ + Text( + memberInfor != null + ? memberInfor.fans.toString() + : "0", + style: TextStyle( + color: Color(0xFF353535), + fontSize: 16.sp, + fontWeight: MyFontWeight.semi_bold, + ), + ), + SizedBox( + height: 4, + ), + Text( + S.of(context).fensi, + style: TextStyle( + color: Color(0xFF353535), + fontSize: 12.sp, + fontWeight: MyFontWeight.regular, + ), + ), + ], + )), + ), + ), + Expanded( + child: GestureDetector( + behavior: HitTestBehavior.opaque, + onTap: () {}, + child: Container( + color: Colors.transparent, + padding: EdgeInsets.all(16), + child: Column( + children: [ + Text( + (memberInfor?.trendTotal ?? 0) + .toString(), + style: TextStyle( + color: Color(0xFF353535), + fontSize: 16.sp, + fontWeight: MyFontWeight.semi_bold, + ), + ), + SizedBox( + height: 4, + ), + Text( + S.of(context).dongtai, + style: TextStyle( + color: Color(0xFF353535), + fontSize: 12.sp, + fontWeight: MyFontWeight.regular, + ), + ), + ], + )), + ), + ), + Expanded( + child: GestureDetector( + behavior: HitTestBehavior.opaque, + onTap: () {}, + child: Container( + color: Colors.transparent, + padding: EdgeInsets.all(16), + child: Column( + children: [ + Text( + (memberInfor?.gainLikeTotal ?? 0) + .toString(), + style: TextStyle( + color: Color(0xFF353535), + fontSize: 16.sp, + fontWeight: MyFontWeight.semi_bold, + ), + ), + SizedBox( + height: 4, + ), + Text( + "获赞", + style: TextStyle( + color: Color(0xFF353535), + fontSize: 12.sp, + fontWeight: MyFontWeight.regular, + ), + ), + ], + )), + ), + ), + ], ), - ], - ), - ), - Container( - margin: EdgeInsets.all(16), - height: 1.h, - color: Color(0xFFF7F7F7), + ), + Container( + margin: EdgeInsets.all(16), + height: 1.h, + color: Color(0xFFF7F7F7), + ), + Padding( + padding: EdgeInsets.only(left: 16), + child: Text( + memberId != "0" ? "TA的动态" : "我的动态", + style: TextStyle( + color: Color(0xFF353535), + fontSize: 15.sp, + fontWeight: MyFontWeight.semi_bold, + ), + )), + dynamicList(), + ], ), - Padding( - padding: EdgeInsets.only(left: 16), - child: Text( - memberId != "0" ? - "TA的动态": - "我的动态", - style: TextStyle( - color: Color(0xFF353535), - fontSize: 15.sp, - fontWeight: MyFontWeight.semi_bold, - ), - )), - dynamicList() - ], - ), - ), - ], - )), + ), + ], + )), ); } Widget homeInfo() { return Positioned( - top: 0, + top: 0, bottom: 0, left: 0, right: 0, child: Container( - padding: EdgeInsets.only( - left: 16, - right: 16, - ), - child: Row( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - GestureDetector( - onTap: (){ - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => PhotoViewGalleryScreen( - images: [(memberInfor?.headimg ?? "").isEmpty? - "https://lmg.jj20.com/up/allimg/tx30/09041130358711081.jpg":memberInfor?.headimg - ], //传入图片list - index: 0, //传入当前点击的图片的index - ), - )); - }, - child: MImage( - memberInfor?.headimg ?? "", - isCircle: true, - width: 66, - height: 66, - fit: BoxFit.cover, - errorSrc: "assets/image/default_user.webp", - fadeSrc: "assets/image/default_user.webp", - ), - ), - SizedBox(width: 10.w), - Text( - memberInfor?.nickname ?? "", - overflow: TextOverflow.ellipsis, - style: TextStyle( - fontSize: 16.sp, - fontWeight: MyFontWeight.medium, - color: Color(0xFF353535), - ), + padding: EdgeInsets.only( + left: 16, + right: 16, ), - SizedBox(width: 4.w), - Image.asset( - "assets/image/vip_yk.webp", - width: 20, - height: 20, - ), - Spacer(), - if(memberId == "0") - GestureDetector( - onTap: () { - setState(() { - _toUserInfo(); - }); - }, - child: Container( - height: 23, - padding: EdgeInsets.only(left: 6, right: 6, bottom: 2, top: 2), - alignment: Alignment.center, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(100), - border: Border.all( - width: 1, - color: Color(0xFF353535), - style: BorderStyle.solid, - ), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + GestureDetector( + onTap: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => PhotoViewGalleryScreen( + images: [ + (memberInfor?.headimg ?? "").isEmpty + ? "https://lmg.jj20.com/up/allimg/tx30/09041130358711081.jpg" + : memberInfor?.headimg + ], //传入图片list + index: 0, //传入当前点击的图片的index + ), + )); + }, + child: MImage( + memberInfor?.headimg ?? "", + isCircle: true, + width: 66, + height: 66, + fit: BoxFit.cover, + errorSrc: "assets/image/default_user.webp", + fadeSrc: "assets/image/default_user.webp", ), - child: Text( - S.of(context).bianjigerenziliao, - style: TextStyle( - fontSize: 12.sp, - fontWeight: MyFontWeight.regular, - color: Color(0xFF353535), - ), + ), + SizedBox(width: 10.w), + Text( + memberInfor?.nickname ?? "", + overflow: TextOverflow.ellipsis, + style: TextStyle( + fontSize: 16.sp, + fontWeight: MyFontWeight.medium, + color: Color(0xFF353535), ), ), - ) - ], - ),)); + SizedBox(width: 4.w), + Image.asset( + "assets/image/vip_yk.webp", + width: 20, + height: 20, + ), + Spacer(), + if (memberId == "0") + GestureDetector( + onTap: () { + setState(() { + _toUserInfo(); + }); + }, + child: Container( + height: 23, + padding: + EdgeInsets.only(left: 6, right: 6, bottom: 2, top: 2), + alignment: Alignment.center, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(100), + border: Border.all( + width: 1, + color: Color(0xFF353535), + style: BorderStyle.solid, + ), + ), + child: Text( + S.of(context).bianjigerenziliao, + style: TextStyle( + fontSize: 12.sp, + fontWeight: MyFontWeight.regular, + color: Color(0xFF353535), + ), + ), + ), + ) + ], + ), + )); } Widget dynamicList() { return Container( - child: (articles == null || articles.length == 0)? NoDataView( - src: "assets/image/dong_tai.webp", - isShowBtn: false, - text: "目前暂无发布动态,要把开心的事讲出来哦~", - fontSize: 16.sp, - margin: EdgeInsets.only(left: 60.w,right: 60.w), - ):ListView.builder( - physics: NeverScrollableScrollPhysics(), - shrinkWrap: true, - itemBuilder: (context, position) { - return InkWell( - child: CommunityDynamic( - articles[position], - memberId == "0" ? 1 : 0, - exitFull: () { - setState(() { - _onRefresh(); - }); - }, - removalDynamic: () { - setState(() { - _onRefresh(); - }); + child: (articles == null || articles.length == 0) + ? NoDataView( + src: "assets/image/dong_tai.webp", + isShowBtn: false, + text: "目前暂无发布动态,要把开心的事讲出来哦~", + fontSize: 16.sp, + margin: EdgeInsets.only(left: 60.w, right: 60.w), + ) + : ListView.builder( + physics: NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemBuilder: (context, position) { + return InkWell( + child: CommunityDynamic( + articles[position], + memberId == "0" ? 1 : 0, + exitFull: () { + // setState(() { + // _onRefresh(); + // }); + }, + removalDynamic: () { + setState(() { + _onRefresh(); + }); + }, + ), + onTap: () { + Navigator.of(context).pushNamed( + '/router/community_details', + arguments: { + "businessId": articles[position].id, + "userId": userId, + }, + ).then((value) { + queryCommunity(articles[position].id); + }); + }, + ); }, + itemCount: articles.length, ), - onTap: () { - Navigator.of(context).pushNamed( - '/router/community_details', - arguments: { - "businessId": articles[position].id, - "userId": userId, - }, - ).then((value) { - _onRefresh(); - }); - }, - ); - }, - itemCount: articles.length, - ), ); } } diff --git a/lib/order/order_view/order_info.dart b/lib/order/order_view/order_info.dart index 388ec949..af52f7ff 100644 --- a/lib/order/order_view/order_info.dart +++ b/lib/order/order_view/order_info.dart @@ -102,6 +102,7 @@ class _OrderInfoView extends State<OrderInfoView> { color: Color(0xFF353535), ), ), + SizedBox(width:10.w), Expanded( child: Text( rightText, diff --git a/lib/store/store_view/shop_goods.dart b/lib/store/store_view/shop_goods.dart index f0213ce0..f9ae09c5 100644 --- a/lib/store/store_view/shop_goods.dart +++ b/lib/store/store_view/shop_goods.dart @@ -142,7 +142,7 @@ class _ShopGoods extends State<ShopGoods> { text: S.of(context).xuanguige, textColor: Colors.white, fontWeight: MyFontWeight.medium, - radius: 11, + radius: 3, backgroup: Color(0xFF32A060), fontSize: 11.sp, padding: EdgeInsets.symmetric(vertical: 5.h), From 329c498eb01214110b59b3d25aecdc9b153ac420 Mon Sep 17 00:00:00 2001 From: fmk <fengmeikan@hotmail.com> Date: Tue, 10 May 2022 17:02:55 +0800 Subject: [PATCH 14/21] =?UTF-8?q?ios=20=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ios/Runner.xcodeproj/project.pbxproj | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 8b522980..e8e3aca3 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -616,7 +616,7 @@ CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = NO; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 92; + CURRENT_PROJECT_VERSION = 93; DEVELOPMENT_TEAM = YF3Q8DVP52; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( @@ -666,7 +666,7 @@ "$(PROJECT_DIR)/baidu", "$(PROJECT_DIR)/Runner/baidu", ); - MARKETING_VERSION = 1.0.92; + MARKETING_VERSION = 1.0.93; ONLY_ACTIVE_ARCH = YES; OTHER_LDFLAGS = ( "$(inherited)", @@ -816,7 +816,7 @@ CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = NO; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 92; + CURRENT_PROJECT_VERSION = 93; DEVELOPMENT_TEAM = YF3Q8DVP52; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( @@ -866,7 +866,7 @@ "$(PROJECT_DIR)/baidu", "$(PROJECT_DIR)/Runner/baidu", ); - MARKETING_VERSION = 1.0.92; + MARKETING_VERSION = 1.0.93; ONLY_ACTIVE_ARCH = YES; OTHER_LDFLAGS = ( "$(inherited)", @@ -907,7 +907,7 @@ CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = NO; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 92; + CURRENT_PROJECT_VERSION = 93; DEVELOPMENT_TEAM = YF3Q8DVP52; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( @@ -957,7 +957,7 @@ "$(PROJECT_DIR)/baidu", "$(PROJECT_DIR)/Runner/baidu", ); - MARKETING_VERSION = 1.0.92; + MARKETING_VERSION = 1.0.93; ONLY_ACTIVE_ARCH = YES; OTHER_LDFLAGS = ( "$(inherited)", From e2fb6c1e4c7dc22a424b7e624025dc8ac0af64bf Mon Sep 17 00:00:00 2001 From: w-R <953969641@qq.com> Date: Tue, 10 May 2022 18:10:13 +0800 Subject: [PATCH 15/21] =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E4=B8=AD=E5=BF=83?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/mine/personal_page.dart | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/mine/personal_page.dart b/lib/mine/personal_page.dart index 6c150478..d7b3fe14 100644 --- a/lib/mine/personal_page.dart +++ b/lib/mine/personal_page.dart @@ -134,9 +134,9 @@ class _PersonalPage extends State<PersonalPage> with WidgetsBindingObserver { refreshController.loadFailed(); } }); - if(searchKey == null) { - refreshController.refreshCompleted(); - refreshController.loadComplete(); + if(searchKey == null){ + refreshController.refreshCompleted(); + refreshController.loadComplete(); } if (baseData.isSuccess) { if(searchKey != null){ @@ -640,7 +640,7 @@ class _PersonalPage extends State<PersonalPage> with WidgetsBindingObserver { fontWeight: MyFontWeight.semi_bold, ), )), - dynamicList(), + dynamicList() ], ), ), From 79410fb3d89f9fb9c661469e47b0573bde9bfebf Mon Sep 17 00:00:00 2001 From: w-R <953969641@qq.com> Date: Tue, 10 May 2022 18:48:24 +0800 Subject: [PATCH 16/21] 1.0.1 --- lib/setting/about_page.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/setting/about_page.dart b/lib/setting/about_page.dart index ac8b9989..0d88b5f0 100644 --- a/lib/setting/about_page.dart +++ b/lib/setting/about_page.dart @@ -19,7 +19,7 @@ class AboutPage extends StatefulWidget { } class _AboutPage extends State<AboutPage> { - String version = "1.0.0"; + String version = "1.0.1"; @override void initState() { From 45146ba24a6b22b3edcae39886a865510fb7949f Mon Sep 17 00:00:00 2001 From: w-R <953969641@qq.com> Date: Wed, 11 May 2022 10:06:07 +0800 Subject: [PATCH 17/21] =?UTF-8?q?=E6=9B=B4=E6=94=B91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/main_page.dart | 5 +++-- pubspec.yaml | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/main_page.dart b/lib/main_page.dart index f821f904..c7b5fc0b 100644 --- a/lib/main_page.dart +++ b/lib/main_page.dart @@ -113,8 +113,8 @@ class _MainPage extends State<MainPage> with WidgetsBindingObserver { },invite:invite,interviewCouponList:interviewCouponList,firstLoginCouponList:firstLoginCouponList,), // MainHomePage(), UnionPage(), - // (Theme.of(context).platform == TargetPlatform.android) ? OrderPage() :CommunityPage(), CommunityPage(), + // OrderPage(), MinePage(), ]; @@ -358,7 +358,8 @@ class _MainPage extends State<MainPage> with WidgetsBindingObserver { // bottomNavigationBigItem(S.of(context).pinpai, 0), bottomNavigationItem(S.of(context).main_menu1, 0), bottomNavigationItem(S.of(context).main_menu2, 1), - bottomNavigationItem(S.of(context).main_menu3 , 2), + // bottomNavigationItem(S.of(context).main_menu3 , 2) + bottomNavigationItem("订单", 2), bottomNavigationItem(S.of(context).main_menu4, 3), ], ), diff --git a/pubspec.yaml b/pubspec.yaml index 3b0c5729..67e729b8 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -3,7 +3,7 @@ description: 一心回乡. publish_to: 'none' # Remove this line if you wish to publish to pub.dev -version: 1.0.0+1 +version: 1.0.1+2 environment: sdk: ">=2.7.0 <3.0.0" From da91143fde361b86de8229b7a5a93fca12be4558 Mon Sep 17 00:00:00 2001 From: w-R <953969641@qq.com> Date: Thu, 12 May 2022 16:44:22 +0800 Subject: [PATCH 18/21] =?UTF-8?q?app=E8=87=AA=E5=8A=A8=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../community_view/community_dynamic.dart | 47 +++---- lib/main_page.dart | 49 ++++++- lib/retrofit/data/app_update.dart | 43 ++++++ lib/retrofit/min_api.dart | 2 +- lib/retrofit/retrofit_api.dart | 7 +- lib/retrofit/retrofit_api.g.dart | 21 +++ lib/setting/about_page.dart | 13 -- lib/store/store_view/product_sku.dart | 126 ++++++++++-------- lib/view_widget/update_dialog.dart | 37 ++--- 9 files changed, 232 insertions(+), 113 deletions(-) create mode 100644 lib/retrofit/data/app_update.dart diff --git a/lib/community/community_view/community_dynamic.dart b/lib/community/community_view/community_dynamic.dart index 83a235dc..262946a7 100644 --- a/lib/community/community_view/community_dynamic.dart +++ b/lib/community/community_view/community_dynamic.dart @@ -317,29 +317,30 @@ class _CommunityDynamic extends State<CommunityDynamic> { height:8.h, ), if (widget.article.location != "") - Row( - children: [ - Icon( - Icons.place, - size: 16, - color: Color(0xFFB3B2B2), - ), - SizedBox( - width: 2, - ), - Expanded( - child: Text( - widget?.article?.location ?? "", - overflow: TextOverflow.ellipsis, - maxLines: 1, - style: TextStyle( - fontSize: 12.sp, - fontWeight: MyFontWeight.medium, - color: Color(0xFFB3B2B2), - ), - )), - ], - ), + Padding(padding:EdgeInsets.only(bottom:7), + child: Row( + children: [ + Icon( + Icons.place, + size: 16, + color: Color(0xFFB3B2B2), + ), + SizedBox( + width: 2, + ), + Expanded( + child: Text( + widget?.article?.location ?? "", + overflow: TextOverflow.ellipsis, + maxLines: 1, + style: TextStyle( + fontSize: 12.sp, + fontWeight: MyFontWeight.medium, + color: Color(0xFFB3B2B2), + ), + )), + ], + ),), if (!widget.isDetails) SizedBox( height: 5.h, diff --git a/lib/main_page.dart b/lib/main_page.dart index c7b5fc0b..58acba26 100644 --- a/lib/main_page.dart +++ b/lib/main_page.dart @@ -5,12 +5,14 @@ import 'package:flutter/material.dart'; import 'package:flutter_baidu_mapapi_base/flutter_baidu_mapapi_base.dart'; import 'package:flutter_bmflocation/bdmap_location_flutter_plugin.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart'; +import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:huixiang/community/community_page.dart'; import 'package:huixiang/generated/l10n.dart'; import 'package:huixiang/home/home_page.dart'; import 'package:huixiang/main.dart'; import 'package:huixiang/mine/mine_page.dart'; +import 'package:huixiang/retrofit/data/app_update.dart'; import 'package:huixiang/retrofit/data/base_data.dart'; import 'package:huixiang/retrofit/data/user_info.dart'; import 'package:huixiang/retrofit/retrofit_api.dart'; @@ -20,6 +22,7 @@ import 'package:huixiang/utils/bridge.dart'; import 'package:huixiang/utils/event_type.dart'; import 'package:huixiang/utils/font_weight.dart'; import 'package:huixiang/utils/native_event_handler.dart'; +import 'package:huixiang/view_widget/update_dialog.dart'; import 'package:permission_handler/permission_handler.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:sharesdk_plugin/sharesdk_interface.dart'; @@ -46,6 +49,10 @@ class _MainPage extends State<MainPage> with WidgetsBindingObserver { List<String> icons; final GlobalKey homePageKey = GlobalKey(); // List<String> iconn; + ApiService apiService; + String version = "1.0.1"; + AppUpdate appUpdate; + @override void dispose() { @@ -138,6 +145,8 @@ class _MainPage extends State<MainPage> with WidgetsBindingObserver { }); queryUserInfo(); + + appAutoUpdate(); } final XgFlutterPlugin xgFlutterPlugin = XgFlutterPlugin(); initSdk() async { @@ -316,6 +325,31 @@ class _MainPage extends State<MainPage> with WidgetsBindingObserver { } } + ///app自动更新 + appAutoUpdate() async { + if (apiService == null) { + SharedPreferences value = await SharedPreferences.getInstance(); + apiService = ApiService( + Dio(), + context: context, + token: value.getString("token"), + showLoading: true + ); + } + BaseData<AppUpdate> baseData = await apiService.appVersion().catchError((onError) {}); + if (baseData != null && baseData.isSuccess) { + if(version != appUpdate?.appLastVersion ?? ""){ + showAlertDialog(version); + }else{ + return; + } + }else{ + SmartDialog.showToast(baseData.msg, + alignment: Alignment.center); + Navigator.of(context).pop(); + } + } + final PageController pageController = PageController(initialPage: 0); @override @@ -358,8 +392,8 @@ class _MainPage extends State<MainPage> with WidgetsBindingObserver { // bottomNavigationBigItem(S.of(context).pinpai, 0), bottomNavigationItem(S.of(context).main_menu1, 0), bottomNavigationItem(S.of(context).main_menu2, 1), - // bottomNavigationItem(S.of(context).main_menu3 , 2) - bottomNavigationItem("订单", 2), + bottomNavigationItem(S.of(context).main_menu3 , 2), + // bottomNavigationItem("订单", 2), bottomNavigationItem(S.of(context).main_menu4, 3), ], ), @@ -441,6 +475,17 @@ class _MainPage extends State<MainPage> with WidgetsBindingObserver { ); } + ///app更新弹窗 + showAlertDialog(version) { + //显示对话框 + showDialog( + context: context, + builder: (BuildContext context) { + return UpdateDialog(version,appUpdate); + }, + ); + } + // Widget bottomNavigationBigItem(text, index) { // var isSelected = index == clickIndex; diff --git a/lib/retrofit/data/app_update.dart b/lib/retrofit/data/app_update.dart new file mode 100644 index 00000000..cac55b14 --- /dev/null +++ b/lib/retrofit/data/app_update.dart @@ -0,0 +1,43 @@ +/// appLastVersion : "1.0.0" +/// appLastVersionUrl : "" +/// appLastVersionUp : "1.0.0" +/// appLastVersionExplain : "优化更新" + +class AppUpdate { + AppUpdate({ + String appLastVersion, + String appLastVersionUrl, + String appLastVersionUp, + String appLastVersionExplain,}){ + _appLastVersion = appLastVersion; + _appLastVersionUrl = appLastVersionUrl; + _appLastVersionUp = appLastVersionUp; + _appLastVersionExplain = appLastVersionExplain; +} + + AppUpdate.fromJson(dynamic json) { + _appLastVersion = json['appLastVersion']; + _appLastVersionUrl = json['appLastVersionUrl']; + _appLastVersionUp = json['appLastVersionUp']; + _appLastVersionExplain = json['appLastVersionExplain']; + } + String _appLastVersion; + String _appLastVersionUrl; + String _appLastVersionUp; + String _appLastVersionExplain; + + String get appLastVersion => _appLastVersion; + String get appLastVersionUrl => _appLastVersionUrl; + String get appLastVersionUp => _appLastVersionUp; + String get appLastVersionExplain => _appLastVersionExplain; + + Map<String, dynamic> toJson() { + final map = <String, dynamic>{}; + map['appLastVersion'] = _appLastVersion; + map['appLastVersionUrl'] = _appLastVersionUrl; + map['appLastVersionUp'] = _appLastVersionUp; + map['appLastVersionExplain'] = _appLastVersionExplain; + return map; + } + +} \ No newline at end of file diff --git a/lib/retrofit/min_api.dart b/lib/retrofit/min_api.dart index f8e85a64..3154e15d 100644 --- a/lib/retrofit/min_api.dart +++ b/lib/retrofit/min_api.dart @@ -32,7 +32,7 @@ part 'min_api.g.dart'; // const base_url = "http://192.168.10.37:8766/app/"; -const localBaseUrl = "https://pos.api.lotus-wallet.com/app/";///本地 +const localBaseUrl = "http://192.168.10.236:8766/app/";///本地 const serviceBaseUrl = "https://pos.api.lotus-wallet.com/app/";///线上 diff --git a/lib/retrofit/retrofit_api.dart b/lib/retrofit/retrofit_api.dart index 1f7b8706..75508c21 100644 --- a/lib/retrofit/retrofit_api.dart +++ b/lib/retrofit/retrofit_api.dart @@ -21,6 +21,7 @@ import 'package:retrofit/retrofit.dart'; import 'data/achievement_detail_list.dart'; import 'data/activity_pos.dart'; import 'data/address.dart'; +import 'data/app_update.dart'; import 'data/banner.dart'; import 'data/brand_data.dart'; import 'data/category_select_list.dart'; @@ -68,7 +69,7 @@ part 'retrofit_api.g.dart'; // const base_url = "http://192.168.10.132:8766/app/";///詹云久 -const localBaseUrl = "https://pos.platform.lotus-wallet.com/app/";///本地 +const localBaseUrl = "http://192.168.10.236:8766/app/";///本地 const serviceBaseUrl = "https://pos.platform.lotus-wallet.com/app/";///线上 @RestApi(baseUrl: localBaseUrl) @@ -518,4 +519,8 @@ abstract class ApiService { @POST("/information/complaint") Future<BaseData> complaint(@Body() Map<String, dynamic> param); + ///app自动更新 + @GET("/home/version") + Future<BaseData<AppUpdate>> appVersion(); + } diff --git a/lib/retrofit/retrofit_api.g.dart b/lib/retrofit/retrofit_api.g.dart index 8d41ae6c..ac8c7fa4 100644 --- a/lib/retrofit/retrofit_api.g.dart +++ b/lib/retrofit/retrofit_api.g.dart @@ -1958,4 +1958,25 @@ class _ApiService implements ApiService { return value; } + @override + Future<BaseData<AppUpdate>> appVersion() async { + const _extra = <String, dynamic>{}; + final queryParameters = <String, dynamic>{}; + final _data = <String, dynamic>{}; + final _result = await _dio.request<Map<String, dynamic>>( + '/home/version', + queryParameters: queryParameters, + options: RequestOptions( + method: 'GET', + headers: <String, dynamic>{}, + extra: _extra, + baseUrl: baseUrl), + data: _data); + final value = BaseData<AppUpdate>.fromJson( + _result.data, + (json) => AppUpdate.fromJson(json), + ); + return value; + } + } diff --git a/lib/setting/about_page.dart b/lib/setting/about_page.dart index 0d88b5f0..80d31310 100644 --- a/lib/setting/about_page.dart +++ b/lib/setting/about_page.dart @@ -89,7 +89,6 @@ class _AboutPage extends State<AboutPage> { onTap: () { Navigator.of(context) .pushNamed('/router/help_feedback_page'); - // showAlertDialog(version); }, child: textItem(S.of(context).shiyongbangzhu), ), @@ -103,7 +102,6 @@ class _AboutPage extends State<AboutPage> { alignment: Alignment.center); } }); - // showAlertDialog(version); }, ), GestureDetector( @@ -279,15 +277,4 @@ class _AboutPage extends State<AboutPage> { ), ); } - - ///app更新弹窗 - showAlertDialog(version) { - //显示对话框 - showDialog( - context: context, - builder: (BuildContext context) { - return UpdateDialog(version); - }, - ); - } } diff --git a/lib/store/store_view/product_sku.dart b/lib/store/store_view/product_sku.dart index 0a6ed333..3312254f 100644 --- a/lib/store/store_view/product_sku.dart +++ b/lib/store/store_view/product_sku.dart @@ -198,10 +198,9 @@ class _ProductSku extends State<ProductSku> { padding: EdgeInsets.zero, itemBuilder: (context, position) { return attrItem( - (index) { + (attrValue) { state(() { - selectSkus[position] = widget.miNiDetail - .attrList[position].attrValueList[index].attrValue; + selectSkus[position] = attrValue; buildCount(); }); }, @@ -301,7 +300,7 @@ class _ProductSku extends State<ProductSku> { crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( - padding: EdgeInsets.only(top: 24, bottom: 16), + padding: EdgeInsets.only(top: 16, bottom: 16), child: Text( attrListBean.attrName, style: TextStyle( @@ -311,7 +310,8 @@ class _ProductSku extends State<ProductSku> { ), ), ), - sweetnessStore(fc, attrListBean.attrValueList, position), + sweetnessStore(fc,attrListBean.attrValueList, position), + // sweetnessStore(fc, attrListBean.attrValueList, position), ], ); else { @@ -319,62 +319,74 @@ class _ProductSku extends State<ProductSku> { } } - Widget sweetnessStore(Function fc, List<AttrValueListBean> arrays, position) { - return GridView.builder( - itemCount: arrays.length, - shrinkWrap: true, - padding: EdgeInsets.zero, - physics: NeverScrollableScrollPhysics(), - gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( - //一行的Widget数量 - crossAxisCount: 4, - //水平子Widget之间间距 - crossAxisSpacing: 6.w, - //垂直子Widget之间间距 - mainAxisSpacing: 12.w, - //垂直单个子Widget之间间距 - childAspectRatio: 3 / 1, - ), - itemBuilder: (context, index) { - return GestureDetector( - onTap: () { - fc(index); - }, - child: sweetnessItem( - arrays[index].attrValue, - (arrays[index].attrValue == selectSkus[position]) ?? false, - ), - ); - }, - ); + // Widget sweetnessStore(Function fc, List<AttrValueListBean> arrays, position) { + // return GridView.builder( + // itemCount: arrays.length, + // shrinkWrap: true, + // padding: EdgeInsets.zero, + // physics: NeverScrollableScrollPhysics(), + // gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + // //一行的Widget数量 + // crossAxisCount: 4, + // //水平子Widget之间间距 + // crossAxisSpacing: 6.w, + // //垂直子Widget之间间距 + // mainAxisSpacing: 12.w, + // //垂直单个子Widget之间间距 + // childAspectRatio: 3 / 1, + // ), + // itemBuilder: (context, index) { + // return GestureDetector( + // onTap: () { + // fc(index); + // }, + // child: sweetnessItem( + // arrays[index].attrValue, + // (arrays[index].attrValue == selectSkus[position]) ?? false, + // ), + // ); + // }, + // ); + // } + + Widget sweetnessStore(Function fc,List<AttrValueListBean> arrays, position){ + return Wrap( + runSpacing: 10.0, + spacing: 10.0, + children: arrays.take(arrays.length).map<Widget>((AttrValueListBean tag) { + return GestureDetector( + onTap: () { + fc(tag.attrValue); + }, + child:sweetnessItem( + tag.attrValue, + (tag.attrValue == selectSkus[position]) ?? false, + )); + }).toList()); } Widget sweetnessItem(String name, bool isCheck) { return Container( - child: Row( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Container( - width: 70.w, - height:30.h, - alignment: Alignment.center, - decoration: BoxDecoration( - color: !isCheck ? Color(0xFFE5E5E5) : Color(0xFF32A060), - borderRadius: BorderRadius.all(Radius.circular(4)), - ), - child:Text( - name, - overflow: TextOverflow.ellipsis, - style: TextStyle( - color:!isCheck ? Color(0xFF727272) : Colors.white, - fontSize: 12.sp, - fontWeight: MyFontWeight.regular, - ), - ), + padding: const EdgeInsets.symmetric(vertical:5.0,horizontal: 12.0), + decoration: BoxDecoration( + color: !isCheck ? Color(0xFFF2F2F2) : Color(0xFFF0FAF4), + border: Border.all( + width: !isCheck ? 0:1, + color: !isCheck ? Color(0xFFF2F2F2):Color(0xFF32A060), + style: BorderStyle.solid, ), - ], - ), - ); + borderRadius: const BorderRadius.all( + Radius.circular(4.0), + ), + ), + child: Text( + name, + overflow: TextOverflow.ellipsis, + style: TextStyle( + color:!isCheck ? Color(0xFF4D4D4D) : Color(0xFF32A060), + fontSize: 14.sp, + fontWeight: MyFontWeight.regular, + ), + )); } } diff --git a/lib/view_widget/update_dialog.dart b/lib/view_widget/update_dialog.dart index 95f58d36..2d590c1d 100644 --- a/lib/view_widget/update_dialog.dart +++ b/lib/view_widget/update_dialog.dart @@ -2,14 +2,17 @@ import 'dart:io'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter/material.dart'; +import 'package:huixiang/retrofit/data/app_update.dart'; import 'package:huixiang/utils/bridge.dart'; import 'package:huixiang/utils/font_weight.dart'; import 'package:path_provider/path_provider.dart'; +import 'package:url_launcher/url_launcher.dart'; class UpdateDialog extends StatefulWidget { final String version; + final AppUpdate appUpdate; - UpdateDialog(this.version); + UpdateDialog(this.version,this.appUpdate); @override State<StatefulWidget> createState() { @@ -42,17 +45,18 @@ class _UpdateDialog extends State<UpdateDialog> { Text( "检测到新版本 v${widget.version}", style: TextStyle( - fontSize: 18.sp, + fontSize: 17.sp, fontWeight: MyFontWeight.semi_bold, - color: Color(0xFF353535), + color: Color(0xFF000000), ), ), + SizedBox(height: 12,), Text( "是否需要更新到最新版本?", style: TextStyle( - fontSize: 14.sp, + fontSize: 17.sp, fontWeight: MyFontWeight.regular, - color: Color(0xFF353535), + color: Color(0xFF333333), ), ), ], @@ -80,8 +84,8 @@ class _UpdateDialog extends State<UpdateDialog> { "下次再说", style: TextStyle( fontSize: 17.sp, - fontWeight: MyFontWeight.medium, - color: Color(0xFF353535), + fontWeight: MyFontWeight.semi_bold, + color: Color(0xFF8C8C8C), ), ), ), @@ -95,7 +99,8 @@ class _UpdateDialog extends State<UpdateDialog> { Expanded( child: InkWell( onTap: () { - Bridge.toAppStore().then((value) { + (Theme.of(context).platform == TargetPlatform.android) ? + androidUpdate():Bridge.toAppStore().then((value) { }); Navigator.of(context).pop(); }, @@ -107,7 +112,7 @@ class _UpdateDialog extends State<UpdateDialog> { "立即更新", style: TextStyle( fontSize: 17.sp, - fontWeight: MyFontWeight.medium, + fontWeight: MyFontWeight.semi_bold, color: Color(0xFF32A060), ), ), @@ -125,13 +130,13 @@ class _UpdateDialog extends State<UpdateDialog> { ); } - - Future<String> _findLocalPath(BuildContext context) async { - final directory = Theme.of(context).platform == TargetPlatform.android - ? await getExternalStorageDirectory() - : await getApplicationDocumentsDirectory(); - return directory.path; + androidUpdate() async { + String url = "http://application.lotus-wallet.com/huixaing?release_id=627cadff23389f2fe6d57cb1"; + if (await canLaunch(url)) { + await launch(url); + } else { + throw 'Could not launch $url'; + } } - } From b59a18e585b999dd4abcdb55c50282171886c031 Mon Sep 17 00:00:00 2001 From: fmk <fengmeikan@hotmail.com> Date: Thu, 12 May 2022 16:58:25 +0800 Subject: [PATCH 19/21] =?UTF-8?q?ios=20=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/retrofit/min_api.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/retrofit/min_api.dart b/lib/retrofit/min_api.dart index f8e85a64..83315484 100644 --- a/lib/retrofit/min_api.dart +++ b/lib/retrofit/min_api.dart @@ -28,9 +28,9 @@ part 'min_api.g.dart'; // const base_url = "http://192.168.10.132:8765/app/";///詹云久 -// const base_url = "http://192.168.10.236:8766/app/"; ///费韬 +// const base_url = "http://192.168.10.236:8765/app/"; ///费韬 -// const base_url = "http://192.168.10.37:8766/app/"; +// const base_url = "http://192.168.10.37:8765/app/"; const localBaseUrl = "https://pos.api.lotus-wallet.com/app/";///本地 const serviceBaseUrl = "https://pos.api.lotus-wallet.com/app/";///线上 From e081231709340454b06320c6e4055a380cdc515b Mon Sep 17 00:00:00 2001 From: w-R <953969641@qq.com> Date: Fri, 13 May 2022 11:19:44 +0800 Subject: [PATCH 20/21] =?UTF-8?q?app=E8=87=AA=E5=8A=A8=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/main_page.dart | 36 ++++++++++++++---------------- lib/retrofit/data/app_update.dart | 15 +++++++++++++ lib/setting/about_page.dart | 2 +- lib/utils/flutter_utils.dart | 13 +++++++++++ lib/view_widget/update_dialog.dart | 17 ++++++++++---- 5 files changed, 59 insertions(+), 24 deletions(-) diff --git a/lib/main_page.dart b/lib/main_page.dart index 58acba26..2fb43dbb 100644 --- a/lib/main_page.dart +++ b/lib/main_page.dart @@ -20,9 +20,11 @@ import 'package:huixiang/union/union_page.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:huixiang/utils/bridge.dart'; import 'package:huixiang/utils/event_type.dart'; +import 'package:huixiang/utils/flutter_utils.dart'; import 'package:huixiang/utils/font_weight.dart'; import 'package:huixiang/utils/native_event_handler.dart'; import 'package:huixiang/view_widget/update_dialog.dart'; +import 'package:package_info/package_info.dart'; import 'package:permission_handler/permission_handler.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:sharesdk_plugin/sharesdk_interface.dart'; @@ -50,8 +52,6 @@ class _MainPage extends State<MainPage> with WidgetsBindingObserver { final GlobalKey homePageKey = GlobalKey(); // List<String> iconn; ApiService apiService; - String version = "1.0.1"; - AppUpdate appUpdate; @override @@ -80,7 +80,6 @@ class _MainPage extends State<MainPage> with WidgetsBindingObserver { void initState() { super.initState(); WidgetsBinding.instance.addObserver(this); - EasyLoading.instance ..indicatorType = EasyLoadingIndicatorType.circle // ..indicatorType = EasyLoadingIndicatorType.wave @@ -327,19 +326,30 @@ class _MainPage extends State<MainPage> with WidgetsBindingObserver { ///app自动更新 appAutoUpdate() async { + SharedPreferences value = await SharedPreferences.getInstance(); if (apiService == null) { - SharedPreferences value = await SharedPreferences.getInstance(); apiService = ApiService( Dio(), context: context, token: value.getString("token"), - showLoading: true ); } + PackageInfo packageInfo = await PackageInfo.fromPlatform(); BaseData<AppUpdate> baseData = await apiService.appVersion().catchError((onError) {}); if (baseData != null && baseData.isSuccess) { - if(version != appUpdate?.appLastVersion ?? ""){ - showAlertDialog(version); + if(AppUtils.versionCompare(packageInfo.version,baseData.data?.appLastVersion) + && AppUtils.versionCompare(value.getString("appLastVersion")??"1.0.0",baseData.data?.appLastVersion)){ + showDialog( + context: context, + barrierDismissible: false, + builder: (BuildContext context) { + return WillPopScope( + child:UpdateDialog(packageInfo.version,baseData.data), + onWillPop: () async { + return Future.value(false); + }); + }, + ); }else{ return; } @@ -475,18 +485,6 @@ class _MainPage extends State<MainPage> with WidgetsBindingObserver { ); } - ///app更新弹窗 - showAlertDialog(version) { - //显示对话框 - showDialog( - context: context, - builder: (BuildContext context) { - return UpdateDialog(version,appUpdate); - }, - ); - } - - // Widget bottomNavigationBigItem(text, index) { // var isSelected = index == clickIndex; // return Expanded( diff --git a/lib/retrofit/data/app_update.dart b/lib/retrofit/data/app_update.dart index cac55b14..2185a187 100644 --- a/lib/retrofit/data/app_update.dart +++ b/lib/retrofit/data/app_update.dart @@ -31,6 +31,10 @@ class AppUpdate { String get appLastVersionUp => _appLastVersionUp; String get appLastVersionExplain => _appLastVersionExplain; + set appLastVersion(String value) { + _appLastVersion = value; + } + Map<String, dynamic> toJson() { final map = <String, dynamic>{}; map['appLastVersion'] = _appLastVersion; @@ -40,4 +44,15 @@ class AppUpdate { return map; } + set appLastVersionUrl(String value) { + _appLastVersionUrl = value; + } + + set appLastVersionUp(String value) { + _appLastVersionUp = value; + } + + set appLastVersionExplain(String value) { + _appLastVersionExplain = value; + } } \ No newline at end of file diff --git a/lib/setting/about_page.dart b/lib/setting/about_page.dart index 80d31310..20514dcc 100644 --- a/lib/setting/about_page.dart +++ b/lib/setting/about_page.dart @@ -19,7 +19,7 @@ class AboutPage extends StatefulWidget { } class _AboutPage extends State<AboutPage> { - String version = "1.0.1"; + String version = ""; @override void initState() { diff --git a/lib/utils/flutter_utils.dart b/lib/utils/flutter_utils.dart index 47711755..12273ff4 100644 --- a/lib/utils/flutter_utils.dart +++ b/lib/utils/flutter_utils.dart @@ -16,6 +16,19 @@ class AppUtils { return "${numberFormat.format(mi / 1000)}"; } + ///版本号 + static bool versionCompare(String localVersion,String serverVersion){ + try{ + var localVersionArr = localVersion.split("."); + var serverVersionArr = serverVersion.split("."); + if((int.tryParse(localVersionArr[0]) < int.tryParse(serverVersionArr[0])) + || (int.tryParse(localVersionArr[1]) < int.tryParse(serverVersionArr[1])) + || (int.tryParse(localVersionArr[2]) < int.tryParse(serverVersionArr[2]))) + return true; + }catch(ex){ } + return false; + } + static String trimEnd(String resString,String char){ while(resString.endsWith(char)){ resString = resString.substring(0,resString.length - 1); diff --git a/lib/view_widget/update_dialog.dart b/lib/view_widget/update_dialog.dart index 2d590c1d..fa42f586 100644 --- a/lib/view_widget/update_dialog.dart +++ b/lib/view_widget/update_dialog.dart @@ -4,8 +4,10 @@ import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter/material.dart'; import 'package:huixiang/retrofit/data/app_update.dart'; import 'package:huixiang/utils/bridge.dart'; +import 'package:huixiang/utils/flutter_utils.dart'; import 'package:huixiang/utils/font_weight.dart'; import 'package:path_provider/path_provider.dart'; +import 'package:shared_preferences/shared_preferences.dart'; import 'package:url_launcher/url_launcher.dart'; class UpdateDialog extends StatefulWidget { @@ -43,7 +45,7 @@ class _UpdateDialog extends State<UpdateDialog> { child: Column( children: [ Text( - "检测到新版本 v${widget.version}", + "检测到新版本 v${widget.appUpdate.appLastVersion}", style: TextStyle( fontSize: 17.sp, fontWeight: MyFontWeight.semi_bold, @@ -71,10 +73,11 @@ class _UpdateDialog extends State<UpdateDialog> { child: Row( mainAxisSize: MainAxisSize.max, children: [ + if(!AppUtils.versionCompare(widget.version,widget.appUpdate.appLastVersionUp)) Expanded( child: InkWell( - onTap: () { - Navigator.of(context).pop(); + onTap:() { + doNotUpdate(); }, child: Container( width: double.infinity, @@ -102,7 +105,7 @@ class _UpdateDialog extends State<UpdateDialog> { (Theme.of(context).platform == TargetPlatform.android) ? androidUpdate():Bridge.toAppStore().then((value) { }); - Navigator.of(context).pop(); + // Navigator.of(context).pop(); }, child: Container( width: double.infinity, @@ -130,6 +133,12 @@ class _UpdateDialog extends State<UpdateDialog> { ); } + doNotUpdate() async { + SharedPreferences value = await SharedPreferences.getInstance(); + value.setString("appLastVersion", widget.appUpdate.appLastVersion); + Navigator.of(context).pop(); + } + androidUpdate() async { String url = "http://application.lotus-wallet.com/huixaing?release_id=627cadff23389f2fe6d57cb1"; if (await canLaunch(url)) { From 66763e0e6a3d6698b51999e20bef58b619e12739 Mon Sep 17 00:00:00 2001 From: w-R <953969641@qq.com> Date: Fri, 13 May 2022 11:56:39 +0800 Subject: [PATCH 21/21] =?UTF-8?q?app=E8=87=AA=E5=8A=A8=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/main_page.dart | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/main_page.dart b/lib/main_page.dart index 2fb43dbb..27dd569c 100644 --- a/lib/main_page.dart +++ b/lib/main_page.dart @@ -337,6 +337,8 @@ class _MainPage extends State<MainPage> with WidgetsBindingObserver { PackageInfo packageInfo = await PackageInfo.fromPlatform(); BaseData<AppUpdate> baseData = await apiService.appVersion().catchError((onError) {}); if (baseData != null && baseData.isSuccess) { + baseData.data.appLastVersion = "1.0.4"; + baseData.data.appLastVersionUp = "1.0.1"; if(AppUtils.versionCompare(packageInfo.version,baseData.data?.appLastVersion) && AppUtils.versionCompare(value.getString("appLastVersion")??"1.0.0",baseData.data?.appLastVersion)){ showDialog(