diff --git a/circle_app/lib/app/aboutapp/logic.dart b/circle_app/lib/app/aboutapp/logic.dart index d13ff7c..b6a46d7 100644 --- a/circle_app/lib/app/aboutapp/logic.dart +++ b/circle_app/lib/app/aboutapp/logic.dart @@ -1,20 +1,25 @@ +import 'package:dio/dio.dart'; +import 'package:flutter_install_app/flutter_install_app.dart'; +import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; -import '../../util/device.dart'; +import '../../network/dio_manager.dart'; +import '../../util/util.dart'; import 'state.dart'; import 'package:package_info_plus/package_info_plus.dart'; class AboutappLogic extends GetxController { final AboutappState state = AboutappState(); String version = ""; - @override + + @override void onInit() { // TODO: implement onInit super.onInit(); getVersion(); - // getAppVersion(); - + // getAppVersion(); } + getVersion() async { final info = await PackageInfo.fromPlatform(); version = info.version; @@ -22,6 +27,24 @@ class AboutappLogic extends GetxController { return version; } + updataApk() async { + SmartDialog.showLoading(); + var filePath = await getApplicationSupportDirectoryPath(); + filePath = filePath+"kuayou.apk"; + // var data = await DioManager.instance + // .download("https://xidi-official-website.oss-cn-shenzhen.aliyuncs.com/%E8%B7%A8%E5%8F%8B_2.3.4.apk", filePath, (received, total) { + // double progress = received / total * 100; + // print('Download progress: $progress%'); + // }) + // .then((value) => + // print(value)) + // .catchError((error) { + // SmartDialog.dismiss(); + // print(error); + // }); + await AppInstaller.installApk(filePath, actionRequired: false); + + } Future getAppVersion() async { final info = await PackageInfo.fromPlatform(); @@ -29,6 +52,5 @@ class AboutappLogic extends GetxController { print(info.packageName); print(info.version); print(info.buildNumber); - } } diff --git a/circle_app/lib/app/aboutapp/view.dart b/circle_app/lib/app/aboutapp/view.dart index 967a118..2092125 100644 --- a/circle_app/lib/app/aboutapp/view.dart +++ b/circle_app/lib/app/aboutapp/view.dart @@ -141,40 +141,46 @@ class AboutappPage extends StatelessWidget { ),) , SizedBox(height: 20.sp), - Row( - children: [ - Text( - '版本更新', - style: TextStyle( - color: Color(0xFFF7FAFA), - fontSize: 16.sp, + GestureDetector( + behavior: HitTestBehavior.opaque, + onTap: (){ + logic.updataApk(); + }, + child: Row( + children: [ + Text( + '版本更新', + style: TextStyle( + color: Color(0xFFF7FAFA), + fontSize: 16.sp, + ), ), - ), - Spacer(), - Container( - width: 6.sp, - height: 5.sp, - margin: EdgeInsets.only(top: 1.sp, right: 8.sp), - decoration: BoxDecoration( - color: Colors.red, - borderRadius: BorderRadius.circular(3.sp), + Spacer(), + Container( + width: 6.sp, + height: 5.sp, + margin: EdgeInsets.only(top: 1.sp, right: 8.sp), + decoration: BoxDecoration( + color: Colors.red, + borderRadius: BorderRadius.circular(3.sp), + ), ), - ), - Text( - logic.version, - style: TextStyle( - color: Color(0xFFB7BECC), - fontSize: 12.sp, + Text( + logic.version, + style: TextStyle( + color: Color(0xFFB7BECC), + fontSize: 12.sp, + ), ), - ), - SizedBox(width: 8), - Image( - image: AssetImage(getHomeImage("icon_in")), - width: 24.sp, - height: 24.sp, - fit: BoxFit.fill, - ), - ], + SizedBox(width: 8), + Image( + image: AssetImage(getHomeImage("icon_in")), + width: 24.sp, + height: 24.sp, + fit: BoxFit.fill, + ), + ], + ), ), ], ),) diff --git a/circle_app/lib/app/circle/logic.dart b/circle_app/lib/app/circle/logic.dart index 693e3ae..1f88368 100644 --- a/circle_app/lib/app/circle/logic.dart +++ b/circle_app/lib/app/circle/logic.dart @@ -20,8 +20,11 @@ class CircleLogic extends GetxController { .get(url: Api.getCircleInterests, params: {"page": page}); var bean = BaseResponse.fromJson( data, (data) => InterestsBean.fromJson(data)); - circle = bean.data!; - update(); + if(bean.data is InterestsBean&&bean.isSuccess()){ + circle = bean.data!; + update(); + } + } loadMore() async { diff --git a/circle_app/lib/app/circle/widgets/list_logic.dart b/circle_app/lib/app/circle/widgets/list_logic.dart index e3fb683..7d21773 100644 --- a/circle_app/lib/app/circle/widgets/list_logic.dart +++ b/circle_app/lib/app/circle/widgets/list_logic.dart @@ -6,6 +6,7 @@ import 'package:circle_app/router/app_routers.dart'; import 'package:circle_app/util/util.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; +import 'package:shared_preferences/shared_preferences.dart'; class ListLogic extends GetxController { int callOutPage = 1; @@ -53,8 +54,15 @@ class ListLogic extends GetxController { loadCallOutListData(_circleId); } - void pushMsgPage(Lists bean,String cicleId) { - Get.toNamed(AppRoutes.UserInfoActivity, arguments: bean.user!.id!.toString()); + void pushMsgPage(Lists bean,String cicleId) async { + SharedPreferences prefs = await SharedPreferences.getInstance(); + int userId = prefs.getInt("userId")??0; + if(bean.user!.id==userId){ + Get.toNamed(AppRoutes.UserInfoActivity); + }else{ + Get.toNamed(AppRoutes.UserInfoActivity, arguments: bean.user!.id!.toString()); + } + // if (bean.isQueen) { // showJoinCiclePiker(cicleId); // } else { diff --git a/circle_app/lib/app/feedback/logic.dart b/circle_app/lib/app/feedback/logic.dart index dcf76e0..28e1a25 100644 --- a/circle_app/lib/app/feedback/logic.dart +++ b/circle_app/lib/app/feedback/logic.dart @@ -1,9 +1,14 @@ import 'dart:io'; +import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; import 'package:image_picker/image_picker.dart'; import 'package:qiniu_flutter_sdk/qiniu_flutter_sdk.dart'; +import '../../common/config.dart'; +import '../../network/api.dart'; +import '../../network/dio_manager.dart'; +import '../../util/qiniu.dart'; import 'state.dart'; class FeedbackLogic extends GetxController { @@ -11,20 +16,35 @@ class FeedbackLogic extends GetxController { final ImagePicker _picker = ImagePicker(); var storage = Storage(); + var quToken = ''; + + @override + void onInit() async{ + super.onInit(); + var data = + await DioManager.instance.get(url: Api.getqiniuToken, params: {}); + var bean = BaseResponse.fromJson( + data, (data) => QnTokenData.fromJson(data)); + if(bean.isSuccess()){ + quToken = bean.data!.token.toString(); + } + } Future getImageFile() async { try { final XFile? pickedFile = await _picker.pickImage( source: ImageSource.gallery, ); - - // setState(() { - // _setImageFileListFromFile(pickedFile); - // }); + if(null==pickedFile){ + return; + } + SmartDialog.showLoading(); + upDataImage(quToken,pickedFile!,CONFIG.USER_INFO_AVATAR,(result){ + SmartDialog.dismiss(force: true); + state.imaglist.add(result); + update(); + }); } catch (e) { - // setState(() { - // _pickImageError = e; - // }); } } diff --git a/circle_app/lib/app/feedback/state.dart b/circle_app/lib/app/feedback/state.dart index 061e0c4..cd5cc51 100644 --- a/circle_app/lib/app/feedback/state.dart +++ b/circle_app/lib/app/feedback/state.dart @@ -3,4 +3,5 @@ class FeedbackState { ///Initialize variables } String maxMsg = "0/200"; + List imaglist = []; } diff --git a/circle_app/lib/app/feedback/view.dart b/circle_app/lib/app/feedback/view.dart index e27a7f4..6431a62 100644 --- a/circle_app/lib/app/feedback/view.dart +++ b/circle_app/lib/app/feedback/view.dart @@ -4,6 +4,7 @@ import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import '../../components/my_app_bar.dart'; +import '../../router/app_routers.dart'; import '../../util/util.dart'; import 'logic.dart'; @@ -85,9 +86,10 @@ class FeedbackPage extends StatelessWidget { gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 3, // 每行显示的项目数量 ), - itemCount: 4, // Replace with your item count + itemCount:controller.state.imaglist.length<3 ? controller.state.imaglist.length+1: controller.state.imaglist.length, // Replace with your item count itemBuilder: (context, index) { - if (index == 0) { + + if (index == 0&&controller.state.imaglist.length<3) { // 第一个项目,显示固定的图片 return GestureDetector( onTap: () { @@ -108,8 +110,9 @@ class FeedbackPage extends StatelessWidget { return Container( margin: EdgeInsets.all(5.sp), child: Center( - // child: _buildImageItem( - // 'https://book.flutterchina.club/assets/img/logo.png'), + child: _buildImageItem(controller.state.imaglist.length<3 ? + controller.state.imaglist[index-1]: controller.state.imaglist[index], // Replace with your item count + controller,controller.state.imaglist.length<3 ? index-1:index ), ), ); } @@ -125,17 +128,34 @@ class FeedbackPage extends StatelessWidget { ), ), SizedBox(height: 50), - Container( - margin: EdgeInsets.symmetric(horizontal: 72), - height: 42, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(21), - color: Color(0xFF21BEAB), - ), + GestureDetector( + onTap: () { + // showToast("完善资料"); + Get.toNamed(AppRoutes.Complete_materialPage, arguments: "user"); + // controller.onInit(); + }, child: Center( - child: Text( - '提交', - style: TextStyle(color: Colors.white, fontSize: 16), + child: Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(21), + gradient: LinearGradient( + colors: [ + Color(0xFF06F9FA), + Color(0xFFDC5BFD), + ], + begin: Alignment.centerLeft, + end: Alignment.centerRight, + ), + ), + padding: EdgeInsets.only( + top: 14.sp, bottom: 14.sp, left: 95.sp, right: 95.sp), + child: Text( + "提交", + style: TextStyle( + color: Colors.white, + fontSize: 12, + ), + ), ), ), ), @@ -146,4 +166,49 @@ class FeedbackPage extends StatelessWidget { ); }); } + + Widget _buildImageItem(String url, FeedbackLogic controller, int index) { + return Stack( + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(0.0), + child: Container( + width: double.infinity, // 设置容器宽度为屏幕宽度 + height: double.infinity, // 设置容器高度为屏幕高度 + child: ClipRRect( + borderRadius: BorderRadius.circular(0.0), + child: GestureDetector( + onTap: () { + Get.toNamed(AppRoutes.Swiper, arguments: { + 'imaglist': controller.state.imaglist, + 'index': index + }); + }, + child: Image.network( + fit: BoxFit.cover, + url, + ), + ), + ), + ), + ), + Positioned( + top: 0, + right: 0, + child: GestureDetector( + onTap: () { + controller.state.imaglist.removeAt(index); + controller.update(); + }, + child: Image( + image: AssetImage(getMineImage("icon_img_del")), + width: 20.sp, + height: 20.sp, + ), + )) + ], + ); + } + + } diff --git a/circle_app/lib/app/login/complete_material/logic.dart b/circle_app/lib/app/login/complete_material/logic.dart index e7ad1f1..f1ae00a 100644 --- a/circle_app/lib/app/login/complete_material/logic.dart +++ b/circle_app/lib/app/login/complete_material/logic.dart @@ -208,6 +208,7 @@ class Complete_materialLogic extends GetxController { showToast('请上传头像'); return; } + //TODO 强制获取经纬度 LatLng location = await getLocation(); List interestsList = []; numbers.forEach((element) { @@ -261,16 +262,3 @@ class Complete_materialLogic extends GetxController { } } -class QnTokenData { - final String token; - final String cdnPrefix; - - QnTokenData({required this.token, required this.cdnPrefix}); - - factory QnTokenData.fromJson(Map json) { - return QnTokenData( - token: json['token'], - cdnPrefix: json['cdn_prefix'], - ); - } -} diff --git a/circle_app/lib/app/login/complete_material/view.dart b/circle_app/lib/app/login/complete_material/view.dart index f660270..29ce859 100644 --- a/circle_app/lib/app/login/complete_material/view.dart +++ b/circle_app/lib/app/login/complete_material/view.dart @@ -3,6 +3,7 @@ import 'package:circle_app/components/my_app_bar.dart'; import 'package:circle_app/router/app_routers.dart'; import 'package:circle_app/util/util.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_pickers/pickers.dart'; import 'package:flutter_pickers/style/default_style.dart'; import 'package:flutter_pickers/time_picker/model/date_mode.dart'; @@ -199,6 +200,7 @@ class Complete_materialPage extends StatelessWidget { fontSize: 14.sp), border: InputBorder.none, contentPadding: EdgeInsets.all(20.sp)), + inputFormatters: [LengthLimitingTextInputFormatter(40)], ) ], ), diff --git a/circle_app/lib/app/minefragment/logic.dart b/circle_app/lib/app/minefragment/logic.dart index 14617e6..4c6bbe6 100644 --- a/circle_app/lib/app/minefragment/logic.dart +++ b/circle_app/lib/app/minefragment/logic.dart @@ -30,6 +30,7 @@ class MinefragmentLogic extends GetxController { isVip = userInfoBean!.vip; SharedPreferences prefs = await SharedPreferences.getInstance(); prefs.setInt('vip', isVip); + prefs.setInt('userId', userInfoBean!.id); ageMsg = getAgeCOntent(userInfoBean!.gender, userInfoBean!.age, userInfoBean!.role, userInfoBean!.orientation); } diff --git a/circle_app/lib/app/report/logic.dart b/circle_app/lib/app/report/logic.dart index a0120f5..59bdb8b 100644 --- a/circle_app/lib/app/report/logic.dart +++ b/circle_app/lib/app/report/logic.dart @@ -1,7 +1,12 @@ import 'package:flutter/cupertino.dart'; +import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; import 'package:image_picker/image_picker.dart'; +import '../../common/config.dart'; +import '../../network/api.dart'; +import '../../network/dio_manager.dart'; +import '../../util/qiniu.dart'; import 'state.dart'; class ReportLogic extends GetxController { @@ -22,18 +27,36 @@ class ReportLogic extends GetxController { return arrList; } final ImagePicker _picker = ImagePicker(); + + var quToken = ''; + + @override + void onInit() async{ + super.onInit(); + var data = + await DioManager.instance.get(url: Api.getqiniuToken, params: {}); + var bean = BaseResponse.fromJson( + data, (data) => QnTokenData.fromJson(data)); + if(bean.isSuccess()){ + quToken = bean.data!.token.toString(); + } + } + Future getImageFile() async { try { final XFile? pickedFile = await _picker.pickImage( source: ImageSource.gallery, ); - // setState(() { - // _setImageFileListFromFile(pickedFile); - // }); + if(null==pickedFile){ + return; + } + SmartDialog.showLoading(); + upDataImage(quToken,pickedFile!,CONFIG.USER_INFO_AVATAR,(result){ + SmartDialog.dismiss(force: true); + state.imaglist.add(result); + update(); + }); } catch (e) { - // setState(() { - // _pickImageError = e; - // }); } } } diff --git a/circle_app/lib/app/report/state.dart b/circle_app/lib/app/report/state.dart index c5ce25d..d329224 100644 --- a/circle_app/lib/app/report/state.dart +++ b/circle_app/lib/app/report/state.dart @@ -1,7 +1,7 @@ import 'logic.dart'; class ReportState { - + List imaglist = []; ReportState() { ///Initialize variables diff --git a/circle_app/lib/app/report/view.dart b/circle_app/lib/app/report/view.dart index 1ea94cc..73ee520 100644 --- a/circle_app/lib/app/report/view.dart +++ b/circle_app/lib/app/report/view.dart @@ -3,6 +3,7 @@ import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import '../../components/my_app_bar.dart'; +import '../../router/app_routers.dart'; import '../../util/util.dart'; import 'logic.dart'; @@ -78,7 +79,7 @@ class ReportPage extends StatelessWidget { ), SizedBox(height: 30), Container( - margin: EdgeInsets.only(left: 16, right: 16), + // margin: EdgeInsets.only(left: 10, right: 10), height: 200, width: double.infinity, decoration: BoxDecoration( @@ -183,9 +184,9 @@ class ReportPage extends StatelessWidget { gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 3, // 每行显示的项目数量 ), - itemCount: 20, // 项目的总数量,包括固定图片和接口获取的项目 + itemCount: controller.state.imaglist.length<3 ? controller.state.imaglist.length+1: controller.state.imaglist.length, // Replace with your item count// 项目的总数量,包括固定图片和接口获取的项目 itemBuilder: (BuildContext context, int index) { - if (index == 0) { + if (index == 0&&controller.state.imaglist.length<3) { // 第一个项目,显示固定的图片 return GestureDetector( onTap: () { @@ -205,8 +206,9 @@ class ReportPage extends StatelessWidget { return Container( margin: EdgeInsets.all(5.sp), child: Center( - // child: _buildImageItem( - // 'https://book.flutterchina.club/assets/img/logo.png'), + child: _buildImageItem(controller.state.imaglist.length<3 ? + controller.state.imaglist[index-1]: controller.state.imaglist[index], // Replace with your item count + controller,controller.state.imaglist.length<3 ? index-1:index ), ), ); } @@ -271,4 +273,47 @@ class ReportPage extends StatelessWidget { ); } } + + Widget _buildImageItem(String url, ReportLogic controller, int index) { + return Stack( + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(0.0), + child: Container( + width: double.infinity, // 设置容器宽度为屏幕宽度 + height: double.infinity, // 设置容器高度为屏幕高度 + child: ClipRRect( + borderRadius: BorderRadius.circular(0.0), + child: GestureDetector( + onTap: () { + Get.toNamed(AppRoutes.Swiper, arguments: { + 'imaglist': controller.state.imaglist, + 'index': index + }); + }, + child: Image.network( + fit: BoxFit.cover, + url, + ), + ), + ), + ), + ), + Positioned( + top: 0, + right: 0, + child: GestureDetector( + onTap: () { + controller.state.imaglist.removeAt(index); + controller.update(); + }, + child: Image( + image: AssetImage(getMineImage("icon_img_del")), + width: 20.sp, + height: 20.sp, + ), + )) + ], + ); + } } diff --git a/circle_app/lib/app/userinfo/logic.dart b/circle_app/lib/app/userinfo/logic.dart index 7d4cbde..44dd370 100644 --- a/circle_app/lib/app/userinfo/logic.dart +++ b/circle_app/lib/app/userinfo/logic.dart @@ -26,6 +26,10 @@ class UserinfoLogic extends GetxController { bool isMe = false; bool isEdit = false; bool isUrgeStatus = false; + bool isOnline = false; + + + bool isShowAlbum = true; @override void onInit() async { @@ -42,6 +46,7 @@ class UserinfoLogic extends GetxController { isVip = userInfoBean!.vip; onLineCity = userInfoBean!.isOnline == true ? "在线" : "离线"; + isOnline = userInfoBean!.isOnline; if (userInfoBean!.city != null) { onLineCity = "$onLineCity·${userInfoBean!.city}"; } @@ -91,7 +96,7 @@ class UserinfoLogic extends GetxController { myAlbumData, (myAlbumData) => AlbumResponseBean.fromJson(myAlbumData)); if(myAlbumBean.isSuccess()){ myAlbumBean.data.lists.forEach((element) { - state.imaglist.add(element.url); + state.imaglist.add(AlbumListItem(id: element.id,type: element.type,url:element.url)); }); } diff --git a/circle_app/lib/app/userinfo/view.dart b/circle_app/lib/app/userinfo/view.dart index ba7f1a7..869a0f3 100644 --- a/circle_app/lib/app/userinfo/view.dart +++ b/circle_app/lib/app/userinfo/view.dart @@ -1,3 +1,5 @@ +import 'dart:math'; + import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; @@ -24,9 +26,21 @@ class _MyTabbedScreenState extends State @override void initState() { super.initState(); - _tabController = TabController(length: 2, vsync: this); + _tabController = TabController(length: 2, vsync: this,animationDuration: Duration(seconds: 0)); + _tabController.addListener(_handleTabChange); + // _tabController } + void _handleTabChange() { + // 在这里可以执行滑动监听后的逻辑操作 + // 比如根据当前选中的标签执行其他操作 + // int currentIndex = .toString()); + logic.isShowAlbum = _tabController.index == 0; + logic.update(); + print('Current tab index: ${_tabController.previousIndex}'); + } + + @override void dispose() { _tabController.dispose(); @@ -106,7 +120,7 @@ class _MyTabbedScreenState extends State padding: EdgeInsets.only( top: 10.sp, bottom: 10.sp, left: 55.sp, right: 55.sp), child: Text( - "完善个人形象照", + "完善个人形象", style: TextStyle( color: Colors.white, fontSize: 12, @@ -229,12 +243,12 @@ class _MyTabbedScreenState extends State height: 5.sp, decoration: BoxDecoration( shape: BoxShape.circle, - color: Color(0xFF00FFF4), + color: logic.isOnline? Color(0xFF00FFF4): Color(0xFF787575), ), ), Text( controller.onLineCity, - style: TextStyle(color: Color(0xFF00FFF4)), + style: TextStyle(color: logic.isOnline? Color(0xFF00FFF4): Color(0xFF787575)), ) ], ), @@ -291,12 +305,14 @@ class _MyTabbedScreenState extends State ), ), titleTab(controller), - Container( + Visibility( + visible: logic.isShowAlbum, + child: Container( margin: EdgeInsets.only(top: 18.sp, bottom: 14.sp), child: controller.isMe? Text( controller.isLikeFoMsg, style: TextStyle(color: Colors.white30), - ) :Container()) , + ) :Container())) , Expanded( child: Container( // color: Colors.blue, @@ -327,24 +343,27 @@ class _MyTabbedScreenState extends State labelColor: Color(0xFF00FFF4), unselectedLabelColor: Color(0xB3FFFFFF), indicatorSize: TabBarIndicatorSize.label, - tabs: [ + tabs: const [ Tab( text: "形象照", ), Tab(text: "喊话") ], ), + GestureDetector(onTap: (){ controller.isMe? controller.isEdit = !controller.isEdit : controller.urgeChange(); controller.update(); // controller.updataImage(); }, - child: Container( + child: Visibility( + visible: logic.isShowAlbum, + child: Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular(17), - gradient: LinearGradient( + gradient: const LinearGradient( colors: [ - Color(0xFF06F9FA), + Color(0xFF06F9FA), Color(0xFFDC5BFD), ], begin: Alignment.centerLeft, @@ -355,19 +374,20 @@ class _MyTabbedScreenState extends State top: 2.sp, bottom: 2.sp, left: 12.sp, right: 12.sp), child: Text( controller.isMe? controller.isEdit?"完成": "管理" : controller.isUrgeStatus? "已催更":"催更", - style: TextStyle( + style: const TextStyle( color: Colors.white, fontSize: 12, ), + ), - ),), + ),),), ], )); } Widget _imageAdapter(UserinfoLogic controller) { return GridView.builder( - gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 3, // 每行显示的项目数量 ), itemCount:controller.isMe? @@ -538,8 +558,12 @@ class _MyTabbedScreenState extends State borderRadius: BorderRadius.circular(0.0), child: GestureDetector( onTap: () { + List imaglist = []; + controller.state.imaglist.forEach((element) { + imaglist.add(element.url); + }); Get.toNamed(AppRoutes.Swiper, arguments: { - 'imaglist':controller.state.imaglist, + 'imaglist':imaglist, 'index':index }); }, diff --git a/circle_app/lib/network/dio_manager.dart b/circle_app/lib/network/dio_manager.dart index eb91587..3d06f3f 100644 --- a/circle_app/lib/network/dio_manager.dart +++ b/circle_app/lib/network/dio_manager.dart @@ -38,13 +38,18 @@ class DioManager { // 请求基地址 baseUrl: baseUrl, // 连接服务器超时时间,单位是毫秒 - connectTimeout: Duration(seconds: 30), + connectTimeout: Duration(seconds: 30000000000), // 接收数据的最长时限 - receiveTimeout: Duration(seconds: 30), + receiveTimeout: Duration(seconds: 30000000000), )); _dio!.interceptors.add(LogInterceptor(responseBody: true)); } + Future download(String urlPath,String savePath,ProgressCallback progressCallback)async{ + + return await _dio!.download(urlPath, savePath, onReceiveProgress : progressCallback); + } + /// get请求 /// [isShowErrorToast] 出现错误的情况是否自动弹窗提示错误,默认true /// [isAddTokenInHeader] 请求头是否添加token @@ -267,3 +272,17 @@ class BaseResponse { ); } } + +class QnTokenData { + final String token; + final String cdnPrefix; + + QnTokenData({required this.token, required this.cdnPrefix}); + + factory QnTokenData.fromJson(Map json) { + return QnTokenData( + token: json['token'], + cdnPrefix: json['cdn_prefix'], + ); + } +} diff --git a/circle_app/lib/util/qiniu.dart b/circle_app/lib/util/qiniu.dart index c74f516..5eb17f4 100644 --- a/circle_app/lib/util/qiniu.dart +++ b/circle_app/lib/util/qiniu.dart @@ -42,7 +42,12 @@ void updataQiniu(String filePath,String name,String path ,String quToken,MyCallb //封装上传图片 void upDataImage(String quToken ,XFile pickedFile,String updataRoute,MyCallback myCallback) async{ - + // print(quToken); + if(quToken.isEmpty){ + showToast("图片上传失败"); + SmartDialog.dismiss(force: true); + return; + } var path = await getApplicationSupportDirectoryPath(); CompressObject compressObject = CompressObject( diff --git a/circle_app/pubspec.yaml b/circle_app/pubspec.yaml index cc091e2..7610c94 100644 --- a/circle_app/pubspec.yaml +++ b/circle_app/pubspec.yaml @@ -84,6 +84,8 @@ dependencies: video_compress: ^3.1.2 #图片缓存 cached_network_image: ^3.2.3 + #安装apk + flutter_install_app: 1.3.0