From 6c5f3bfd4761dd7f6383ab57b3ecfc92d2f0520e Mon Sep 17 00:00:00 2001 From: YangYuhao Date: Mon, 17 Jul 2023 14:37:28 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E6=94=AF=E4=BB=98=E5=AE=9D?= =?UTF-8?q?=E6=94=AF=E4=BB=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- circle_app/.gitignore | 1 + .../assets/images/mine/icon_cooperate_ali.png | Bin 0 -> 2726 bytes .../assets/images/mine/icon_cooperate_wx.png | Bin 0 -> 2388 bytes .../images/mine/icon_pay_is_no_select.png | Bin 0 -> 2648 bytes .../assets/images/mine/icon_pay_select.png | Bin 0 -> 2044 bytes .../images/mine/icon_recommend_pay_way.png | Bin 0 -> 3494 bytes .../assets/images/mine/icon_yean_vip.png | Bin 0 -> 10137 bytes circle_app/lib/app/account/view.dart | 16 +- circle_app/lib/app/blacklist/view.dart | 188 +- circle_app/lib/app/call_out/logic.dart | 11 +- circle_app/lib/app/call_out/view.dart | 442 +++-- .../app/circle/widgets/info_list_view.dart | 102 +- circle_app/lib/app/help/view.dart | 12 +- circle_app/lib/app/home/view.dart | 11 +- circle_app/lib/app/login/login/logic.dart | 1 + circle_app/lib/app/login/login/view.dart | 5 +- circle_app/lib/app/minefragment/logic.dart | 6 +- circle_app/lib/app/minefragment/view.dart | 42 +- circle_app/lib/app/report/view.dart | 32 +- circle_app/lib/app/userinfo/logic.dart | 24 +- circle_app/lib/app/userinfo/view.dart | 4 +- .../app/userinfo/widgets/home_call_out.dart | 23 +- .../lib/common/Widgets/base_tip_widget.dart | 315 +++- .../common/Widgets/open_vip_tip/logic.dart | 135 ++ .../lib/common/Widgets/open_vip_tip/view.dart | 200 +- circle_app/lib/network/api.dart | 18 + circle_app/lib/network/dio_manager.dart | 6 +- circle_app/lib/util/PaymentUtils.dart | 32 + circle_app/lib/view/ExitAppConfirmation.dart | 40 + circle_app/lib/view/hometab/binding.dart | 10 - circle_app/lib/view/hometab/logic.dart | 7 - circle_app/lib/view/hometab/state.dart | 5 - circle_app/lib/view/hometab/view.dart | 51 - .../Flutter/GeneratedPluginRegistrant.swift | 4 + circle_app/pubspec.lock | 1614 ++++++++++++++++- circle_app/pubspec.yaml | 4 + .../flutter/generated_plugin_registrant.cc | 3 + .../windows/flutter/generated_plugins.cmake | 1 + 38 files changed, 2635 insertions(+), 730 deletions(-) create mode 100644 circle_app/assets/images/mine/icon_cooperate_ali.png create mode 100644 circle_app/assets/images/mine/icon_cooperate_wx.png create mode 100644 circle_app/assets/images/mine/icon_pay_is_no_select.png create mode 100644 circle_app/assets/images/mine/icon_pay_select.png create mode 100644 circle_app/assets/images/mine/icon_recommend_pay_way.png create mode 100644 circle_app/assets/images/mine/icon_yean_vip.png create mode 100644 circle_app/lib/util/PaymentUtils.dart create mode 100644 circle_app/lib/view/ExitAppConfirmation.dart delete mode 100644 circle_app/lib/view/hometab/binding.dart delete mode 100644 circle_app/lib/view/hometab/logic.dart delete mode 100644 circle_app/lib/view/hometab/state.dart delete mode 100644 circle_app/lib/view/hometab/view.dart diff --git a/circle_app/.gitignore b/circle_app/.gitignore index 24476c5..d055298 100644 --- a/circle_app/.gitignore +++ b/circle_app/.gitignore @@ -8,6 +8,7 @@ .buildlog/ .history .svn/ +pubspec.lock migrate_working_dir/ # IntelliJ related diff --git a/circle_app/assets/images/mine/icon_cooperate_ali.png b/circle_app/assets/images/mine/icon_cooperate_ali.png new file mode 100644 index 0000000000000000000000000000000000000000..b0d177e725ee229631716ae74b7f975f401d3315 GIT binary patch literal 2726 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 literal 0 HcmV?d00001 diff --git a/circle_app/assets/images/mine/icon_cooperate_wx.png b/circle_app/assets/images/mine/icon_cooperate_wx.png new file mode 100644 index 0000000000000000000000000000000000000000..69a3e0f5997e17d4a913973bf4c934ecb0becd46 GIT binary patch literal 2388 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 U({=M^)c^nh07*qoM6N<$f@Zj=JOBUy literal 0 HcmV?d00001 diff --git a/circle_app/assets/images/mine/icon_yean_vip.png b/circle_app/assets/images/mine/icon_yean_vip.png new file mode 100644 index 0000000000000000000000000000000000000000..31cf5409e4bf2b8346e9e7913f18db71d08d63cb GIT binary patch literal 10137 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 Hu0mjfwjq7k literal 0 HcmV?d00001 diff --git a/circle_app/lib/app/account/view.dart b/circle_app/lib/app/account/view.dart index f21e975..9780e20 100644 --- a/circle_app/lib/app/account/view.dart +++ b/circle_app/lib/app/account/view.dart @@ -27,7 +27,7 @@ class AccountPage extends StatelessWidget { ), child: Scaffold( backgroundColor: Colors.transparent, - appBar: MyAppBar( + appBar: const MyAppBar( centerTitle: '账号中心', ), body: Scaffold( @@ -68,15 +68,15 @@ class AccountPage extends StatelessWidget { Text( "换绑手机号", style: TextStyle( - color: Color(0xFFF7FAFA), + color: const Color(0xFFF7FAFA), fontSize: 16.0.sp, ), ), - Spacer(), + const Spacer(), Text( logic.photo, style: TextStyle( - color: Color(0xFFB7BECC), + color: const Color(0xFFB7BECC), fontSize: 16.0.sp, ), ), @@ -122,11 +122,11 @@ class AccountPage extends StatelessWidget { Text( "注销账号", style: TextStyle( - color: Color(0xFFF7FAFA), + color: const Color(0xFFF7FAFA), fontSize: 16.0.sp, ), ), - Spacer(), + const Spacer(), Image.asset( getHomeImage("icon_in"), width: 24.0.sp, @@ -273,13 +273,13 @@ class AccountPage extends StatelessWidget { height: 42.sp, decoration: BoxDecoration( borderRadius: BorderRadius.circular(21.0.sp), - color: Color(0xFF21BEAB), + color: const Color(0xFF21BEAB), ), child: Center( child: Text( "退出登录", style: TextStyle( - color: Color(0xFFF7FAFA), + color: const Color(0xFFF7FAFA), fontSize: 16.0.sp, ), ), diff --git a/circle_app/lib/app/blacklist/view.dart b/circle_app/lib/app/blacklist/view.dart index 8b760be..5541c12 100644 --- a/circle_app/lib/app/blacklist/view.dart +++ b/circle_app/lib/app/blacklist/view.dart @@ -1,4 +1,3 @@ -import 'dart:math'; import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; @@ -9,7 +8,6 @@ import '../../components/my_app_bar.dart'; import '../../router/app_routers.dart'; import '../../util/util.dart'; import 'logic.dart'; -import 'package:flutter/material.dart'; import 'package:pull_to_refresh/pull_to_refresh.dart'; class BlacklistPage extends StatelessWidget { @@ -32,10 +30,12 @@ class BlacklistPage extends StatelessWidget { ), child: Scaffold( backgroundColor: Colors.transparent, - appBar: MyAppBar(centerTitle: '黑名单',), + appBar: const MyAppBar(centerTitle: '黑名单',), body: SafeArea( child: logic.isLoad ? loaddingWidget(true) : logic.lists.isEmpty ? noResultWidget() : SmartRefresher( controller: logic.refreshController, + onRefresh: _onRefresh, + onLoading: _onLoading, child: ListView.builder( itemCount: logic.lists.length, @@ -45,8 +45,6 @@ class BlacklistPage extends StatelessWidget { ); }, ), - onRefresh: _onRefresh, - onLoading: _onLoading, ), ),), ); @@ -55,108 +53,106 @@ class BlacklistPage extends StatelessWidget { Widget ListItem(User item) { - return Container( - child: GestureDetector( - onTap: () { - Get.toNamed(AppRoutes.UserInfoActivity, arguments: item.id.toString()); - }, - child: Container( - margin: EdgeInsets.only(bottom: 16), - child: Row( - children: [ - Stack(children: [ - ClipOval( - child: GestureDetector( - onTap: () { - var imgList = []; - imgList.add(item.avatar); - Get.toNamed(AppRoutes.Swiper, arguments: { - 'imaglist': imgList, - 'index': 0 - }); - }, - child: CachedNetworkImage( - imageUrl: item.avatar, - width: 53.sp, - height: 53.sp, - ), + return GestureDetector( + onTap: () { + Get.toNamed(AppRoutes.UserInfoActivity, arguments: item.id.toString()); + }, + child: Container( + margin: const EdgeInsets.only(bottom: 16), + child: Row( + children: [ + Stack(children: [ + ClipOval( + child: GestureDetector( + onTap: () { + var imgList = []; + imgList.add(item.avatar); + Get.toNamed(AppRoutes.Swiper, arguments: { + 'imaglist': imgList, + 'index': 0 + }); + }, + child: CachedNetworkImage( + imageUrl: item.avatar, + width: 53.sp, + height: 53.sp, ), ), - Positioned( - right: 0, - left: 0, - bottom: 0, - - child: item.vip > 0 ? - Image( - image: AssetImage(getBaseImage("vip")), - width: 44.sp, - height: 18.sp, - ) : Container(),) - ],), - SizedBox(width: 10.sp), - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - children: [ - Text( - item.nickname, - style: const TextStyle(color: Colors.white70, - fontSize: 12, - fontWeight: FontWeight.bold), - ), - SizedBox(width: 4.sp), - // SizedBox(height: 8.sp), - _buildInfoRow(item), - // Placeholder image - ], - ), - - SizedBox(height: 8.sp), - Container( - width: 150.sp, - child: Text( - item.signature, - style: TextStyle(fontSize: 12.sp, color: Color(0xFFB7BECC)), - ), - ), - ], ), - // Pla - Spacer(), - GestureDetector(onTap: () { - logic.setBlock(item.id.toString()); - }, - child: Container( - width: 80, - height: 28, - decoration: BoxDecoration( - color: Color(0xFFFF4D7C), - borderRadius: BorderRadius.circular(14), - ), - child: - Center( - child: Text( - "移出黑名单", - style: TextStyle(fontSize: 14, color: Colors.white), + Positioned( + right: 0, + left: 0, + bottom: 0, + + child: item.vip > 0 ? + Image( + image: AssetImage(getBaseImage("vip")), + width: 44.sp, + height: 18.sp, + ) : Container(),) + ],), + SizedBox(width: 10.sp), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Text( + item.nickname, + style: const TextStyle(color: Colors.white70, + fontSize: 12, + fontWeight: FontWeight.bold), ), + SizedBox(width: 4.sp), + // SizedBox(height: 8.sp), + _buildInfoRow(item), + // Placeholder image + ], + ), + + SizedBox(height: 8.sp), + SizedBox( + width: 150.sp, + child: Text( + item.signature, + style: TextStyle(fontSize: 12.sp, color: const Color(0xFFB7BECC)), ), - ),), - ], - ), - ),), - ); + ), + ], + ), + // Pla + const Spacer(), + GestureDetector(onTap: () { + logic.setBlock(item.id.toString()); + }, + child: Container( + width: 80, + height: 28, + decoration: BoxDecoration( + color: const Color(0xFFFF4D7C), + borderRadius: BorderRadius.circular(14), + ), + child: + const Center( + child: Text( + "移出黑名单", + style: TextStyle(fontSize: 14, color: Colors.white), + ), + ), + ),), + ], + ), + ),); } Widget _buildInfoRow(User userInfoBean) { - String ageMsg = getAgeCOntent(userInfoBean!.gender, userInfoBean!.age, - userInfoBean!.role, userInfoBean!.orientation); + String ageMsg = getAgeCOntent(userInfoBean.gender, userInfoBean.age, + userInfoBean.role, userInfoBean.orientation); return Row( children: [ Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular(17), - gradient: LinearGradient( + gradient: const LinearGradient( colors: [ Color.fromRGBO(141, 255, 248, 1.0), Color.fromRGBO(181, 211, 255, 1.0), @@ -169,7 +165,7 @@ class BlacklistPage extends StatelessWidget { top: 2.sp, bottom: 2.sp, left: 10.sp, right: 10.sp), child: Text( ageMsg , - style: TextStyle( + style: const TextStyle( color: Colors.black, fontSize: 10, ), diff --git a/circle_app/lib/app/call_out/logic.dart b/circle_app/lib/app/call_out/logic.dart index 3f42742..62e1da8 100644 --- a/circle_app/lib/app/call_out/logic.dart +++ b/circle_app/lib/app/call_out/logic.dart @@ -74,6 +74,9 @@ class Call_outLogic extends GetxController { quniuData, (quniuData) => QnTokenData.fromJson(quniuData)); quToken = qiniuBean.data!.token.toString(); } + + + showRechargeDialog(){ Get.bottomSheet( Scaffold( @@ -145,15 +148,11 @@ class Call_outLogic extends GetxController { // return; // } showToast(beandata.msg); - var callOutBean = BaseResponse>.fromJson( - data, - (jsonData) => List.from(jsonData), - ); + var callOutBean = BaseResponse>.fromJson(data, (jsonData) => List.from(jsonData),); textEditingController.text = filterSensitiveWords(textEditingController.text, callOutBean.data!); - print( - filterSensitiveWords(textEditingController.text, callOutBean.data!)); + print(filterSensitiveWords(textEditingController.text, callOutBean.data!)); update(); } else if (beandata.code == 30505) { var callOutBean = BaseResponse.fromJson( diff --git a/circle_app/lib/app/call_out/view.dart b/circle_app/lib/app/call_out/view.dart index 5ee8abb..6c0f57b 100644 --- a/circle_app/lib/app/call_out/view.dart +++ b/circle_app/lib/app/call_out/view.dart @@ -6,7 +6,6 @@ import 'package:get/get.dart'; import 'package:video_player/video_player.dart'; import '../../router/app_routers.dart'; -import '../circle/widgets/video_item.dart'; import 'logic.dart'; class Call_outPage extends StatelessWidget { @@ -46,182 +45,180 @@ class Call_outPage extends StatelessWidget { ), body: SafeArea( child: GetBuilder(builder: (Call_outLogic controller) { - return Container( - child: Column( - children: [ - GestureDetector( - behavior: HitTestBehavior.opaque, - onTap: () async { - logic.startSelectCircleActivity(); - }, - child: Container( - height: 45.sp, - padding: EdgeInsets.only(left: 17.sp, right: 17.sp), - child: Row( - children: [ - Text( - '选择圈子:', - style: TextStyle( - color: Colors.white, fontSize: 16.sp), - ), - Expanded(child: Container()), - logic.circleName == '' - ? Container() - : Container( - padding: EdgeInsets.only( - left: 7.sp, right: 7.sp), - height: 21.sp, - alignment: Alignment.center, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular( - 21 * 0.5.sp), - gradient: const LinearGradient( - begin: Alignment.centerLeft, - end: Alignment.centerRight, - colors: [ - Color(0xff0AFCFF), - Color(0xffD739EA) - ])), - child: Text( - logic.circleName ?? '', - style: TextStyle( - color: Colors.white, - fontSize: 12.sp), - ), - ), - Image.asset( - getHomeImage('icon_in'), - width: 24.sp, - ), - ], - ), - ), - ), - Image.asset( - getCircleImage('line'), - width: Get.width, - fit: BoxFit.fill, - ), - Expanded( - child: Container( - padding: EdgeInsets.only(top: 15.sp), - child: Stack( - children: [ - Container( - height: 200.sp, - child: TextField( - controller: controller.textEditingController, - onChanged: (value) { - controller.update(); - }, - style: TextStyle( - color: Colors.white, fontSize: 14.0.sp), - maxLines: 32, - maxLength: 200, - decoration: InputDecoration( - hintStyle: TextStyle( - color: Color.fromRGBO( - 255, 255, 255, 0.6), - fontSize: 14.sp), - hintText: '请输入...(左下角上传图片或视频哦)', - border: InputBorder.none, - contentPadding: EdgeInsets.only( - left: 17.sp, right: 17.sp), - counter: Text('')), - ), - ), - Positioned( - right: 15.sp, - top: 190.sp, - child: Text( - '${controller.textEditingController.text.length}/200', - style: TextStyle( - color: Colors.white, fontSize: 12.sp), - )), - Container( - margin: EdgeInsets.only(top: 220.sp), - child: _imageAdapter(controller)), - Container( - margin: EdgeInsets.only(top: 220.sp,left: 15.sp,right: 15.sp), - - child:_showVideo(controller) ,) - - ], - ), - )), - Container( - height: 60.sp, - padding: EdgeInsets.only( - left: 17.sp, right: 17.sp, bottom: 5.sp), + return Column( + children: [ + GestureDetector( + behavior: HitTestBehavior.opaque, + onTap: () async { + logic.startSelectCircleActivity(); + }, + child: Container( + height: 45.sp, + padding: EdgeInsets.only(left: 17.sp, right: 17.sp), child: Row( children: [ - GestureDetector( - onTap: () { - logic.showImg(); - }, - child: Image.asset( - getCircleImage('photo'), - width: 30.sp, - ), + Text( + '选择圈子:', + style: TextStyle( + color: Colors.white, fontSize: 16.sp), ), - const SizedBox( - width: 16, - ), - GestureDetector( - onTap: () { - logic.showVideo(); - }, - child: Image.asset( - getCircleImage('video'), - width: 30.sp, - ), - ), - Expanded( - child: GestureDetector( - onTap: () { - if(controller.vip ==2){ - controller.isCheck = !controller.isCheck; - controller.update(); - }else{ - controller.showRechargeDialog(); - } - - }, - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Image.asset( - getCircleImage(controller.isCheck - ? 'check' - : 'uncheck'), - width: 17.5.sp, - ), - SizedBox( - width: 4.sp, - ), - Text( - '使用至尊喊话', + Expanded(child: Container()), + logic.circleName == '' + ? Container() + : Container( + padding: EdgeInsets.only( + left: 7.sp, right: 7.sp), + height: 21.sp, + alignment: Alignment.center, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular( + 21 * 0.5.sp), + gradient: const LinearGradient( + begin: Alignment.centerLeft, + end: Alignment.centerRight, + colors: [ + Color(0xff0AFCFF), + Color(0xffD739EA) + ])), + child: Text( + logic.circleName, style: TextStyle( color: Colors.white, - fontSize: 16.sp), - ) - ], - ), - ), + fontSize: 12.sp), + ), + ), + Image.asset( + getHomeImage('icon_in'), + width: 24.sp, ), - GestureDetector( - child: Text( - '内容规范', - style: TextStyle( - color: Color(0xff00FFF4), - fontSize: 14.sp), - ), - ) ], ), - ) - ], - ), + ), + ), + Image.asset( + getCircleImage('line'), + width: Get.width, + fit: BoxFit.fill, + ), + Expanded( + child: Container( + padding: EdgeInsets.only(top: 15.sp), + child: Stack( + children: [ + SizedBox( + height: 200.sp, + child: TextField( + controller: controller.textEditingController, + onChanged: (value) { + controller.update(); + }, + style: TextStyle( + color: Colors.white, fontSize: 14.0.sp), + maxLines: 32, + maxLength: 200, + decoration: InputDecoration( + hintStyle: TextStyle( + color: const Color.fromRGBO( + 255, 255, 255, 0.6), + fontSize: 14.sp), + hintText: '请输入...(左下角上传图片或视频哦)', + border: InputBorder.none, + contentPadding: EdgeInsets.only( + left: 17.sp, right: 17.sp), + counter: const Text('')), + ), + ), + Positioned( + right: 15.sp, + top: 190.sp, + child: Text( + '${controller.textEditingController.text.length}/200', + style: TextStyle( + color: Colors.white, fontSize: 12.sp), + )), + Container( + margin: EdgeInsets.only(top: 220.sp), + child: _imageAdapter(controller)), + Container( + margin: EdgeInsets.only(top: 220.sp,left: 15.sp,right: 15.sp), + + child:_showVideo(controller) ,) + + ], + ), + )), + Container( + height: 60.sp, + padding: EdgeInsets.only( + left: 17.sp, right: 17.sp, bottom: 5.sp), + child: Row( + children: [ + GestureDetector( + onTap: () { + logic.showImg(); + }, + child: Image.asset( + getCircleImage('photo'), + width: 30.sp, + ), + ), + const SizedBox( + width: 16, + ), + GestureDetector( + onTap: () { + logic.showVideo(); + }, + child: Image.asset( + getCircleImage('video'), + width: 30.sp, + ), + ), + Expanded( + child: GestureDetector( + onTap: () { + if(controller.vip ==2){ + controller.isCheck = !controller.isCheck; + controller.update(); + }else{ + controller.showRechargeDialog(); + } + + }, + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image.asset( + getCircleImage(controller.isCheck + ? 'check' + : 'uncheck'), + width: 17.5.sp, + ), + SizedBox( + width: 4.sp, + ), + Text( + '使用至尊喊话', + style: TextStyle( + color: Colors.white, + fontSize: 16.sp), + ) + ], + ), + ), + ), + GestureDetector( + child: Text( + '内容规范', + style: TextStyle( + color: const Color(0xff00FFF4), + fontSize: 14.sp), + ), + ) + ], + ), + ) + ], ); }), ), @@ -235,47 +232,44 @@ class Call_outPage extends StatelessWidget { return Container(); } else { return _mixVideo(controller); - - - } } - Widget _maxVideo(Call_outLogic controller){ - return Container( - width:controller.videoPlayerController!.value.size.width < controller.videoPlayerController!.value.size.height ? 9*15.sp : 16*15.sp, - height:controller.videoPlayerController!.value.size.width < controller.videoPlayerController!.value.size.height ? 16*15.sp :9*15.sp, - - child: Stack( - children: [ - ClipRRect( - borderRadius: BorderRadius.circular(6.sp), - child: VideoItemWidget(controller.state.videolist[0])), - // Center(child:controller.videoPlayerController!.value.isPlaying ? Container() : Image(image: AssetImage(getMineImage("icon_play")),width: 30.sp,height: 30.sp,),), - Positioned( - top: 0, - right: 0, - child: GestureDetector( - onTap: () { - // showToast("删除"); - _showDelVideoDialog(Get.context!, controller); - }, - child: Image( - image: AssetImage(getMineImage("icon_img_del")), - width: 20.sp, - height: 20.sp, - ), - )) - - // ClosedCaption(text: controller.videoPlayerController!.value.caption.text), - // _ControlsOverlay(controller: controller.videoPlayerController), - // VideoProgressIndicator(controller.videoPlayerController!, allowScrubbing: true), - ], - ), - ); - } + // Widget _maxVideo(Call_outLogic controller){ + // return SizedBox( + // width:controller.videoPlayerController!.value.size.width < controller.videoPlayerController!.value.size.height ? 9*15.sp : 16*15.sp, + // height:controller.videoPlayerController!.value.size.width < controller.videoPlayerController!.value.size.height ? 16*15.sp :9*15.sp, + // + // child: Stack( + // children: [ + // ClipRRect( + // borderRadius: BorderRadius.circular(6.sp), + // child: VideoItemWidget(controller.state.videolist[0])), + // // Center(child:controller.videoPlayerController!.value.isPlaying ? Container() : Image(image: AssetImage(getMineImage("icon_play")),width: 30.sp,height: 30.sp,),), + // Positioned( + // top: 0, + // right: 0, + // child: GestureDetector( + // onTap: () { + // // showToast("删除"); + // _showDelVideoDialog(Get.context!, controller); + // }, + // child: Image( + // image: AssetImage(getMineImage("icon_img_del")), + // width: 20.sp, + // height: 20.sp, + // ), + // )) + // + // // ClosedCaption(text: controller.videoPlayerController!.value.caption.text), + // // _ControlsOverlay(controller: controller.videoPlayerController), + // // VideoProgressIndicator(controller.videoPlayerController!, allowScrubbing: true), + // ], + // ), + // ); + // } Widget _mixVideo(Call_outLogic controller){ - return Container( + return SizedBox( width:controller.videoPlayerController!.value.size.width < controller.videoPlayerController!.value.size.height ? 135.sp : 240.sp, height:controller.videoPlayerController!.value.size.width < controller.videoPlayerController!.value.size.height ? 240.sp :135.sp, child: GestureDetector( @@ -320,7 +314,7 @@ class Call_outPage extends StatelessWidget { Widget _imageAdapter(Call_outLogic controller) { return GridView.builder( - gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 3, // 每行显示的项目数量 ), itemCount: controller.state.imaglist.length, // 项目的总数量,包括固定图片和接口获取的项目 @@ -340,7 +334,7 @@ class Call_outPage extends StatelessWidget { children: [ ClipRRect( borderRadius: BorderRadius.circular(0.0), - child: Container( + child: SizedBox( width: double.infinity, // 设置容器宽度为屏幕宽度 height: double.infinity, // 设置容器高度为屏幕高度 child: ClipRRect( @@ -387,14 +381,14 @@ class Call_outPage extends StatelessWidget { backgroundColor: Colors.transparent, child: Container( height: 160.sp, - padding: EdgeInsets.all(1.0), + padding: const EdgeInsets.all(1.0), child: Stack( children: [ Container( decoration: BoxDecoration( shape: BoxShape.rectangle, borderRadius: BorderRadius.circular(10.0), - gradient: LinearGradient( + gradient: const LinearGradient( colors: [Color(0xFFDD3DF4), Color(0xFF30FFD9)], begin: Alignment.topCenter, end: Alignment.bottomCenter, @@ -406,7 +400,7 @@ class Call_outPage extends StatelessWidget { decoration: BoxDecoration( shape: BoxShape.rectangle, borderRadius: BorderRadius.circular(10.0), - gradient: LinearGradient( + gradient: const LinearGradient( colors: [Color(0xFF4C3E5F), Color(0xFF324140)], begin: Alignment.topCenter, end: Alignment.bottomCenter, @@ -432,7 +426,7 @@ class Call_outPage extends StatelessWidget { "是否确认删除该照片。", textAlign: TextAlign.center, style: TextStyle( - color: Color(0xCCF7FAFA), fontSize: 16.sp), + color: const Color(0xCCF7FAFA), fontSize: 16.sp), ), ), Row( @@ -447,7 +441,7 @@ class Call_outPage extends StatelessWidget { margin: EdgeInsets.only(top: 30.sp), decoration: BoxDecoration( borderRadius: BorderRadius.circular(17), - gradient: LinearGradient( + gradient: const LinearGradient( colors: [ Color(0x26FFFFFF), Color(0x26FFFFFF), @@ -461,7 +455,7 @@ class Call_outPage extends StatelessWidget { bottom: 10.sp, left: 52.sp, right: 52.sp), - child: Text( + child: const Text( "否", style: TextStyle( color: Colors.white, @@ -481,7 +475,7 @@ class Call_outPage extends StatelessWidget { margin: EdgeInsets.only(top: 24.sp), decoration: BoxDecoration( borderRadius: BorderRadius.circular(17), - gradient: LinearGradient( + gradient: const LinearGradient( colors: [ Color(0xFF06F9FA), Color(0xFFDC5BFD), @@ -495,7 +489,7 @@ class Call_outPage extends StatelessWidget { bottom: 10.sp, left: 52.sp, right: 52.sp), - child: Text( + child: const Text( "是", style: TextStyle( color: Colors.white, @@ -529,14 +523,14 @@ class Call_outPage extends StatelessWidget { backgroundColor: Colors.transparent, child: Container( height: 160.sp, - padding: EdgeInsets.all(1.0), + padding: const EdgeInsets.all(1.0), child: Stack( children: [ Container( decoration: BoxDecoration( shape: BoxShape.rectangle, borderRadius: BorderRadius.circular(10.0), - gradient: LinearGradient( + gradient: const LinearGradient( colors: [Color(0xFFDD3DF4), Color(0xFF30FFD9)], begin: Alignment.topCenter, end: Alignment.bottomCenter, @@ -548,7 +542,7 @@ class Call_outPage extends StatelessWidget { decoration: BoxDecoration( shape: BoxShape.rectangle, borderRadius: BorderRadius.circular(10.0), - gradient: LinearGradient( + gradient: const LinearGradient( colors: [Color(0xFF4C3E5F), Color(0xFF324140)], begin: Alignment.topCenter, end: Alignment.bottomCenter, @@ -574,7 +568,7 @@ class Call_outPage extends StatelessWidget { "是否确认删除该视频。", textAlign: TextAlign.center, style: TextStyle( - color: Color(0xCCF7FAFA), fontSize: 16.sp), + color: const Color(0xCCF7FAFA), fontSize: 16.sp), ), ), Row( @@ -589,7 +583,7 @@ class Call_outPage extends StatelessWidget { margin: EdgeInsets.only(top: 30.sp), decoration: BoxDecoration( borderRadius: BorderRadius.circular(17), - gradient: LinearGradient( + gradient: const LinearGradient( colors: [ Color(0x26FFFFFF), Color(0x26FFFFFF), @@ -603,7 +597,7 @@ class Call_outPage extends StatelessWidget { bottom: 10.sp, left: 52.sp, right: 52.sp), - child: Text( + child: const Text( "否", style: TextStyle( color: Colors.white, @@ -625,7 +619,7 @@ class Call_outPage extends StatelessWidget { margin: EdgeInsets.only(top: 24.sp), decoration: BoxDecoration( borderRadius: BorderRadius.circular(17), - gradient: LinearGradient( + gradient: const LinearGradient( colors: [ Color(0xFF06F9FA), Color(0xFFDC5BFD), @@ -639,7 +633,7 @@ class Call_outPage extends StatelessWidget { bottom: 10.sp, left: 52.sp, right: 52.sp), - child: Text( + child: const Text( "是", style: TextStyle( color: Colors.white, diff --git a/circle_app/lib/app/circle/widgets/info_list_view.dart b/circle_app/lib/app/circle/widgets/info_list_view.dart index 7280033..242ad91 100644 --- a/circle_app/lib/app/circle/widgets/info_list_view.dart +++ b/circle_app/lib/app/circle/widgets/info_list_view.dart @@ -35,19 +35,7 @@ class _InfoListViewState extends State with AutomaticKeepAliveClie @override bool get wantKeepAlive => true; - List genderList = ['男', '女,' 'MTF', 'FTM', 'CD', '酷儿']; - List orientationList = [ - '异性恋', - '同性恋', - '双性恋', - '泛性恋', - '无性恋', - '智性恋', - '性单恋' - ]; - - List roleList = ['Sado', 'Maso', 'Dom', 'Sub', 'Switch']; ListLogic? listsLg; @@ -421,7 +409,7 @@ class _InfoListViewState extends State with AutomaticKeepAliveClie ], ), )), - GestureDetector( + GestureDetector(//加入圈子 onTap: () async { if (widget.bean.isJoin) { _showOutCircleDialog( @@ -475,7 +463,7 @@ class _InfoListViewState extends State with AutomaticKeepAliveClie decoration: BoxDecoration( shape: BoxShape.rectangle, borderRadius: BorderRadius.circular(10.0), - gradient: LinearGradient( + gradient: const LinearGradient( colors: [Color(0xFFDD3DF4), Color(0xFF30FFD9)], begin: Alignment.topCenter, end: Alignment.bottomCenter, @@ -487,7 +475,7 @@ class _InfoListViewState extends State with AutomaticKeepAliveClie decoration: BoxDecoration( shape: BoxShape.rectangle, borderRadius: BorderRadius.circular(10.0), - gradient: LinearGradient( + gradient: const LinearGradient( colors: [Color(0xFF4C3E5F), Color(0xFF324140)], begin: Alignment.topCenter, end: Alignment.bottomCenter, @@ -617,6 +605,22 @@ class _InfoListViewState extends State with AutomaticKeepAliveClie // mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ GestureDetector( + onTap: ()async { + var sp = await SharedPreferencesHelper.getInstance(); + String myUserId = sp.getMyUserId(); + + if(lists.user?.id!.toString() == myUserId){ + Get.toNamed(AppRoutes.UserInfoActivity, arguments: {}); + return; + } + if (widget.bean.is_limit) { + showJoinCiclePiker(widget.bean.id.toString(),widget.bean.amount.toString(),widget.bean.oldAmount.toString(),1,(payResult){ + + }); + return; + } + pushHomePage(lists, lists.id.toString()); + }, child: Stack( alignment: Alignment.center, children: [ @@ -624,21 +628,12 @@ class _InfoListViewState extends State with AutomaticKeepAliveClie getCircleImage('avatar_bg'), width: 42.sp, ), - GestureDetector( - onTap: () { - if (widget.bean.is_limit) { - showJoinCiclePiker(widget.bean.id.toString(),widget.bean.amount.toString(),widget.bean.oldAmount.toString(),1); - return; - } - pushHomePage(lists, lists.id.toString()); - }, - child: ClipOval( - child: Image.network( - lists.user!.avatar!, - width: 40.sp, - height: 40.sp, - fit: BoxFit.fill, - ), + ClipOval( + child: Image.network( + lists.user!.avatar!, + width: 40.sp, + height: 40.sp, + fit: BoxFit.fill, ), ) ], @@ -690,7 +685,9 @@ class _InfoListViewState extends State with AutomaticKeepAliveClie Color(0xffB5D3FF) ])), child: Text( - '${genderList[lists.user!.gender!]}.${lists.user!.age}.${roleList[lists.user!.role!]}.${orientationList[lists.user!.orientation!]}', + getAgeCOntent(lists.user!.gender!, lists.user!.age!, + lists.user!.role!, lists.user!.orientation!), + // '${genderList[lists.user!.gender!]}.${lists.user!.age}.${roleList[lists.user!.role!]}.${orientationList[lists.user!.orientation!]}', style: TextStyle( color: Colors.black, fontSize: 12.sp, @@ -907,6 +904,21 @@ class _InfoListViewState extends State with AutomaticKeepAliveClie // mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ GestureDetector( + onTap: ()async { + var sp = await SharedPreferencesHelper.getInstance(); + String myUserId = sp.getMyUserId(); + if(lists.user?.id!.toString() == myUserId){ + Get.toNamed(AppRoutes.UserInfoActivity, arguments: ""); + return; + } + if (widget.bean.is_limit) { + showJoinCiclePiker(widget.bean.id.toString(),widget.bean.amount.toString(),widget.bean.oldAmount.toString(),1,(payResult){ + + }); + return; + } + pushHomePage(lists, lists.id.toString()); + }, child: Stack( alignment: Alignment.center, children: [ @@ -914,23 +926,14 @@ class _InfoListViewState extends State with AutomaticKeepAliveClie getCircleImage('avatar_bg'), width: 42.sp, ), - GestureDetector( - onTap: () { - if (widget.bean.is_limit) { - showJoinCiclePiker(widget.bean.id.toString(),widget.bean.amount.toString(),widget.bean.oldAmount.toString(),1); - return; - } - pushHomePage( - lists, widget.bean.id.toString()); - }, - child: ClipOval( - child: Image.network( - lists.user!.avatar!, - width: 40.sp, - height: 40.sp, - fit: BoxFit.fill, - ), - )) + ClipOval( + child: Image.network( + lists.user!.avatar!, + width: 40.sp, + height: 40.sp, + fit: BoxFit.fill, + ), + ) ], )), Expanded( @@ -981,7 +984,8 @@ class _InfoListViewState extends State with AutomaticKeepAliveClie Color(0xffB5D3FF) ])), child: Text( - '${genderList[lists.user!.gender!]}.${lists.user!.age}.${roleList[lists.user!.role!]}.${orientationList[lists.user!.orientation!]}', + getAgeCOntent(lists.user!.gender!, lists.user!.age!, + lists.user!.role!, lists.user!.orientation!), style: TextStyle( color: Colors.black, fontSize: 12.sp, diff --git a/circle_app/lib/app/help/view.dart b/circle_app/lib/app/help/view.dart index a3a1dc2..f70660e 100644 --- a/circle_app/lib/app/help/view.dart +++ b/circle_app/lib/app/help/view.dart @@ -58,7 +58,7 @@ class HelpPage extends StatelessWidget { padding: EdgeInsets.only(left: 16.sp, right: 16.sp), child: Row( children: [ - Container( + SizedBox( height: 300.sp, child: Align( alignment: Alignment.topCenter, @@ -73,10 +73,10 @@ class HelpPage extends StatelessWidget { Expanded( child: Container( height: 300, - padding: EdgeInsets.all(16), + padding: const EdgeInsets.all(16), decoration: BoxDecoration( borderRadius: BorderRadius.circular(4.sp), - color: Color(0xFF2E2E3B), + color: const Color(0xFF2E2E3B), ), child: Center( child: Column( @@ -85,7 +85,7 @@ class HelpPage extends StatelessWidget { Text( '猜你想问', style: TextStyle( - color: Color(0xFFB7BECC), + color: const Color(0xFFB7BECC), fontSize: 14.sp, ), ), @@ -126,7 +126,7 @@ class HelpPage extends StatelessWidget { children: [ Text( logic.msgList[index].question, - style: TextStyle( + style: const TextStyle( color: Colors.white), ), Image( @@ -181,7 +181,7 @@ class HelpPage extends StatelessWidget { width: 14.sp, height: 14.sp, ), - label: Text( + label: const Text( '意见反馈', style: TextStyle( color: Colors.white, diff --git a/circle_app/lib/app/home/view.dart b/circle_app/lib/app/home/view.dart index d72ad2a..c68b31a 100644 --- a/circle_app/lib/app/home/view.dart +++ b/circle_app/lib/app/home/view.dart @@ -5,6 +5,7 @@ import 'package:circle_app/app/circle/view.dart'; import 'package:circle_app/app/msg/view.dart'; import 'package:circle_app/router/app_routers.dart'; import 'package:circle_app/util/util.dart'; +import 'package:circle_app/view/ExitAppConfirmation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; @@ -33,7 +34,7 @@ class _HomePageState extends State with AutomaticKeepAliveClientMixin onTap: () { // Get.toNamed(AppRoutes.Complete_materialPage); }, - child: Stack(children: [ + child: ExitAppConfirmation(child: Stack(children: [ Scaffold( // backgroundColor: Color.fromRGBO(244, 245, 245, 1.0), bottomNavigationBar: Container( @@ -61,14 +62,14 @@ class _HomePageState extends State with AutomaticKeepAliveClientMixin body: PageView( physics: const NeverScrollableScrollPhysics(), controller: controller.pageController, - onPageChanged: (int index) { - controller.updateIndex(index); - }, + onPageChanged: (int index) { + controller.updateIndex(index); + }, children: controller.tabs, ), ), - ],), + ],),) ); }); } diff --git a/circle_app/lib/app/login/login/logic.dart b/circle_app/lib/app/login/login/logic.dart index 0d656af..55d72ce 100644 --- a/circle_app/lib/app/login/login/logic.dart +++ b/circle_app/lib/app/login/login/logic.dart @@ -39,6 +39,7 @@ class LoginLogic extends GetxController { //倒计时 starDownTimer() { if (sendCodeBtn == false && seconds == 60) { + isPhoto = true; getCode(); } diff --git a/circle_app/lib/app/login/login/view.dart b/circle_app/lib/app/login/login/view.dart index 0fce02e..3435d92 100644 --- a/circle_app/lib/app/login/login/view.dart +++ b/circle_app/lib/app/login/login/view.dart @@ -1,4 +1,3 @@ -import 'dart:math'; import 'package:circle_app/util/util.dart'; import 'package:flutter/material.dart'; @@ -109,7 +108,7 @@ class LoginPage extends StatelessWidget { Stack( alignment: Alignment.center, children: [ - Container( + SizedBox( width: 200.sp, child: TextField( controller: logic.codeEditingController, @@ -142,7 +141,7 @@ class LoginPage extends StatelessWidget { width: 76.sp, height: 29.sp, decoration: BoxDecoration( - color:logic.isPhoto ? Color(0xFF21BEAB) : Colors.white30, + color:logic.isPhoto ? logic.sendCodeBtn? Colors.white30: const Color(0xFF21BEAB) : Colors.white30, borderRadius: BorderRadius.circular( 29.sp / 2) ), diff --git a/circle_app/lib/app/minefragment/logic.dart b/circle_app/lib/app/minefragment/logic.dart index d4b7254..0f7d67d 100644 --- a/circle_app/lib/app/minefragment/logic.dart +++ b/circle_app/lib/app/minefragment/logic.dart @@ -10,7 +10,7 @@ import 'package:shared_preferences/shared_preferences.dart'; class MinefragmentLogic extends GetxController { final MinefragmentState state = MinefragmentState(); - User? userInfoBean = null; + User? userInfoBean; String ageMsg = ""; var isVip = 0; var like_count = 0; @@ -27,7 +27,7 @@ class MinefragmentLogic extends GetxController { int orientation = -1; String enterHomeInfoMsg = "进入主页"; - String JoinedCircle = ""; + String joinedCircle = ""; @override void onInit() async { @@ -43,7 +43,7 @@ class MinefragmentLogic extends GetxController { like_count = bean.data.likeCount ?? 0; like_me_count = bean.data.likeMeCount ?? 0; recent_visit_count = bean.data.recentVisitCount ?? 0; - JoinedCircle = "${"加入了"+bean.data.joininterestcount.toString()}个圈子"; + joinedCircle = "${"加入了${bean.data.joininterestcount}"}个圈子"; SharedPreferences sharedPreferences = await SharedPreferences.getInstance(); diff --git a/circle_app/lib/app/minefragment/view.dart b/circle_app/lib/app/minefragment/view.dart index 60eaf5a..2d5f7ac 100644 --- a/circle_app/lib/app/minefragment/view.dart +++ b/circle_app/lib/app/minefragment/view.dart @@ -46,14 +46,12 @@ class MinefragmentPage extends StatelessWidget { child: Column( children: [ _buildAvatarRow(logic), - _FriendsRow(logic), - Container( - child: Image( - image: AssetImage(getHomeImage("icon_vip")), - fit: BoxFit.fill, - ), + _friendsRow(logic), + Image( + image: AssetImage(getHomeImage("icon_vip")), + fit: BoxFit.fill, ), - _CircleLiveView(logic), + _circleLiveView(logic), ], ), ), @@ -62,13 +60,13 @@ class MinefragmentPage extends StatelessWidget { }); } - Widget _CircleLiveView(MinefragmentLogic logic) { + Widget _circleLiveView(MinefragmentLogic logic) { return Column( - children: [_CircleItemView(logic), _HelpItemView(), _SetUpItemView()], + children: [_circleItemView(logic), _helpItemView(), _setUpItemView()], ); } - Widget _SetUpItemView() { + Widget _setUpItemView() { return GestureDetector( behavior: HitTestBehavior.opaque, onTap: () { @@ -110,7 +108,7 @@ class MinefragmentPage extends StatelessWidget { ); } - Widget _HelpItemView() { + Widget _helpItemView() { return GestureDetector( behavior: HitTestBehavior.opaque, onTap: () { @@ -151,7 +149,7 @@ class MinefragmentPage extends StatelessWidget { ); } - Widget _CircleItemView(MinefragmentLogic logic) { + Widget _circleItemView(MinefragmentLogic logic) { return GestureDetector( behavior: HitTestBehavior.opaque, onTap: () { @@ -179,7 +177,7 @@ class MinefragmentPage extends StatelessWidget { Row( children: [ Text( - logic.JoinedCircle, + logic.joinedCircle, style: const TextStyle(color: Colors.white30), ), Image( @@ -195,7 +193,7 @@ class MinefragmentPage extends StatelessWidget { ); } - Widget _FriendsRow(MinefragmentLogic logic) { + Widget _friendsRow(MinefragmentLogic logic) { return Center( child: Container( width: Get.width, @@ -242,11 +240,9 @@ class MinefragmentPage extends StatelessWidget { onTap: ()async { logic.like_me_count_new = 0; logic.update(); - if(null!=logic.like_me_count){ - SharedPreferencesHelper.getInstance().then((sharedPreferences) { - sharedPreferences.setInt(SharedPreferencesHelper.LIKEMECOUNT, logic.like_me_count); - }); - } + SharedPreferencesHelper.getInstance().then((sharedPreferences) { + sharedPreferences.setInt(SharedPreferencesHelper.LIKEMECOUNT, logic.like_me_count); + }); Get.toNamed(AppRoutes.LikeListActivity); }, child: Stack( @@ -300,11 +296,9 @@ class MinefragmentPage extends StatelessWidget { behavior: HitTestBehavior.opaque, onTap: () async{ logic.recent_visit_count_new = 0; - if(null!=logic.recent_visit_count){ - SharedPreferencesHelper.getInstance().then((sharedPreferences) { - sharedPreferences.setInt(SharedPreferencesHelper.RECENTVISITCOUNT, logic.recent_visit_count); - }); - } + SharedPreferencesHelper.getInstance().then((sharedPreferences) { + sharedPreferences.setInt(SharedPreferencesHelper.RECENTVISITCOUNT, logic.recent_visit_count); + }); Get.toNamed(AppRoutes.VisitorListActivity); }, child: Stack( diff --git a/circle_app/lib/app/report/view.dart b/circle_app/lib/app/report/view.dart index b90cfb2..a344973 100644 --- a/circle_app/lib/app/report/view.dart +++ b/circle_app/lib/app/report/view.dart @@ -31,7 +31,7 @@ class ReportPage extends StatelessWidget { backgroundColor: Colors.transparent, appBar: MyAppBar( centerTitle: '举报', - actionWdiget: Text( + actionWdiget: const Text( "提交", style: TextStyle(color: Colors.white), ), @@ -52,13 +52,13 @@ class ReportPage extends StatelessWidget { ), ), ), - Container( + SizedBox( height: 120.sp, child: _reportAdapter(controller), ), Expanded( child: Padding( - padding: EdgeInsets.fromLTRB(16, 20, 16, 0), + padding: const EdgeInsets.fromLTRB(16, 20, 16, 0), child: ListView( children: [ Text( @@ -71,7 +71,7 @@ class ReportPage extends StatelessWidget { SizedBox(height: 20.sp), // 添加 RecyclerView(ListView) 的内容 // 例如: MyRecyclerViewWidget(), - Container( + SizedBox( height: 130.sp, child: _imageAdapter(controller)), Text( @@ -81,19 +81,19 @@ class ReportPage extends StatelessWidget { fontSize: 14.sp, ), ), - SizedBox(height: 30), + const SizedBox(height: 30), Container( // margin: EdgeInsets.only(left: 10, right: 10), height: 200.sp, width: double.infinity, decoration: BoxDecoration( - color: Color(0xFF4C3E5F), + color: const Color(0xFF4C3E5F), borderRadius: BorderRadius.circular(10), ), padding: EdgeInsets.all(16.sp), child: Stack( children: [ - Container( + SizedBox( height: 200.sp, child: TextField( controller: controller.textEditingController, @@ -106,13 +106,13 @@ class ReportPage extends StatelessWidget { maxLength: 200, decoration: InputDecoration( hintStyle: TextStyle( - color: Color.fromRGBO( + color: const Color.fromRGBO( 255, 255, 255, 0.6), fontSize: 14.sp), hintText: '违规补充说明,帮助审核处理,选填', border: InputBorder.none, - counter: Text('')), + counter: const Text('')), ), ), Positioned( @@ -164,7 +164,7 @@ class ReportPage extends StatelessWidget { Widget _reportAdapter(ReportLogic controller) { return GridView.builder( - gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 3, // crossAxisSpacing: 6.sp, childAspectRatio: 3, @@ -189,7 +189,7 @@ class ReportPage extends StatelessWidget { Widget _imageAdapter(ReportLogic controller) { return GridView.builder( - gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 3, // 每行显示的项目数量 ), itemCount: controller.state.imaglist.length<3 ? controller.state.imaglist.length+1: controller.state.imaglist.length, // Replace with your item count// 项目的总数量,包括固定图片和接口获取的项目 @@ -231,7 +231,7 @@ class ReportPage extends StatelessWidget { EdgeInsets.only(left: 8.sp, right: 8.sp, top: 6.sp, bottom: 6.sp), decoration: BoxDecoration( borderRadius: BorderRadius.circular(20.sp), - gradient: LinearGradient( + gradient: const LinearGradient( colors: [ Color(0xFF06F9FA), Color(0xFFDC5BFD), @@ -260,9 +260,9 @@ class ReportPage extends StatelessWidget { decoration: BoxDecoration( borderRadius: BorderRadius.circular(20.0), // 设置圆角半径 border: Border.all( - color: Color(0xFF392D53), + color: const Color(0xFF392D53), ), - color: Color(0xFF392D53), + color: const Color(0xFF392D53), ), child: Padding( padding: EdgeInsets.only( @@ -270,7 +270,7 @@ class ReportPage extends StatelessWidget { child: Center( child: Text( bean.name, - style: TextStyle( + style: const TextStyle( fontSize: 11.0, color: Colors.white, ), @@ -287,7 +287,7 @@ class ReportPage extends StatelessWidget { children: [ ClipRRect( borderRadius: BorderRadius.circular(0.0), - child: Container( + child: SizedBox( width: double.infinity, // 设置容器宽度为屏幕宽度 height: double.infinity, // 设置容器高度为屏幕高度 child: ClipRRect( diff --git a/circle_app/lib/app/userinfo/logic.dart b/circle_app/lib/app/userinfo/logic.dart index 6d89bed..ad8fc15 100644 --- a/circle_app/lib/app/userinfo/logic.dart +++ b/circle_app/lib/app/userinfo/logic.dart @@ -16,7 +16,7 @@ class UserinfoLogic extends GetxController { var userId = Get.arguments ?? ""; final UserinfoState state = UserinfoState(); final ImagePicker _picker = ImagePicker(); - UserBean? userInfoBean = null; + UserBean? userInfoBean; String imId = ''; String ageMsg = ""; var isVip = 0; @@ -34,7 +34,7 @@ class UserinfoLogic extends GetxController { @override void onInit() async { super.onInit(); - + SmartDialog.showLoading(); if (userId != '') { SharedPreferences sharedPreferences = await SharedPreferences.getInstance(); @@ -86,12 +86,12 @@ class UserinfoLogic extends GetxController { var bean = BaseResponse.fromJson( data, (data) => ResponseBean.fromJson(data)); if (bean.isSuccess()) { - isLike = bean.data.is_follow; + isLike = bean.data.isFollow; isLikeFoMsg = "${bean.data.imageUrgeCount}位圈友感兴趣,其中${bean.data.likeMeCount}位已催您更新"; userInfoBean = bean.data!.user; isVip = userInfoBean!.vip; - imId = bean.data.account_id; + imId = bean.data.accountId; onLineCity = userInfoBean!.isOnline == true ? "在线" : "离线"; if (userInfoBean!.city != null) { onLineCity = "$onLineCity·${userInfoBean!.city}"; @@ -123,7 +123,7 @@ class UserinfoLogic extends GetxController { //} } update(); - + SmartDialog.dismiss(); var data = await DioManager.instance.get(url: Api.getqiniuToken, params: {}); var bean = BaseResponse.fromJson( @@ -209,7 +209,7 @@ class UserinfoLogic extends GetxController { update(); } }); - } catch (e) {} + } catch (_) {} } } @@ -300,23 +300,23 @@ class ResponseBean { UserBean user; int likeMeCount; int imageUrgeCount; - bool is_follow; - String account_id; + bool isFollow; + String accountId; ResponseBean( {required this.user, required this.likeMeCount, required this.imageUrgeCount, - required this.account_id, - required this.is_follow}); + required this.accountId, + required this.isFollow}); factory ResponseBean.fromJson(Map json) { return ResponseBean( - account_id: json['account_id'], + accountId: json['account_id'], user: UserBean.fromJson(json['user']), likeMeCount: json['like_me_count'], imageUrgeCount: json['image_urge_count'], - is_follow: json['is_follow'], + isFollow: json['is_follow'], ); } } diff --git a/circle_app/lib/app/userinfo/view.dart b/circle_app/lib/app/userinfo/view.dart index c0e495d..af692f6 100644 --- a/circle_app/lib/app/userinfo/view.dart +++ b/circle_app/lib/app/userinfo/view.dart @@ -86,7 +86,7 @@ class _MyTabbedScreenState extends State Positioned( bottom: 27.sp, width: Get.width, - child: _MeInfoButton(logic), + child: _meInfoButton(logic), ), ], ), @@ -97,7 +97,7 @@ class _MyTabbedScreenState extends State - Widget _MeInfoButton(UserinfoLogic controller) { + Widget _meInfoButton(UserinfoLogic controller) { if (controller.isMe) { return const SizedBox(); } else { diff --git a/circle_app/lib/app/userinfo/widgets/home_call_out.dart b/circle_app/lib/app/userinfo/widgets/home_call_out.dart index 47f7a79..b091bd0 100644 --- a/circle_app/lib/app/userinfo/widgets/home_call_out.dart +++ b/circle_app/lib/app/userinfo/widgets/home_call_out.dart @@ -23,19 +23,6 @@ class HomeCallOutView extends StatefulWidget { } class _HomeCallOutViewState extends State { - List genderList = ['男', '女,' 'MTF', 'FTM', 'CD', '酷儿']; - - List orientationList = [ - '异性恋', - '同性恋', - '双性恋', - '泛性恋', - '无性恋', - '智性恋', - '性单恋' - ]; - - List roleList = ['Sado', 'Maso', 'Dom', 'Sub', 'Switch']; HomeCallOutLogic? listsLg; @@ -252,8 +239,12 @@ class _HomeCallOutViewState extends State { Color(0xff8DFFF8), Color(0xffB5D3FF) ])), + child: Text( - '${genderList[lists.user!.gender!]}.${lists.user!.age}.${roleList[lists.user!.role!]}.${orientationList[lists.user!.orientation!]}', + getAgeCOntent(lists.user!.gender!, lists.user!.age!, + lists.user!.role!, lists.user!.orientation!), + + // '${genderList[lists.user!.gender!]}.${lists.user!.age}.${roleList[lists.user!.role!]}.${orientationList[lists.user!.orientation!]}', style: TextStyle( color: Colors.black, fontSize: 12.sp, @@ -483,7 +474,9 @@ class _HomeCallOutViewState extends State { Color(0xffB5D3FF) ])), child: Text( - '${genderList[lists.user!.gender!]}.${lists.user!.age}.${roleList[lists.user!.role!]}.${orientationList[lists.user!.orientation!]}', + getAgeCOntent(lists.user!.gender!, lists.user!.age!, + lists.user!.role!, lists.user!.orientation!), + // '${genderList[lists.user!.gender!]}.${lists.user!.age}.${roleList[lists.user!.role!]}.${orientationList[lists.user!.orientation!]}', style: TextStyle( color: Colors.black, fontSize: 12.sp, diff --git a/circle_app/lib/common/Widgets/base_tip_widget.dart b/circle_app/lib/common/Widgets/base_tip_widget.dart index 191c6e9..ec9d937 100644 --- a/circle_app/lib/common/Widgets/base_tip_widget.dart +++ b/circle_app/lib/common/Widgets/base_tip_widget.dart @@ -1,121 +1,250 @@ import 'dart:math'; +import 'package:alipay_kit/alipay_kit.dart'; import 'package:circle_app/util/util.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; -joiinCircileTipWdiget(String cicleId,String pirce,String oldPrice,String title) { - return Scaffold( - backgroundColor: Colors.transparent, - body: Container( - width: Get.width, - height: Get.height, - alignment: Alignment.center, - child: - Stack( - +import '../../network/api.dart'; +import '../../network/dio_manager.dart'; +import '../../util/PaymentUtils.dart'; +import 'open_vip_tip/logic.dart'; +bool isZfbPrice = true; +joiinCircileTipWdiget(String cicleId,String pirce,String oldPrice,String title,MyCallback myCallback) { + return StatefulBuilder( + builder:(BuildContext context, StateSetter setState) { + return Scaffold( + backgroundColor: Colors.transparent, + body: Container( + width: Get.width, + height: Get.height, alignment: Alignment.center, - children: [ - Container( - width: 339.sp, - height: 330.sp, - decoration: BoxDecoration( - image: DecorationImage( - fit: BoxFit.fill, - image: AssetImage(getCircleImage('add_tip_bg'))))), - Positioned( - top: 5.sp, - right: 12.sp, - child: GestureDetector( - onTap: () { - Get.back(); - }, - child: Image.asset( - getCircleImage('close'), - width: 24.sp, - ), - )), - Positioned( - top: 24.sp, - child: Text( - title, - style: TextStyle(color: Colors.white, fontSize: 16.sp), - )), - Positioned( - left: 17.sp, - top: 64.sp, - child: Text( - '为什么要解锁圈子?', - style: TextStyle(color: Colors.white, fontSize: 16.sp), - )), - Positioned( - top: 98.sp, - child: Container( + child: + Stack( + alignment: Alignment.center, + children: [ + Container( width: 339.sp, - padding: EdgeInsets.only(left: 17.sp, right: 17.sp), - child: Text( - '为打造纯净的社交环境,更好地服务大家,基于以下几方面考虑:1、平台升级为全天24小时人工审核,保证用户真实,避免骗子、酒托、虚假人士等扰乱平台 ;2、杜绝未入圈用户随意骚扰或影响已入圈的;3、谢绝只会白嫖的猎奇人士。', - style: TextStyle( - color: Color.fromRGBO(247, 250, 250, 0.8), - fontSize: 12.sp)), - )), - Positioned( - bottom: 18.sp, - child: Container( - width: 168.sp, - height: 42.sp, - alignment: Alignment.center, + height: 330.sp, decoration: BoxDecoration( - borderRadius: BorderRadius.circular(21.sp), - gradient: const LinearGradient( - begin: Alignment.centerLeft, - end: Alignment.centerRight, - colors: [Color(0xff0AFCFF), Color(0xffD739EA)])), + image: DecorationImage( + fit: BoxFit.fill, + image: AssetImage(getCircleImage('add_tip_bg'))))), + Positioned( + top: 5.sp, + right: 12.sp, + child: GestureDetector( + onTap: () { + Get.back(); + }, + child: Image.asset( + getCircleImage('close'), + width: 24.sp, + ), + )), + Positioned( + top: 24.sp, child: Text( - '立即解锁', + title, style: TextStyle(color: Colors.white, fontSize: 16.sp), - ), - )), - Positioned( - bottom: 72.sp, + )), + Positioned( + left: 17.sp, + top: 64.sp, + child: Text( + '为什么要解锁圈子?', + style: TextStyle(color: Colors.white, fontSize: 16.sp), + )), + Positioned( + top: 98.sp, + child: Container( + width: 339.sp, + padding: EdgeInsets.only(left: 17.sp, right: 17.sp), + child: Text( + '为打造纯净的社交环境,更好地服务大家,基于以下几方面考虑:1、平台升级为全天24小时人工审核,保证用户真实,避免骗子、酒托、虚假人士等扰乱平台 ;2、杜绝未入圈用户随意骚扰或影响已入圈的;3、谢绝只会白嫖的猎奇人士。', + style: TextStyle( + color: Color.fromRGBO(247, 250, 250, 0.8), + fontSize: 12.sp)), + )), + Positioned( + bottom: 108.sp, child: Container( + margin: EdgeInsets.only(top: 24.0.sp), child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Text( - '¥$pirce', - style: TextStyle( - color: Color(0xffE845FF), - fontSize: 16.sp, - fontWeight: FontWeight.w600), + GestureDetector( + onTap: () { + setState(() { + isZfbPrice = true; + }); + }, + child: Row( + children: [ + Image.asset( + isZfbPrice + ? getMineImage("icon_pay_select") + : getMineImage("icon_pay_is_no_select"), + width: 20.0.sp, + height: 20.0.sp, + ), + SizedBox(width: 8.0.sp), + Image.asset( + getMineImage('icon_cooperate_ali'), + width: 20.0.sp, + height: 20.0.sp, + ), + SizedBox(width: 4.0.sp), + Text( + '支付宝支付', + style: TextStyle( + color: Color(0xFFF7FAFA), + fontSize: 14.0.sp, + ), + ), + SizedBox(width: 4.0.sp), + Image.asset( + getMineImage('icon_recommend_pay_way'), + width: 32.0.sp, + height: 16.0.sp, + ), + ], + ), ), - SizedBox( - width: 2.sp, - ), - Text( - '(原价$oldPrice)', - style: TextStyle( - color: Colors.white70, - fontSize: 16.sp, - fontWeight: FontWeight.w400, - decoration: TextDecoration.lineThrough, - decorationColor: Colors.white70, + SizedBox(width: 24.0.sp), + GestureDetector( + onTap: () { + setState(() { + isZfbPrice = false; + }); + }, + child: Row( + children: [ + Image.asset( + !isZfbPrice + ? getMineImage("icon_pay_select") + : getMineImage("icon_pay_is_no_select"), + width: 20.0.sp, + height: 20.0.sp, + ), + SizedBox(width: 8.0.sp), + Image.asset( + getMineImage('icon_cooperate_wx'), + width: 20.0.sp, + height: 20.0.sp, + ), + SizedBox(width: 4.0.sp), + Text( + '微信支付', + style: TextStyle( + color: Color(0xFFF7FAFA), + fontSize: 14.0.sp, + ), + ), + ], ), ), ], ), - )) - ], - ), - ), + ), + ), - ); + Positioned( + bottom: 18.sp, + child: GestureDetector( + behavior: HitTestBehavior.opaque, + onTap: (){ + unlockingPayment(myCallback); + }, + child: Container( + width: 168.sp, + height: 42.sp, + alignment: Alignment.center, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(21.sp), + gradient: const LinearGradient( + begin: Alignment.centerLeft, + end: Alignment.centerRight, + colors: [Color(0xff0AFCFF), Color(0xffD739EA)])), + child: Text( + '立即解锁', + style: TextStyle(color: Colors.white, fontSize: 16.sp), + ), + ), + )), + Positioned( + bottom: 72.sp, + child: Container( + child: Row( + children: [ + Text( + '¥$pirce', + style: TextStyle( + color: Color(0xffE845FF), + fontSize: 16.sp, + fontWeight: FontWeight.w600), + ), + SizedBox( + width: 2.sp, + ), + Text( + '(原价$oldPrice)', + style: TextStyle( + color: Colors.white70, + fontSize: 16.sp, + fontWeight: FontWeight.w400, + decoration: TextDecoration.lineThrough, + decorationColor: Colors.white70, + ), + ), + ], + ), + )) + ], + ), + ), + + ); + }); } - showJoinCiclePiker(String cicleId,String pirce,String oldPrice,int type) { + unlockingPayment(MyCallback myCallback)async{ + if (isZfbPrice) { + var data = await DioManager.instance.post(url: Api.postAliPayOrder, params: { + //"product_id": priceBean[index].id, + "type": 1}); + var bean = BaseResponse.fromJson(data, (data) => PayUrlBean.fromJson(data)); + if(bean.isSuccess()){ + var data = await AlipayKitPlatform.instance.pay( + orderInfo: bean.data.payUrl, + isShowLoading :true + ); + }else { + showToast(bean.msg); + } + + } else{ + initWxApi(); + var data = await DioManager.instance.post(url: Api.postWxOrder, params: { + // "product_id": priceBean[index].id, + "type": 1}); + var bean = BaseResponse.fromJson(data, (data) => PaymentData.fromJson(data)); + if(bean.isSuccess()){ + openWxPay(bean.data); + }else { + showToast(bean.msg); + } + } + + } + +typedef void MyCallback(bool payResult); + + showJoinCiclePiker(String cicleId,String pirce,String oldPrice,int type,MyCallback payResult) { String title = ['解锁圈子才能发布喊话','解锁圈子才能查看主页','解锁圈子才能主动私聊'][type]; return Get.bottomSheet( - joiinCircileTipWdiget(cicleId,pirce,oldPrice,title), + joiinCircileTipWdiget(cicleId,pirce,oldPrice,title,payResult), isScrollControlled: true, enableDrag: false ); diff --git a/circle_app/lib/common/Widgets/open_vip_tip/logic.dart b/circle_app/lib/common/Widgets/open_vip_tip/logic.dart index c15a926..198517e 100644 --- a/circle_app/lib/common/Widgets/open_vip_tip/logic.dart +++ b/circle_app/lib/common/Widgets/open_vip_tip/logic.dart @@ -1,8 +1,143 @@ +import 'dart:convert'; + +import 'package:alipay_kit/alipay_kit.dart'; +import 'package:circle_app/util/util.dart'; import 'package:get/get.dart'; +import '../../../network/api.dart'; +import '../../../network/dio_manager.dart'; +import '../../../util/PaymentUtils.dart'; import 'state.dart'; +import 'package:fluwx/fluwx.dart' as fluwx; class Open_vip_tipLogic extends GetxController { + List priceBean = []; + bool isZfbPrice = true; + + @override + void onInit() async { + super.onInit(); + var data = await DioManager.instance.get(url: Api.getVipPrice, params: {}); + var vipPriceList = BaseResponse>.fromJson(data, (data) => + List.from(data.map((item) => PriceBean.fromJson(item))), + ); + priceBean = vipPriceList.data; + update(); + } + int index = 0; final Open_vip_tipState state = Open_vip_tipState(); + + startPayment() async { + if (isZfbPrice) { + var data = await DioManager.instance.post(url: Api.postAliPayOrder, params: {"product_id": priceBean[index].id, "type": 2}); + var bean = BaseResponse.fromJson(data, (data) => PayUrlBean.fromJson(data)); + if(bean.isSuccess()){ + AlipayKitPlatform.instance.pay( + orderInfo: bean.data.payUrl, + isShowLoading :true + ); + }else { + showToast(bean.msg); + } + + } else{ + initWxApi(); + var data = await DioManager.instance.post(url: Api.postWxOrder, params: {"product_id": priceBean[index].id, "type": 2}); + var bean = BaseResponse.fromJson(data, (data) => PaymentData.fromJson(data)); + if(bean.isSuccess()){ + openWxPay(bean.data); + }else { + showToast(bean.msg); + } + } + } +} + + +//注册微信 +void initWxApi() { + fluwx.registerWxApi( + appId: "wx6c6f4c89465dac4b", + universalLink: "dcc5bd5012a417eb585684700fbd1307", + ); +} + + + + +class PayUrlBean { + String payUrl; + + PayUrlBean({ + required this.payUrl, + }); + + factory PayUrlBean.fromJson(Map json) { + return PayUrlBean( + payUrl: json['pay_url'], + ); + } +} + + + +class PaymentData { + String appId; + String mchId; + String nonceStr; + String sign; + String prepayId; + String packageX; + String timestamp; + + PaymentData({ + required this.appId, + required this.mchId, + required this.nonceStr, + required this.sign, + required this.prepayId, + required this.packageX, + required this.timestamp, + }); + + factory PaymentData.fromJson(Map json) { + return PaymentData( + appId: json['appid'], + mchId: json['mchId'], + nonceStr: json['nonceStr'], + sign: json['sign'], + prepayId: json['prepayId'], + packageX: json['packageX'], + timestamp: json['timestamp'], + ); + } +} + + + +class PriceBean { + int id; + String title; + double amount; + double oldAmount; + String iosItem; + + PriceBean({ + required this.id, + required this.title, + required this.amount, + required this.oldAmount, + required this.iosItem, + }); + + factory PriceBean.fromJson(Map json) { + return PriceBean( + id: json['id'], + title: json['title'], + amount: json['amount'].toDouble(), + oldAmount: json['old_amount'].toDouble(), + iosItem: json['ios_item'], + ); + } } diff --git a/circle_app/lib/common/Widgets/open_vip_tip/view.dart b/circle_app/lib/common/Widgets/open_vip_tip/view.dart index 2d4da20..efa5023 100644 --- a/circle_app/lib/common/Widgets/open_vip_tip/view.dart +++ b/circle_app/lib/common/Widgets/open_vip_tip/view.dart @@ -14,24 +14,29 @@ class Open_vip_tipPage extends StatelessWidget { @override Widget build(BuildContext context) { - List vipFuncList = ["身份标识", - "专属客服", - "无限畅聊", - "至尊喊话", - "图片私聊", - "视频私聊", - "看谁喜欢你", - "看谁看过你", - "缘分匹配"]; + List vipFuncList = [ + "身份标识", + "专属客服", + "无限畅聊", + "至尊喊话", + "图片私聊", + "视频私聊", + "看谁喜欢你", + "看谁看过你", + "缘分匹配" + ]; - List vipDescList = ['会员专属,更显尊贵',"给您更加贴心的服务", - "可以随心所欲畅聊", - "发布的喊话在圈内凸显", - "聊天可以一直使用图片", - "聊天可以一直使用视频", - "看到所有喜欢你的人", - "看到所有看过你的人", - "为您匹配更合适的人"]; + List vipDescList = [ + '会员专属,更显尊贵', + "给您更加贴心的服务", + "可以随心所欲畅聊", + "发布的喊话在圈内凸显", + "聊天可以一直使用图片", + "聊天可以一直使用视频", + "看到所有喜欢你的人", + "看到所有看过你的人", + "为您匹配更合适的人" + ]; // for (int i = 1; i < 10; i++) { // // } @@ -39,13 +44,13 @@ class Open_vip_tipPage extends StatelessWidget { return GetBuilder(builder: (Open_vip_tipLogic controller) { return Scaffold( backgroundColor: Colors.transparent, - body: Container( + body: SizedBox( width: Get.width, height: Get.height, child: Center( child: Container( width: 339.sp, - height: 453.sp, + height: 483.sp, decoration: BoxDecoration( image: DecorationImage( fit: BoxFit.fill, @@ -78,38 +83,126 @@ class Open_vip_tipPage extends StatelessWidget { height: 180.sp, child: Swiper( itemCount: vipFuncList.length, - itemBuilder: (BuildContext context, int index) { - return funcItem(vipFuncList[index], - vipDescList[index], index+1); - }, + itemBuilder: (BuildContext context, int index) { + return funcItem(vipFuncList[index], + vipDescList[index], index + 1); + }, loop: true, - autoplay:true, + autoplay: true, pagination: new SwiperPagination( - builder: DotSwiperPaginationBuilder( - color: Color(0x99FFFFFF), - size:4.sp, - activeColor: Color(0xFF00FFD2), - activeSize: 4.sp - ) - ),//如果不填则不显示指示点 - ), + builder: DotSwiperPaginationBuilder( + color: Color(0x99FFFFFF), + size: 4.sp, + activeColor: Color(0xFF00FFD2), + activeSize: 4.sp)), //如果不填则不显示指示点 + ), )), Positioned( top: 227.sp, + child: controller.priceBean.isEmpty + ? Container() + : Container( + width: 339.sp, + padding: + EdgeInsets.only(left: 17.sp, right: 17.sp), + child: Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + typeItem( + controller, controller.index == 0, 0), + typeItem( + controller, controller.index == 1, 1), + typeItem( + controller, controller.index == 2, 2), + ], + ))), + Positioned( + bottom: 108.sp, child: Container( - width: 339.sp, - padding: EdgeInsets.only(left: 17.sp, right: 17.sp), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - typeItem(controller, controller.index == 0, 0), - typeItem(controller, controller.index == 1, 1), - typeItem(controller, controller.index == 2, 2), - ], - ))), + margin: EdgeInsets.only(top: 24.0.sp), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + GestureDetector( + onTap: () { + // 处理支付宝支付逻辑 + controller.isZfbPrice = true; + controller.update(); + }, + child: Row( + children: [ + Image.asset( + controller.isZfbPrice? + getMineImage("icon_pay_select"): getMineImage("icon_pay_is_no_select"), + width: 20.0.sp, + height: 20.0.sp, + ), + SizedBox(width: 8.0.sp), + Image.asset( + getMineImage('icon_cooperate_ali'), + width: 20.0.sp, + height: 20.0.sp, + ), + SizedBox(width: 4.0.sp), + Text( + '支付宝支付', + style: TextStyle( + color: Color(0xFFF7FAFA), + fontSize: 14.0.sp, + ), + ), + SizedBox(width: 4.0.sp), + Image.asset( + getMineImage('icon_recommend_pay_way'), + width: 32.0.sp, + height: 16.0.sp, + ), + ], + ), + ), + SizedBox(width: 24.0.sp), + GestureDetector( + onTap: () { + controller.isZfbPrice = false; + controller.update(); + }, + child: Row( + children: [ + Image.asset( + !controller.isZfbPrice? + getMineImage("icon_pay_select"): getMineImage("icon_pay_is_no_select"), + width: 20.0.sp, + height: 20.0.sp, + ), + SizedBox(width: 8.0.sp), + Image.asset( + getMineImage('icon_cooperate_wx'), + width: 20.0.sp, + height: 20.0.sp, + ), + SizedBox(width: 4.0.sp), + Text( + '微信支付', + style: TextStyle( + color: Color(0xFFF7FAFA), + fontSize: 14.0.sp, + ), + ), + ], + ), + ), + ], + ), + )), Positioned( bottom: 48.sp, - child: Container( + child: GestureDetector( + behavior: HitTestBehavior.opaque, + onTap: (){ + controller.startPayment(); + }, + child: Container( width: 168.sp, height: 42.sp, alignment: Alignment.center, @@ -125,9 +218,9 @@ class Open_vip_tipPage extends StatelessWidget { child: Text( '立即解锁', style: - TextStyle(color: Colors.white, fontSize: 16.sp), + TextStyle(color: Colors.white, fontSize: 16.sp), ), - )), + ),)), Positioned( bottom: 17.sp, child: Container( @@ -164,6 +257,8 @@ class Open_vip_tipPage extends StatelessWidget { } typeItem(Open_vip_tipLogic controller, bool isSelected, int index) { + double pricePerDay = controller.priceBean[index].amount / 30; + String formattedPricePerDay = '${pricePerDay.toStringAsFixed(2)}元/天'; return GestureDetector( onTap: () { controller.index = index; @@ -191,25 +286,25 @@ class Open_vip_tipPage extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ Text( - '3个月', + controller.priceBean[index].title, style: TextStyle(color: Colors.white, fontSize: 14.sp), ), Text( - '0.67元/天', + formattedPricePerDay, style: TextStyle(color: Colors.white, fontSize: 14.sp), ), Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Text( - '58元', + controller.priceBean[index].amount.toString(), style: TextStyle(color: Colors.white, fontSize: 14.sp), ), SizedBox( width: 4.sp, ), Text( - '388元', + "${controller.priceBean[index].oldAmount}元", style: TextStyle( color: Colors.white70, fontSize: 10.sp, @@ -222,6 +317,13 @@ class Open_vip_tipPage extends StatelessWidget { ], ), ), + controller.priceBean[index].title=="年度会员"? Positioned( + top: 0.sp, + left: 0.sp, + child: Image.asset(getMineImage("icon_yean_vip")), + width: 44.sp, + height: 18.sp, + ) :Container() ], )); } diff --git a/circle_app/lib/network/api.dart b/circle_app/lib/network/api.dart index 8c55b3a..8e4c143 100644 --- a/circle_app/lib/network/api.dart +++ b/circle_app/lib/network/api.dart @@ -24,6 +24,24 @@ class Api { static const getCircleList = 'user-service/app/config'; + //获取vip价格 + static const getVipPrice = 'mall-service/vips'; + + + + + //支付宝支付 + static const postAliPayOrder = 'mall-service/alipay/order'; + + + + + //微信支付 + static const postWxOrder = 'mall-service/wxpay/order'; + + + + //刷新token static const refreshToken = 'user-service/login/token/refresh'; diff --git a/circle_app/lib/network/dio_manager.dart b/circle_app/lib/network/dio_manager.dart index 00ff189..5d1b6d2 100644 --- a/circle_app/lib/network/dio_manager.dart +++ b/circle_app/lib/network/dio_manager.dart @@ -39,9 +39,9 @@ class DioManager { // 请求基地址 baseUrl: baseUrl, // 连接服务器超时时间,单位是毫秒 - connectTimeout: Duration(seconds: 30000000000), + connectTimeout: const Duration(seconds: 300), // 接收数据的最长时限 - receiveTimeout: Duration(seconds: 30000000000), + receiveTimeout: const Duration(seconds: 300), )); _dio!.interceptors.add(LogInterceptor(responseBody: true)); // _dio!.interceptors.add(ConnectivityInterceptor()); @@ -175,7 +175,7 @@ class DioManager { 'Imei': await getImei(), 'Brand': await getBrand(), }); - print(">>>>>"+params.toString()); + print(">>>>>$params"); /// 不同请求方法,不同的请求参数,按实际项目需求分. /// 这里 get 是 queryParameters,其它用 data. FormData 也是 data diff --git a/circle_app/lib/util/PaymentUtils.dart b/circle_app/lib/util/PaymentUtils.dart new file mode 100644 index 0000000..ba47155 --- /dev/null +++ b/circle_app/lib/util/PaymentUtils.dart @@ -0,0 +1,32 @@ + +import 'package:circle_app/util/util.dart'; + +import '../common/Widgets/open_vip_tip/logic.dart'; +import 'package:fluwx/fluwx.dart' as fluwx; +//微信支付 +Future openWxPay(PaymentData data) async { + //是否安装微信 + bool isInstalled = await fluwx.isWeChatInstalled; + if (!isInstalled) { + showToast("请先安装微信"); + return; + } + //调起支付 + fluwx.payWithWeChat( + appId: data.appId, + partnerId: data.mchId, + prepayId: data.prepayId, + packageValue: data.packageX, + nonceStr: data.nonceStr, + timeStamp: int.parse(data.timestamp), + sign: data.sign, + ); + //监听微信回调 + fluwx.weChatResponseEventHandler.listen((event) { + if(event.isSuccessful) { + showToast("微信支付成功"); + } else { + showToast(event.errStr??"微信支付成功"); + } + }); +} \ No newline at end of file diff --git a/circle_app/lib/view/ExitAppConfirmation.dart b/circle_app/lib/view/ExitAppConfirmation.dart new file mode 100644 index 0000000..f01c3ab --- /dev/null +++ b/circle_app/lib/view/ExitAppConfirmation.dart @@ -0,0 +1,40 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +import '../util/util.dart'; + +class ExitAppConfirmation extends StatefulWidget { + final Widget child; + + ExitAppConfirmation({required this.child}); + + @override + _ExitAppConfirmationState createState() => _ExitAppConfirmationState(); +} + +class _ExitAppConfirmationState extends State { + DateTime? _lastPressed; + + @override + Widget build(BuildContext context) { + return WillPopScope( + onWillPop: _onBackPressed, + child: widget.child, + ); + } + + Future _onBackPressed() { + final currentTime = DateTime.now(); + + if (_lastPressed == null || + currentTime.difference(_lastPressed!) > Duration(seconds: 2)) { + _lastPressed = currentTime; + // ScaffoldMessenger.of(context).showSnackBar( + // const SnackBar(content: Text('再按一次返回键退出应用')), + // ); + showToast("再按一次返回键退出应用"); + return Future.value(false); + } + return Future.value(true); + } +} diff --git a/circle_app/lib/view/hometab/binding.dart b/circle_app/lib/view/hometab/binding.dart deleted file mode 100644 index 5c218fc..0000000 --- a/circle_app/lib/view/hometab/binding.dart +++ /dev/null @@ -1,10 +0,0 @@ -import 'package:get/get.dart'; - -import 'logic.dart'; - -class HometabBinding extends Bindings { - @override - void dependencies() { - Get.lazyPut(() => HometabLogic()); - } -} diff --git a/circle_app/lib/view/hometab/logic.dart b/circle_app/lib/view/hometab/logic.dart deleted file mode 100644 index 4bdb73c..0000000 --- a/circle_app/lib/view/hometab/logic.dart +++ /dev/null @@ -1,7 +0,0 @@ -import 'package:get/get.dart'; - -import 'state.dart'; - -class HometabLogic extends GetxController { - final HometabState state = HometabState(); -} diff --git a/circle_app/lib/view/hometab/state.dart b/circle_app/lib/view/hometab/state.dart deleted file mode 100644 index 20f8d24..0000000 --- a/circle_app/lib/view/hometab/state.dart +++ /dev/null @@ -1,5 +0,0 @@ -class HometabState { - HometabState() { - ///Initialize variables - } -} diff --git a/circle_app/lib/view/hometab/view.dart b/circle_app/lib/view/hometab/view.dart deleted file mode 100644 index 35d5fea..0000000 --- a/circle_app/lib/view/hometab/view.dart +++ /dev/null @@ -1,51 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:get/get.dart'; -import 'package:circle_app/app/minefragment/view.dart'; - -import 'logic.dart'; - -class HometabPage extends StatefulWidget { - HometabPage({Key? key}) : super(key: key); - - // final logic = Get.find(); - // final state = Get.find().state; - - @override - _TabsState createState() => _TabsState(); - } - class _TabsState extends State{ - int _currentIndex = 0; - List _pageList = [ - MinefragmentPage(), - MinefragmentPage(), - MinefragmentPage(), - ]; - @override - Widget build(BuildContext context) { - // TODO: implement build - return Scaffold( - - body: this._pageList[this._currentIndex], - bottomNavigationBar: BottomNavigationBar( - currentIndex: this._currentIndex, - onTap: (int index){ - setState(() { - this._currentIndex = index; - }); - }, - iconSize: 30, - fixedColor: Colors.red, - type: BottomNavigationBarType.fixed, - items: [ - BottomNavigationBarItem(icon: Icon(Icons.home),label: ''), - BottomNavigationBarItem(icon: Icon(Icons.home), label: ''), - BottomNavigationBarItem(icon: Icon(Icons.home), label: ''), - ], - ), - - ); - - - } - } - diff --git a/circle_app/macos/Flutter/GeneratedPluginRegistrant.swift b/circle_app/macos/Flutter/GeneratedPluginRegistrant.swift index 6be27df..6ab1844 100644 --- a/circle_app/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/circle_app/macos/Flutter/GeneratedPluginRegistrant.swift @@ -6,6 +6,7 @@ import FlutterMacOS import Foundation import audioplayers_darwin +import connectivity_macos import desktop_drop import device_info_plus_macos import fc_native_video_thumbnail_for_us @@ -18,10 +19,12 @@ import photo_manager import shared_preferences_foundation import sqflite import url_launcher_macos +import video_compress import wakelock_macos func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { AudioplayersDarwinPlugin.register(with: registry.registrar(forPlugin: "AudioplayersDarwinPlugin")) + ConnectivityPlugin.register(with: registry.registrar(forPlugin: "ConnectivityPlugin")) DesktopDropPlugin.register(with: registry.registrar(forPlugin: "DesktopDropPlugin")) DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) FcNativeVideoThumbnailPlugin.register(with: registry.registrar(forPlugin: "FcNativeVideoThumbnailPlugin")) @@ -34,5 +37,6 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin")) UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) + VideoCompressPlugin.register(with: registry.registrar(forPlugin: "VideoCompressPlugin")) WakelockMacosPlugin.register(with: registry.registrar(forPlugin: "WakelockMacosPlugin")) } diff --git a/circle_app/pubspec.lock b/circle_app/pubspec.lock index cdfbe9d..a27baaf 100644 --- a/circle_app/pubspec.lock +++ b/circle_app/pubspec.lock @@ -1,36 +1,244 @@ # Generated by pub # See https://dart.dev/tools/pub/glossary#lockfile packages: + _fe_analyzer_shared: + dependency: transitive + description: + name: _fe_analyzer_shared + sha256: ae92f5d747aee634b87f89d9946000c2de774be1d6ac3e58268224348cd0101a + url: "https://pub.flutter-io.cn" + source: hosted + version: "61.0.0" + adaptive_action_sheet: + dependency: transitive + description: + name: adaptive_action_sheet + sha256: "2cf53889102f2f476d03da30ef4219a3199f1d9b9f7bf063e2b23cd5aa88ea02" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.2" + alipay_kit: + dependency: "direct main" + description: + name: alipay_kit + sha256: fa8e55b304f770cd9640356a72c7b12476eb72e5acf231cea568fd9463213a4c + url: "https://pub.flutter-io.cn" + source: hosted + version: "5.0.0" + alipay_kit_android: + dependency: transitive + description: + name: alipay_kit_android + sha256: "5c8ec94fb0c2e8cdffc4d0ed9459b8c30bf0e822c2c1b910ff85d2124ad7ecb4" + url: "https://pub.flutter-io.cn" + source: hosted + version: "5.0.0" + analyzer: + dependency: transitive + description: + name: analyzer + sha256: ea3d8652bda62982addfd92fdc2d0214e5f82e43325104990d4f4c4a2a313562 + url: "https://pub.flutter-io.cn" + source: hosted + version: "5.13.0" + archive: + dependency: transitive + description: + name: archive + sha256: "0c8368c9b3f0abbc193b9d6133649a614204b528982bebc7026372d61677ce3a" + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.3.7" + args: + dependency: transitive + description: + name: args + sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596 + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.4.2" async: dependency: transitive description: name: async sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.10.0" + audioplayers: + dependency: transitive + description: + name: audioplayers + sha256: "16451eab798b23ad9307aef6f9ca62bb8fb06542af8810eead0d236d3fd40a42" + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.0.1" + audioplayers_android: + dependency: transitive + description: + name: audioplayers_android + sha256: b2c833e6f718b6b030454e329931229afafe9327fdb002874dd544dc8bf2484d + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.0" + audioplayers_darwin: + dependency: transitive + description: + name: audioplayers_darwin + sha256: e7a3c8759bf11ecfe4b20df338bf9f3d37c7719a5761c46a3833aba0ceeaacff + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.0.1" + audioplayers_linux: + dependency: transitive + description: + name: audioplayers_linux + sha256: e95b65e1f4d4764601dac5e65f8d8186fc29401043ab020f1dacec483d708707 + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.4" + audioplayers_platform_interface: + dependency: transitive + description: + name: audioplayers_platform_interface + sha256: "178581a44cb685fd798d2108111d2e98cca3400e30b9c3a05546f124fb37f600" + url: "https://pub.flutter-io.cn" + source: hosted + version: "4.0.0" + audioplayers_web: + dependency: transitive + description: + name: audioplayers_web + sha256: "859ba09be2a57e57a787273f18c8cf0d9b61383870c5ee4b5632fe9adbc37edf" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.2.0" + audioplayers_windows: + dependency: transitive + description: + name: audioplayers_windows + sha256: "622e01c4c357c2aaf1b956c3a0f89d97c3cb40315c03f16e3b6c2a31ff9c38bc" + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.1.3" + azlistview_all_platforms: + dependency: transitive + description: + name: azlistview_all_platforms + sha256: "47ce2204863e0c3e481ca2a3813096d9818b153f1f677e839503e33d36e97993" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.1.2" boolean_selector: dependency: transitive description: name: boolean_selector sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.1" + build: + dependency: transitive + description: + name: build + sha256: "43865b79fbb78532e4bff7c33087aa43b1d488c4fdef014eaef568af6d8016dc" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.4.0" + cached_network_image: + dependency: "direct main" + description: + name: cached_network_image + sha256: fd3d0dc1d451f9a252b32d95d3f0c3c487bc41a75eba2e6097cb0b9c71491b15 + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.2.3" + cached_network_image_platform_interface: + dependency: transitive + description: + name: cached_network_image_platform_interface + sha256: bb2b8403b4ccdc60ef5f25c70dead1f3d32d24b9d6117cfc087f496b178594a7 + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.0" + cached_network_image_web: + dependency: transitive + description: + name: cached_network_image_web + sha256: b8eb814ebfcb4dea049680f8c1ffb2df399e4d03bf7a352c775e26fa06e02fa0 + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.2" + camera: + dependency: transitive + description: + name: camera + sha256: ebebead3d5ec3d148249331d751d462d7e8c98102b8830a9b45ec96a2bd4333f + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.10.5+2" + camera_android: + dependency: transitive + description: + name: camera_android + sha256: f83e406d34f5faa80bf0f5c3beee4b4c11da94a94e9621c1bb8e312988621b4b + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.10.8+2" + camera_avfoundation: + dependency: transitive + description: + name: camera_avfoundation + sha256: "1a416e452b30955b392f4efbf23291d3f2ba3660a85e1628859eb62d2a2bab26" + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.9.13+2" + camera_platform_interface: + dependency: transitive + description: + name: camera_platform_interface + sha256: "60fa0bb62a4f3bf3a7c413e31e4cd01b69c779ccc8e4668904a24581b86c316b" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.5.1" + camera_web: + dependency: transitive + description: + name: camera_web + sha256: bcbd775fb3a9d51cc3ece899d54ad66f6306410556bac5759f78e13f9228841f + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.3.1+4" characters: dependency: transitive description: name: characters sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.2.1" + charcode: + dependency: transitive + description: + name: charcode + sha256: fb98c0f6d12c920a02ee2d998da788bca066ca5f148492b7085ee23372b12306 + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.3.1" + chewie: + dependency: transitive + description: + name: chewie + sha256: "745e81e84c6d7f3835f89f85bb49771c0a66099e4caf8f8e9e9a372bc66fb2c1" + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.5.0" clock: dependency: transitive description: name: clock sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.1" collection: @@ -38,39 +246,263 @@ packages: description: name: collection sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.17.0" + connectivity: + dependency: "direct main" + description: + name: connectivity + sha256: a8e91263cf3e25fb5cc95e19dfde4999e32a648ac3b9e8a558a28165731678f8 + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.0.6" + connectivity_for_web: + dependency: transitive + description: + name: connectivity_for_web + sha256: "01a390c1d5adc2ed1fa1f52d120c07fe9fd01166a93f965a832fd6cfc0ea6482" + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.4.0+1" + connectivity_macos: + dependency: transitive + description: + name: connectivity_macos + sha256: "51ae08d5162eca9669b9d8951ed83ce19c5355a81149f94e4dee2740beb93628" + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.2.1+2" + connectivity_platform_interface: + dependency: transitive + description: + name: connectivity_platform_interface + sha256: "2d82e942df9d49f29a24bb07fb5ce085d4a53e47818c62364d2b6deb9e0d7a8e" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.1" + convert: + dependency: transitive + description: + name: convert + sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.1.1" cross_file: dependency: transitive description: name: cross_file sha256: "0b0036e8cccbfbe0555fd83c1d31a6f30b77a96b598b35a5d36dd41f718695e9" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.3.3+4" + crypto: + dependency: transitive + description: + name: crypto + sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.0.3" + csslib: + dependency: transitive + description: + name: csslib + sha256: "831883fb353c8bdc1d71979e5b342c7d88acfbc643113c14ae51e2442ea0f20f" + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.17.3" + csv: + dependency: transitive + description: + name: csv + sha256: "016b31a51a913744a0a1655c74ff13c9379e1200e246a03d96c81c5d9ed297b5" + url: "https://pub.flutter-io.cn" + source: hosted + version: "5.0.2" cupertino_icons: dependency: "direct main" description: name: cupertino_icons sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.5" + desktop_drop: + dependency: transitive + description: + name: desktop_drop + sha256: "4ca4d960f4b11c032e9adfd2a0a8ac615bc3fddb4cbe73dcf840dd8077582186" + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.4.1" + device_info: + dependency: "direct main" + description: + name: device_info + sha256: f4a8156cb7b7480d969cb734907d18b333c8f0bc0b1ad0b342cdcecf30d62c48 + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.3" + device_info_platform_interface: + dependency: transitive + description: + name: device_info_platform_interface + sha256: b148e0bf9640145d09a4f8dea96614076f889e7f7f8b5ecab1c7e5c2dbc73c1b + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.1" + device_info_plus: + dependency: transitive + description: + name: device_info_plus + sha256: b809c4ed5f7fcdb325ccc70b80ad934677dc4e2aa414bf46859a42bfdfafcbb6 + url: "https://pub.flutter-io.cn" + source: hosted + version: "4.1.3" + device_info_plus_linux: + dependency: transitive + description: + name: device_info_plus_linux + sha256: "77a8b3c4af06bc46507f89304d9f49dfc64b4ae004b994532ed23b34adeae4b3" + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.0.0" + device_info_plus_macos: + dependency: transitive + description: + name: device_info_plus_macos + sha256: "37961762fbd46d3620c7b69ca606671014db55fc1b7a11e696fd90ed2e8fe03d" + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.0.0" + device_info_plus_platform_interface: + dependency: transitive + description: + name: device_info_plus_platform_interface + sha256: "83fdba24fcf6846d3b10f10dfdc8b6c6d7ada5f8ed21d62ea2909c2dfa043773" + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.0.0" + device_info_plus_web: + dependency: transitive + description: + name: device_info_plus_web + sha256: "5890f6094df108181c7a29720bc23d0fd6159f17d82787fac093d1fefcaf6325" + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.0.0" + device_info_plus_windows: + dependency: transitive + description: + name: device_info_plus_windows + sha256: "23a2874af0e23ee6e3a2a0ebcecec3a9da13241f2cb93a93a44c8764df123dd7" + url: "https://pub.flutter-io.cn" + source: hosted + version: "4.1.0" + diff_match_patch: + dependency: transitive + description: + name: diff_match_patch + sha256: "2efc9e6e8f449d0abe15be240e2c2a3bcd977c8d126cfd70598aee60af35c0a4" + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.4.1" + dio: + dependency: "direct main" + description: + name: dio + sha256: a9d76e72985d7087eb7c5e7903224ae52b337131518d127c554b9405936752b8 + url: "https://pub.flutter-io.cn" + source: hosted + version: "5.2.1+1" + disk_space: + dependency: transitive + description: + name: disk_space + sha256: fb27eb2d09ac04784f45b95b1355538b2355c76a081eeaa8439d1a5cfa263888 + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.2.1" + dotted_border: + dependency: transitive + description: + name: dotted_border + sha256: "07a5c5e8d4e6e992279e190e0352be8faa5b8f96d81c77a78b2d42f060279840" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.0+3" + extended_image: + dependency: transitive + description: + name: extended_image + sha256: a6b738d9b8d5513be72c545cc3e9c5c451fbee77c8db3cbec7c32ae85b82fb93 + url: "https://pub.flutter-io.cn" + source: hosted + version: "6.4.1" + extended_image_library: + dependency: transitive + description: + name: extended_image_library + sha256: "550743b43ab093aed35ef234500fcc7a304cbac1eca47b0cc991e07e88750758" + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.4.2" fake_async: dependency: transitive description: name: fake_async sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.3.1" + fast_i18n: + dependency: transitive + description: + name: fast_i18n + sha256: f0039a3c1f5f3b7deafefdbb5222d7eb1ee9c2c2fe1222b648b285711b2c7570 + url: "https://pub.flutter-io.cn" + source: hosted + version: "5.12.6" + fc_native_video_thumbnail_for_us: + dependency: transitive + description: + name: fc_native_video_thumbnail_for_us + sha256: db6fa2998195ef5eadac690ae58d6a909ddb5b0283ebbbf9ae4e0e8f99a54902 + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.4.8+1" + ffi: + dependency: transitive + description: + name: ffi + sha256: ed5337a5660c506388a9f012be0288fb38b49020ce2b45fe1f8b8323fe429f99 + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.2" + file: + dependency: transitive + description: + name: file + sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" + url: "https://pub.flutter-io.cn" + source: hosted + version: "6.1.4" + file_picker: + dependency: transitive + description: + name: file_picker + sha256: b85eb92b175767fdaa0c543bf3b0d1f610fe966412ea72845fe5ba7801e763ff + url: "https://pub.flutter-io.cn" + source: hosted + version: "5.2.10" file_selector_linux: dependency: transitive description: name: file_selector_linux sha256: d17c5e450192cdc40b718804dfb4eaf79a71bed60ee9530703900879ba50baa3 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.9.1+3" file_selector_macos: @@ -78,7 +510,7 @@ packages: description: name: file_selector_macos sha256: "6290eec24fc4cc62535fe609e0c6714d3c1306191dc8c3b0319eaecc09423a3a" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.9.2" file_selector_platform_interface: @@ -86,7 +518,7 @@ packages: description: name: file_selector_platform_interface sha256: "2a7f4bbf7bd2f022ecea85bfb1754e87f7dd403a9abc17a84a4fa2ddfe2abc0a" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.5.1" file_selector_windows: @@ -94,38 +526,166 @@ packages: description: name: file_selector_windows sha256: ef246380b66d1fb9089fc65622c387bf3780bca79f533424c31d07f12c2c7fd8 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.9.2" + file_utils: + dependency: transitive + description: + name: file_utils + sha256: d1e64389a22649095c8405c9e177272caf05139255931c9ff30d53b5c9bcaa34 + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.1" flutter: dependency: "direct main" description: flutter source: sdk version: "0.0.0" + flutter_blurhash: + dependency: transitive + description: + name: flutter_blurhash + sha256: "05001537bd3fac7644fa6558b09ec8c0a3f2eba78c0765f88912882b1331a5c6" + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.7.0" + flutter_cache_manager: + dependency: "direct main" + description: + name: flutter_cache_manager + sha256: "32cd900555219333326a2d0653aaaf8671264c29befa65bbd9856d204a4c9fb3" + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.3.0" + flutter_easyrefresh: + dependency: transitive + description: + name: flutter_easyrefresh + sha256: "5d161ee5dcac34da9065116568147d742dd25fb9bff3b10024d9054b195087ad" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.2.2" + flutter_image_compress: + dependency: transitive + description: + name: flutter_image_compress + sha256: "37f1b26399098e5f97b74c1483f534855e7dff68ead6ddaccf747029fb03f29f" + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.1.3" + flutter_install_app: + dependency: "direct main" + description: + name: flutter_install_app + sha256: "9b117006d17c900e671c26bcbc9b15c7b8efd15d6f9b4442ad5d576de20fab53" + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.3.0" + flutter_intl: + dependency: "direct main" + description: + name: flutter_intl + sha256: "17b138fab0477c7d17abd8ba67d294786eef8fe80342e58b6253aef7d0ca2bad" + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.0.1" flutter_lints: dependency: "direct dev" description: name: flutter_lints sha256: aeb0b80a8b3709709c9cc496cdc027c5b3216796bc0af0ce1007eaf24464fd4c - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.0.1" + flutter_luban: + dependency: "direct main" + description: + name: flutter_luban + sha256: "42c01fbc1d0dd14f4d573372b79d6747415749552a8e996cf989018cc70cf2a8" + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.1.13" + flutter_markdown: + dependency: transitive + description: + name: flutter_markdown + sha256: dc6d5258653f6857135b32896ccda7f7af0c54dcec832495ad6835154c6c77c0 + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.6.15" + flutter_page_indicator: + dependency: transitive + description: + name: flutter_page_indicator + sha256: a5b2992228c2827b69faed3977681a3f5c313c7f13d72272decbb2923d1d7176 + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.0.3" + flutter_pickers: + dependency: "direct main" + description: + name: flutter_pickers + sha256: f38a9d9229afed75f76bae64e628b78b9c20194873e3c141783523cf21ac8a95 + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.1.9" flutter_plugin_android_lifecycle: dependency: transitive description: name: flutter_plugin_android_lifecycle sha256: "950e77c2bbe1692bc0874fc7fb491b96a4dc340457f4ea1641443d0a6c1ea360" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.0.15" + flutter_plugin_record_plus: + dependency: transitive + description: + name: flutter_plugin_record_plus + sha256: e75a5265d37617327d8756d1c4eb7766625489fc1c5bc437fdfd827538285ee4 + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.0.15" flutter_screenutil: dependency: "direct main" description: name: flutter_screenutil sha256: "0a122936b450324cbdfd51be0819cc6fcebb093eb65585e9cd92263f7a1a8a39" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "5.7.0" + flutter_slidable_for_tencent_im: + dependency: transitive + description: + name: flutter_slidable_for_tencent_im + sha256: "425faab6304305dd7d38aef448af02acd65f425bf2bd47ce3b70b0b4e714c17b" + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.4.0" + flutter_smart_dialog: + dependency: "direct main" + description: + name: flutter_smart_dialog + sha256: acf66eb7b10ebb3173ef6f40040c0808d4fd56ade885cc850657b5463d3b602a + url: "https://pub.flutter-io.cn" + source: hosted + version: "4.9.2" + flutter_svg: + dependency: transitive + description: + name: flutter_svg + sha256: "6ff9fa12892ae074092de2fa6a9938fb21dbabfdaa2ff57dc697ff912fc8d4b2" + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.1.6" + flutter_swiper: + dependency: "direct main" + description: + name: flutter_swiper + sha256: e52a0e894abfa4099a5d4e5098a00597f3b55e25617cdd19e6fe6be5d24858c7 + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.1.6" flutter_test: dependency: "direct dev" description: flutter @@ -141,39 +701,151 @@ packages: description: name: fluttertoast sha256: "474f7d506230897a3cd28c965ec21c5328ae5605fc9c400cd330e9e9d6ac175c" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "8.2.2" + fluwx: + dependency: "direct main" + description: + name: fluwx + sha256: "485b19e75f78d1b2ba867bc36d9e726fd236de6fb0f7587e5eaa840e1bef1a4c" + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.13.1" + geolocator: + dependency: "direct main" + description: + name: geolocator + sha256: "5c23f3613f50586c0bbb2b8f970240ae66b3bd992088cf60dd5ee2e6f7dde3a8" + url: "https://pub.flutter-io.cn" + source: hosted + version: "9.0.2" + geolocator_android: + dependency: transitive + description: + name: geolocator_android + sha256: "94c2cf51f4a8387335cc2d1a21cc50897bc93069e05fc09aee29bd353a14f6f5" + url: "https://pub.flutter-io.cn" + source: hosted + version: "4.1.9" + geolocator_apple: + dependency: transitive + description: + name: geolocator_apple + sha256: "36527c555f4c425f7d8fa8c7c07d67b78e3ff7590d40448051959e1860c1cfb4" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.2.7" + geolocator_platform_interface: + dependency: transitive + description: + name: geolocator_platform_interface + sha256: af4d69231452f9620718588f41acc4cb58312368716bfff2e92e770b46ce6386 + url: "https://pub.flutter-io.cn" + source: hosted + version: "4.0.7" + geolocator_web: + dependency: transitive + description: + name: geolocator_web + sha256: f68a122da48fcfff68bbc9846bb0b74ef651afe84a1b1f6ec20939de4d6860e1 + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.1.6" + geolocator_windows: + dependency: transitive + description: + name: geolocator_windows + sha256: f5911c88e23f48b598dd506c7c19eff0e001645bdc03bb6fecb9f4549208354d + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.1.1" get: dependency: "direct main" description: name: get sha256: "2ba20a47c8f1f233bed775ba2dd0d3ac97b4cf32fc17731b3dfc672b06b0e92a" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "4.6.5" + get_it: + dependency: transitive + description: + name: get_it + sha256: "529de303c739fca98cd7ece5fca500d8ff89649f1bb4b4e94fb20954abcd7468" + url: "https://pub.flutter-io.cn" + source: hosted + version: "7.6.0" + glob: + dependency: transitive + description: + name: glob + sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.1.2" + globbing: + dependency: transitive + description: + name: globbing + sha256: "4f89cfaf6fa74c9c1740a96259da06bd45411ede56744e28017cc534a12b6e2d" + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.0" + html: + dependency: transitive + description: + name: html + sha256: "3a7812d5bcd2894edf53dfaf8cd640876cf6cef50a8f238745c8b8120ea74d3a" + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.15.4" http: dependency: transitive description: name: http sha256: "5895291c13fa8a3bd82e76d5627f69e0d85ca6a30dcac95c4ea19a5d555879c2" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.13.6" + http_client_helper: + dependency: transitive + description: + name: http_client_helper + sha256: "14c6e756644339f561321dab021215475ba4779aa962466f59ccb3ecf66b36c3" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.4" http_parser: dependency: transitive description: name: http_parser sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "4.0.2" + image: + dependency: transitive + description: + name: image + sha256: "8e9d133755c3e84c73288363e6343157c383a0c6c56fc51afcc5d4d7180306d6" + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.3.0" + image_gallery_saver: + dependency: transitive + description: + name: image_gallery_saver + sha256: be812580c7a320d3bf583af89cac6b376f170d48000aca75215a73285a3223a0 + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.7.1" image_picker: dependency: "direct main" description: name: image_picker sha256: "6432178560d95303cc70d038363f892f5a05750dd27bc55220c7301af54d05e9" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.8.8" image_picker_android: @@ -181,7 +853,7 @@ packages: description: name: image_picker_android sha256: "1ec6830289f5b6aeff3aa8239ea737c71950178dda389342dc2215adb06b4bd8" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.8.6+20" image_picker_for_web: @@ -189,7 +861,7 @@ packages: description: name: image_picker_for_web sha256: "98f50d6b9f294c8ba35e25cc0d13b04bfddd25dbc8d32fa9d566a6572f2c081c" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.12" image_picker_ios: @@ -197,7 +869,7 @@ packages: description: name: image_picker_ios sha256: d779210bda268a03b57e923fb1e410f32f5c5e708ad256348bcbf1f44f558fd0 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.8.7+4" image_picker_linux: @@ -205,7 +877,7 @@ packages: description: name: image_picker_linux sha256: "1d8f9a97178d6b8a035f1d2765f17f8ca3d36a40d5594e742a481b1e002f20be" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.2.0" image_picker_macos: @@ -213,7 +885,7 @@ packages: description: name: image_picker_macos sha256: ff094b36d6c06200808f733144a033e45b4e17d59524e1cf7d2af7e4cb94e1ab - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.2.0" image_picker_platform_interface: @@ -221,7 +893,7 @@ packages: description: name: image_picker_platform_interface sha256: "7c7b96bb9413a9c28229e717e6fd1e3edd1cc5569c1778fcca060ecf729b65ee" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.8.0" image_picker_windows: @@ -229,31 +901,87 @@ packages: description: name: image_picker_windows sha256: bf77b819eb62c487e6af53b9eb213adc12bd060ef7e43f3b1dd69c53cc24a61d - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.2.0" + intl: + dependency: transitive + description: + name: intl + sha256: "910f85bce16fb5c6f614e117efa303e85a1731bb0081edf3604a2ae6e9a3cc91" + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.17.0" js: dependency: transitive description: name: js sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.6.5" + json_annotation: + dependency: transitive + description: + name: json_annotation + sha256: b10a7b2ff83d83c777edba3c6a0f97045ddadd56c944e1a23a3fdf43a1bf4467 + url: "https://pub.flutter-io.cn" + source: hosted + version: "4.8.1" + link_preview_generator: + dependency: transitive + description: + name: link_preview_generator + sha256: f296d4f662810b235335c4e539a70d4b551ae7b80e2941a3a8357e37421ae575 + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.2.0" lints: dependency: transitive description: name: lints sha256: "5e4a9cd06d447758280a8ac2405101e0e2094d2a1dbdd3756aec3fe7775ba593" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.0.1" + loading_animation_widget: + dependency: transitive + description: + name: loading_animation_widget + sha256: "1901682600273a966c34cf44a85fc5355da92a8d08a8a43c11adc4e471993e3a" + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.2.0+4" + logging: + dependency: transitive + description: + name: logging + sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340" + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.2.0" + lpinyin: + dependency: transitive + description: + name: lpinyin + sha256: "0bb843363f1f65170efd09fbdfc760c7ec34fc6354f9fcb2f89e74866a0d814a" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.3" + markdown: + dependency: transitive + description: + name: markdown + sha256: "8e332924094383133cee218b676871f42db2514f1f6ac617b6cf6152a7faab8e" + url: "https://pub.flutter-io.cn" + source: hosted + version: "7.1.0" matcher: dependency: transitive description: name: matcher sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.12.13" material_color_utilities: @@ -261,7 +989,7 @@ packages: description: name: material_color_utilities sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.2.0" meta: @@ -269,25 +997,393 @@ packages: description: name: meta sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.8.0" + nested: + dependency: transitive + description: + name: nested + sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20" + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.0" + octo_image: + dependency: transitive + description: + name: octo_image + sha256: "107f3ed1330006a3bea63615e81cf637433f5135a52466c7caa0e7152bca9143" + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.2" + package_config: + dependency: transitive + description: + name: package_config + sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.1.0" + package_info_plus: + dependency: "direct main" + description: + name: package_info_plus + sha256: f62d7253edc197fe3c88d7c2ddab82d68f555e778d55390ccc3537eca8e8d637 + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.4.3+1" + package_info_plus_linux: + dependency: transitive + description: + name: package_info_plus_linux + sha256: "04b575f44233d30edbb80a94e57cad9107aada334fc02aabb42b6becd13c43fc" + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.5" + package_info_plus_macos: + dependency: transitive + description: + name: package_info_plus_macos + sha256: a2ad8b4acf4cd479d4a0afa5a74ea3f5b1c7563b77e52cc32b3ee6956d5482a6 + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.3.0" + package_info_plus_platform_interface: + dependency: transitive + description: + name: package_info_plus_platform_interface + sha256: f7a0c8f1e7e981bc65f8b64137a53fd3c195b18d429fba960babc59a5a1c7ae8 + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.2" + package_info_plus_web: + dependency: transitive + description: + name: package_info_plus_web + sha256: f0829327eb534789e0a16ccac8936a80beed4e2401c4d3a74f3f39094a822d3b + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.6" + package_info_plus_windows: + dependency: transitive + description: + name: package_info_plus_windows + sha256: "79524f11c42dd9078b96d797b3cf79c0a2883a50c4920dc43da8562c115089bc" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.1.0" + pasteboard: + dependency: transitive + description: + name: pasteboard + sha256: "1c8b6a8b3f1d12e55d4e9404433cda1b4abe66db6b17bc2d2fb5965772c04674" + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.2.0" path: dependency: transitive description: name: path sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.8.2" + path_drawing: + dependency: transitive + description: + name: path_drawing + sha256: bbb1934c0cbb03091af082a6389ca2080345291ef07a5fa6d6e078ba8682f977 + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.1" + path_parsing: + dependency: transitive + description: + name: path_parsing + sha256: e3e67b1629e6f7e8100b367d3db6ba6af4b1f0bb80f64db18ef1fbabd2fa9ccf + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.1" + path_provider: + dependency: transitive + description: + name: path_provider + sha256: "3087813781ab814e4157b172f1a11c46be20179fcc9bea043e0fba36bc0acaa2" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.15" + path_provider_android: + dependency: transitive + description: + name: path_provider_android + sha256: "2cec049d282c7f13c594b4a73976b0b4f2d7a1838a6dd5aaf7bd9719196bee86" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.27" + path_provider_foundation: + dependency: transitive + description: + name: path_provider_foundation + sha256: "1995d88ec2948dac43edf8fe58eb434d35d22a2940ecee1a9fefcd62beee6eb3" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.2.3" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + sha256: ffbb8cc9ed2c9ec0e4b7a541e56fd79b138e8f47d2fb86815f15358a349b3b57 + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.1.11" + path_provider_platform_interface: + dependency: transitive + description: + name: path_provider_platform_interface + sha256: "57585299a729335f1298b43245842678cb9f43a6310351b18fb577d6e33165ec" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.6" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + sha256: "1cb68ba4cd3a795033de62ba1b7b4564dace301f952de6bfb3cd91b202b6ee96" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.1.7" + pedantic: + dependency: transitive + description: + name: pedantic + sha256: "67fc27ed9639506c856c840ccce7594d0bdcd91bc8d53d6e52359449a1d50602" + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.11.1" + permission_handler: + dependency: "direct main" + description: + name: permission_handler + sha256: "1b6b3e73f0bcbc856548bbdfb1c33084a401c4f143e220629a9055233d76c331" + url: "https://pub.flutter-io.cn" + source: hosted + version: "10.3.0" + permission_handler_android: + dependency: transitive + description: + name: permission_handler_android + sha256: "8f6a95ccbca13766882f95d32684d7c9bfe6c45650c32bedba948ef1c6a4ddf7" + url: "https://pub.flutter-io.cn" + source: hosted + version: "10.2.3" + permission_handler_apple: + dependency: transitive + description: + name: permission_handler_apple + sha256: "08dcb6ce628ac0b257e429944b4c652c2a4e6af725bdf12b498daa2c6b2b1edb" + url: "https://pub.flutter-io.cn" + source: hosted + version: "9.1.0" + permission_handler_platform_interface: + dependency: transitive + description: + name: permission_handler_platform_interface + sha256: de20a5c3269229c1ae2e5a6b822f6cb59578b23e8255c93fbeebfc82116e6b11 + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.10.0" + permission_handler_windows: + dependency: transitive + description: + name: permission_handler_windows + sha256: f67cab14b4328574938ecea2db3475dad7af7ead6afab6338772c5f88963e38b + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.1.2" + petitparser: + dependency: transitive + description: + name: petitparser + sha256: "49392a45ced973e8d94a85fdb21293fbb40ba805fc49f2965101ae748a3683b4" + url: "https://pub.flutter-io.cn" + source: hosted + version: "5.1.0" + photo_manager: + dependency: transitive + description: + name: photo_manager + sha256: bdc4ab1fa9fb064d8ccfea6ab44119f55b220293d7ce2e19eb5a5f998db86c88 + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.6.0" + platform: + dependency: transitive + description: + name: platform + sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76" + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.1.0" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface sha256: "6a2128648c854906c53fa8e33986fc0247a1116122f9534dd20e3ab9e16a32bc" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.4" + pointycastle: + dependency: transitive + description: + name: pointycastle + sha256: "7c1e5f0d23c9016c5bbd8b1473d0d3fb3fc851b876046039509e18e0c7485f2c" + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.7.3" + process: + dependency: transitive + description: + name: process + sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09" + url: "https://pub.flutter-io.cn" + source: hosted + version: "4.2.4" + provider: + dependency: transitive + description: + name: provider + sha256: cdbe7530b12ecd9eb455bdaa2fcb8d4dad22e80b8afb4798b41479d5ce26847f + url: "https://pub.flutter-io.cn" + source: hosted + version: "6.0.5" + pub_semver: + dependency: transitive + description: + name: pub_semver + sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.1.4" + pull_to_refresh: + dependency: "direct main" + description: + name: pull_to_refresh + sha256: bbadd5a931837b57739cf08736bea63167e284e71fb23b218c8c9a6e042aad12 + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.0" + qiniu_flutter_sdk: + dependency: "direct main" + description: + name: qiniu_flutter_sdk + sha256: ee6edab2fc18ddf11af91fe767d04fd5435af2e693e65f7b00a10c2026f1011a + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.5.0" + qiniu_sdk_base: + dependency: transitive + description: + name: qiniu_sdk_base + sha256: "256eaa6920489d12c534093e61d12232b6252355edc3ef179041bcc0a8746336" + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.5.0" + quiver: + dependency: transitive + description: + name: quiver + sha256: b1c1ac5ce6688d77f65f3375a9abb9319b3cb32486bdc7a1e0fdf004d7ba4e47 + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.2.1" + rxdart: + dependency: transitive + description: + name: rxdart + sha256: "0c7c0cedd93788d996e33041ffecda924cc54389199cde4e6a34b440f50044cb" + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.27.7" + scroll_to_index: + dependency: transitive + description: + name: scroll_to_index + sha256: "5df1597b5bfa1703c02962a7478a187a8c9dedaeb871aedbf7874ee0d58a0bba" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.1.1" + scrollable_positioned_list_for_us: + dependency: transitive + description: + name: scrollable_positioned_list_for_us + sha256: b5bcbb35114902c004a4f98f2dbd5b0a5a7f80a0144a8b46297601e38fa5383d + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.4.2" + shared_preferences: + dependency: "direct main" + description: + name: shared_preferences + sha256: "396f85b8afc6865182610c0a2fc470853d56499f75f7499e2a73a9f0539d23d0" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.1.2" + shared_preferences_android: + dependency: transitive + description: + name: shared_preferences_android + sha256: "6478c6bbbecfe9aced34c483171e90d7c078f5883558b30ec3163cf18402c749" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.1.4" + shared_preferences_foundation: + dependency: transitive + description: + name: shared_preferences_foundation + sha256: e014107bb79d6d3297196f4f2d0db54b5d1f85b8ea8ff63b8e8b391a02700feb + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.2.2" + shared_preferences_linux: + dependency: transitive + description: + name: shared_preferences_linux + sha256: "9d387433ca65717bbf1be88f4d5bb18f10508917a8fa2fb02e0fd0d7479a9afa" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.2.0" + shared_preferences_platform_interface: + dependency: transitive + description: + name: shared_preferences_platform_interface + sha256: fb5cf25c0235df2d0640ac1b1174f6466bd311f621574997ac59018a6664548d + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.2.0" + shared_preferences_web: + dependency: transitive + description: + name: shared_preferences_web + sha256: "74083203a8eae241e0de4a0d597dbedab3b8fef5563f33cf3c12d7e93c655ca5" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.1.0" + shared_preferences_windows: + dependency: transitive + description: + name: shared_preferences_windows + sha256: "5e588e2efef56916a3b229c3bfe81e6a525665a454519ca51dbcc4236a274173" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.2.0" + shell: + dependency: transitive + description: + name: shell + sha256: fd3b7b97e5e7f734138543d5815c6cb6cdd2a1645a0def8ac8e05577cddfbe03 + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.0" sky_engine: dependency: transitive description: flutter @@ -298,15 +1394,31 @@ packages: description: name: source_span sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.9.1" + sqflite: + dependency: transitive + description: + name: sqflite + sha256: b4d6710e1200e96845747e37338ea8a819a12b51689a3bcf31eff0003b37a0b9 + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.2.8+4" + sqflite_common: + dependency: transitive + description: + name: sqflite_common + sha256: "8f7603f3f8f126740bc55c4ca2d1027aab4b74a1267a3e31ce51fe40e3b65b8f" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.4.5+1" stack_trace: dependency: transitive description: name: stack_trace sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.11.0" stream_channel: @@ -314,23 +1426,143 @@ packages: description: name: stream_channel sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.1" + stream_transform: + dependency: transitive + description: + name: stream_transform + sha256: "14a00e794c7c11aa145a170587321aedce29769c08d7f58b1d141da75e3b1c6f" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.1.0" string_scanner: dependency: transitive description: name: string_scanner sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.2.0" + synchronized: + dependency: transitive + description: + name: synchronized + sha256: "5fcbd27688af6082f5abd611af56ee575342c30e87541d0245f7ff99faa02c60" + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.1.0" + system_info2: + dependency: transitive + description: + name: system_info2 + sha256: "90621f3ba586e1f268e38cc7951b172cd4d997e43dc1fbed12eb334c8a22a886" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.4" + tencent_cloud_chat_sdk: + dependency: transitive + description: + name: tencent_cloud_chat_sdk + sha256: f98bdb55164051e2b196cac6e2e79e60248ed8351dc5a91d25568712ccb15839 + url: "https://pub.flutter-io.cn" + source: hosted + version: "5.1.7" + tencent_cloud_chat_uikit: + dependency: "direct main" + description: + name: tencent_cloud_chat_uikit + sha256: "74683402fdc2f387aff4ad70b4fcee4030d4debcf3eb5243e175921b37bc2c89" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.0" + tencent_cloud_uikit_core: + dependency: transitive + description: + name: tencent_cloud_uikit_core + sha256: "0131874c7b15e181001c94f8a668f0ccae3006dea6e70d4e42e5531b63313a27" + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.4" + tencent_extended_text: + dependency: transitive + description: + name: tencent_extended_text + sha256: cf0d283c01a9e63f75666d8b5b1cabd463e18e51802bf1d093d7a65bd369b3d4 + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.2+1" + tencent_extended_text_field: + dependency: transitive + description: + name: tencent_extended_text_field + sha256: daa10f3775bfac1cc841b34275c2746ced7764f3b77222a93edb4c13bad1209b + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.1+2" + tencent_extended_text_library: + dependency: transitive + description: + name: tencent_extended_text_library + sha256: d6dad4e4e426e6319db809267f160082c44a334716e9f8593fac56d65ae75545 + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.0" + tencent_im_base: + dependency: transitive + description: + name: tencent_im_base + sha256: "9b8e712bf27ffae9b686ec532ee8417b8263eba8bab04f105e28a95de1807322" + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.57" + tencent_im_sdk_plugin_platform_interface: + dependency: transitive + description: + name: tencent_im_sdk_plugin_platform_interface + sha256: "6a1f053567246148ad40667f2ab71d82bcee0d5d0c12e587340d2796c342b87e" + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.3.21" + tencent_keyboard_visibility: + dependency: transitive + description: + name: tencent_keyboard_visibility + sha256: f90bc6671bc85d641b5d8dc1ed9e473de8288c477299290da9c535d7b19ff0e8 + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.1" + tencent_open_file: + dependency: transitive + description: + name: tencent_open_file + sha256: "01f94f618da42e5593bbad0657fcd13cfc1c2360cca805d8cdfefe898cbe5429" + url: "https://pub.flutter-io.cn" + source: hosted + version: "4.0.10" + tencent_super_tooltip: + dependency: transitive + description: + name: tencent_super_tooltip + sha256: "94bce1bd23212741d800ed4436b95437438ec27ba1fbadfc1051542e480f7c6a" + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.0.1" + tencent_wechat_camera_picker: + dependency: transitive + description: + name: tencent_wechat_camera_picker + sha256: "6a6fd12d61ad2ef17273a226a165fe0b5e3ef5c7e49779de38503e4f4b6e3ef1" + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.6.5+2" term_glyph: dependency: transitive description: name: term_glyph sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.2.1" test_api: @@ -338,25 +1570,321 @@ packages: description: name: test_api sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.4.16" + tim_ui_kit_sticker_plugin: + dependency: transitive + description: + name: tim_ui_kit_sticker_plugin + sha256: "2a825d33076f319f6c1c87d58e2b0d650c9284ae4afd8efdc206f3e6f3582e64" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.1" + transformer_page_view: + dependency: transitive + description: + name: transformer_page_view + sha256: "2210531bc4148831061c575070173f32693415be8bbbf5bd2159a38f2adff61c" + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.1.6" + transparent_image: + dependency: transitive + description: + name: transparent_image + sha256: e8991d955a2094e197ca24c645efec2faf4285772a4746126ca12875e54ca02f + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.1" + tuple: + dependency: transitive + description: + name: tuple + sha256: a97ce2013f240b2f3807bcbaf218765b6f301c3eff91092bcfa23a039e7dd151 + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.2" typed_data: dependency: transitive description: name: typed_data sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.3.2" + universal_html: + dependency: transitive + description: + name: universal_html + sha256: f2e0ff0c4af8e4bbda4d273ca4a11be4055414f478fad5c161609b74790ff696 + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.2.2" + universal_io: + dependency: transitive + description: + name: universal_io + sha256: "06866290206d196064fd61df4c7aea1ffe9a4e7c4ccaa8fcded42dd41948005d" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.2.0" + url_launcher: + dependency: "direct main" + description: + name: url_launcher + sha256: eb1e00ab44303d50dd487aab67ebc575456c146c6af44422f9c13889984c00f3 + url: "https://pub.flutter-io.cn" + source: hosted + version: "6.1.11" + url_launcher_android: + dependency: transitive + description: + name: url_launcher_android + sha256: eed4e6a1164aa9794409325c3b707ff424d4d1c2a785e7db67f8bbda00e36e51 + url: "https://pub.flutter-io.cn" + source: hosted + version: "6.0.35" + url_launcher_ios: + dependency: transitive + description: + name: url_launcher_ios + sha256: "9af7ea73259886b92199f9e42c116072f05ff9bea2dcb339ab935dfc957392c2" + url: "https://pub.flutter-io.cn" + source: hosted + version: "6.1.4" + url_launcher_linux: + dependency: transitive + description: + name: url_launcher_linux + sha256: "207f4ddda99b95b4d4868320a352d374b0b7e05eefad95a4a26f57da413443f5" + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.0.5" + url_launcher_macos: + dependency: transitive + description: + name: url_launcher_macos + sha256: "91ee3e75ea9dadf38036200c5d3743518f4a5eb77a8d13fda1ee5764373f185e" + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.0.5" + url_launcher_platform_interface: + dependency: transitive + description: + name: url_launcher_platform_interface + sha256: "6c9ca697a5ae218ce56cece69d46128169a58aa8653c1b01d26fcd4aad8c4370" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.1.2" + url_launcher_web: + dependency: transitive + description: + name: url_launcher_web + sha256: "6bb1e5d7fe53daf02a8fee85352432a40b1f868a81880e99ec7440113d5cfcab" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.17" + url_launcher_windows: + dependency: transitive + description: + name: url_launcher_windows + sha256: "254708f17f7c20a9c8c471f67d86d76d4a3f9c1591aad1e15292008aceb82771" + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.0.6" + uuid: + dependency: transitive + description: + name: uuid + sha256: "648e103079f7c64a36dc7d39369cabb358d377078a051d6ae2ad3aa539519313" + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.0.7" vector_math: dependency: transitive description: name: vector_math sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.4" + video_compress: + dependency: "direct main" + description: + name: video_compress + sha256: "407693726e674a1e1958801deb2d9daf5a5297707ba6d03375007012dae7389a" + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.1.2" + video_player: + dependency: "direct main" + description: + name: video_player + sha256: de95f0e9405f29b5582573d4166132e71f83b3158aac14e8ee5767a54f4f1fbd + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.6.1" + video_player_android: + dependency: transitive + description: + name: video_player_android + sha256: f338a5a396c845f4632959511cad3542cdf3167e1b2a1a948ef07f7123c03608 + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.4.9" + video_player_avfoundation: + dependency: transitive + description: + name: video_player_avfoundation + sha256: "4c274e439f349a0ee5cb3c42978393ede173a443b98f50de6ffe6900eaa19216" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.4.6" + video_player_platform_interface: + dependency: transitive + description: + name: video_player_platform_interface + sha256: a8c4dcae2a7a6e7cc1d7f9808294d968eca1993af34a98e95b9bdfa959bec684 + url: "https://pub.flutter-io.cn" + source: hosted + version: "6.1.0" + video_player_web: + dependency: transitive + description: + name: video_player_web + sha256: "44ce41424d104dfb7cf6982cc6b84af2b007a24d126406025bf40de5d481c74c" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.16" + video_thumbnail: + dependency: "direct main" + description: + name: video_thumbnail + sha256: "3455c189d3f0bb4e3fc2236475aa84fe598b9b2d0e08f43b9761f5bc44210016" + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.5.3" + wakelock: + dependency: transitive + description: + name: wakelock + sha256: "769ecf42eb2d07128407b50cb93d7c10bd2ee48f0276ef0119db1d25cc2f87db" + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.6.2" + wakelock_macos: + dependency: transitive + description: + name: wakelock_macos + sha256: "047c6be2f88cb6b76d02553bca5a3a3b95323b15d30867eca53a19a0a319d4cd" + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.4.0" + wakelock_platform_interface: + dependency: transitive + description: + name: wakelock_platform_interface + sha256: "1f4aeb81fb592b863da83d2d0f7b8196067451e4df91046c26b54a403f9de621" + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.3.0" + wakelock_web: + dependency: transitive + description: + name: wakelock_web + sha256: "1b256b811ee3f0834888efddfe03da8d18d0819317f20f6193e2922b41a501b5" + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.4.0" + wakelock_windows: + dependency: transitive + description: + name: wakelock_windows + sha256: "857f77b3fe6ae82dd045455baa626bc4b93cb9bb6c86bf3f27c182167c3a5567" + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.2.1" + watcher: + dependency: transitive + description: + name: watcher + sha256: "6a7f46926b01ce81bfc339da6a7f20afbe7733eff9846f6d6a5466aa4c6667c0" + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.2" + webview_flutter: + dependency: "direct main" + description: + name: webview_flutter + sha256: "789d52bd789373cc1e100fb634af2127e86c99cf9abde09499743270c5de8d00" + url: "https://pub.flutter-io.cn" + source: hosted + version: "4.2.2" + webview_flutter_android: + dependency: transitive + description: + name: webview_flutter_android + sha256: "532135f6f6b8030cd039f30eab23f340d650350e29f38e9b37d2eaad028f1018" + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.8.0" + webview_flutter_platform_interface: + dependency: transitive + description: + name: webview_flutter_platform_interface + sha256: "656e2aeaef318900fffd21468b6ddc7958c7092a642f0e7220bac328b70d4a81" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.3.1" + webview_flutter_wkwebview: + dependency: transitive + description: + name: webview_flutter_wkwebview + sha256: ecc9e9ea15216afc5ba3b1f14aa19414ceba526e57b19cebd970bfa91a0f4058 + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.5.0" + wechat_assets_picker: + dependency: transitive + description: + name: wechat_assets_picker + sha256: "49184fbc83f855bade59961566a6323a2015634ece1f889de5af6fa133a10706" + url: "https://pub.flutter-io.cn" + source: hosted + version: "7.3.4" + win32: + dependency: transitive + description: + name: win32 + sha256: a6f0236dbda0f63aa9a25ad1ff9a9d8a4eaaa5012da0dc59d21afdb1dc361ca4 + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.1.4" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + sha256: ee1505df1426458f7f60aac270645098d318a8b4766d85fde75f76f2e21807d1 + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.0" + xml: + dependency: transitive + description: + name: xml + sha256: "979ee37d622dec6365e2efa4d906c37470995871fe9ae080d967e192d88286b5" + url: "https://pub.flutter-io.cn" + source: hosted + version: "6.2.2" + yaml: + dependency: transitive + description: + name: yaml + sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.1.2" sdks: dart: ">=2.19.6 <3.0.0" - flutter: ">=3.3.0" + flutter: ">=3.7.0" diff --git a/circle_app/pubspec.yaml b/circle_app/pubspec.yaml index 6aafbe2..8426dc1 100644 --- a/circle_app/pubspec.yaml +++ b/circle_app/pubspec.yaml @@ -88,6 +88,10 @@ dependencies: flutter_install_app: 1.3.0 #网络拦截 connectivity: ^3.0.6 + # 支付宝SDK插件 + alipay_kit: 5.0.0 + # 微信SDK插件 + fluwx: ^3.8.1+1 diff --git a/circle_app/windows/flutter/generated_plugin_registrant.cc b/circle_app/windows/flutter/generated_plugin_registrant.cc index e584d49..ca6a177 100644 --- a/circle_app/windows/flutter/generated_plugin_registrant.cc +++ b/circle_app/windows/flutter/generated_plugin_registrant.cc @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -23,6 +24,8 @@ void RegisterPlugins(flutter::PluginRegistry* registry) { registry->GetRegistrarForPlugin("FcNativeVideoThumbnailForUsPluginCApi")); FileSelectorWindowsRegisterWithRegistrar( registry->GetRegistrarForPlugin("FileSelectorWindows")); + GeolocatorWindowsRegisterWithRegistrar( + registry->GetRegistrarForPlugin("GeolocatorWindows")); PasteboardPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("PasteboardPlugin")); PermissionHandlerWindowsPluginRegisterWithRegistrar( diff --git a/circle_app/windows/flutter/generated_plugins.cmake b/circle_app/windows/flutter/generated_plugins.cmake index 17d6504..c05e53e 100644 --- a/circle_app/windows/flutter/generated_plugins.cmake +++ b/circle_app/windows/flutter/generated_plugins.cmake @@ -7,6 +7,7 @@ list(APPEND FLUTTER_PLUGIN_LIST desktop_drop fc_native_video_thumbnail_for_us file_selector_windows + geolocator_windows pasteboard permission_handler_windows url_launcher_windows