版本更新和一些ui问题

This commit is contained in:
YangYuhao 2023-07-03 12:26:48 +08:00
parent 7bd1baad87
commit 79be1cb9cc
18 changed files with 343 additions and 104 deletions

View File

@ -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 'package:get/get.dart';
import '../../util/device.dart'; import '../../network/dio_manager.dart';
import '../../util/util.dart';
import 'state.dart'; import 'state.dart';
import 'package:package_info_plus/package_info_plus.dart'; import 'package:package_info_plus/package_info_plus.dart';
class AboutappLogic extends GetxController { class AboutappLogic extends GetxController {
final AboutappState state = AboutappState(); final AboutappState state = AboutappState();
String version = ""; String version = "";
@override @override
void onInit() { void onInit() {
// TODO: implement onInit // TODO: implement onInit
super.onInit(); super.onInit();
getVersion(); getVersion();
// getAppVersion(); // getAppVersion();
} }
getVersion() async { getVersion() async {
final info = await PackageInfo.fromPlatform(); final info = await PackageInfo.fromPlatform();
version = info.version; version = info.version;
@ -22,6 +27,24 @@ class AboutappLogic extends GetxController {
return version; 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<void> getAppVersion() async { Future<void> getAppVersion() async {
final info = await PackageInfo.fromPlatform(); final info = await PackageInfo.fromPlatform();
@ -29,6 +52,5 @@ class AboutappLogic extends GetxController {
print(info.packageName); print(info.packageName);
print(info.version); print(info.version);
print(info.buildNumber); print(info.buildNumber);
} }
} }

View File

@ -141,7 +141,12 @@ class AboutappPage extends StatelessWidget {
),) ),)
, ,
SizedBox(height: 20.sp), SizedBox(height: 20.sp),
Row( GestureDetector(
behavior: HitTestBehavior.opaque,
onTap: (){
logic.updataApk();
},
child: Row(
children: [ children: [
Text( Text(
'版本更新', '版本更新',
@ -176,6 +181,7 @@ class AboutappPage extends StatelessWidget {
), ),
], ],
), ),
),
], ],
),) ),)
),), ),),

View File

@ -20,10 +20,13 @@ class CircleLogic extends GetxController {
.get(url: Api.getCircleInterests, params: {"page": page}); .get(url: Api.getCircleInterests, params: {"page": page});
var bean = BaseResponse<InterestsBean>.fromJson( var bean = BaseResponse<InterestsBean>.fromJson(
data, (data) => InterestsBean.fromJson(data)); data, (data) => InterestsBean.fromJson(data));
if(bean.data is InterestsBean&&bean.isSuccess()){
circle = bean.data!; circle = bean.data!;
update(); update();
} }
}
loadMore() async { loadMore() async {
page = page++; page = page++;
var data = await DioManager.instance var data = await DioManager.instance

View File

@ -6,6 +6,7 @@ import 'package:circle_app/router/app_routers.dart';
import 'package:circle_app/util/util.dart'; import 'package:circle_app/util/util.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:shared_preferences/shared_preferences.dart';
class ListLogic extends GetxController { class ListLogic extends GetxController {
int callOutPage = 1; int callOutPage = 1;
@ -53,8 +54,15 @@ class ListLogic extends GetxController {
loadCallOutListData(_circleId); loadCallOutListData(_circleId);
} }
void pushMsgPage(Lists bean,String cicleId) { 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()); Get.toNamed(AppRoutes.UserInfoActivity, arguments: bean.user!.id!.toString());
}
// if (bean.isQueen) { // if (bean.isQueen) {
// showJoinCiclePiker(cicleId); // showJoinCiclePiker(cicleId);
// } else { // } else {

View File

@ -1,9 +1,14 @@
import 'dart:io'; import 'dart:io';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:image_picker/image_picker.dart'; import 'package:image_picker/image_picker.dart';
import 'package:qiniu_flutter_sdk/qiniu_flutter_sdk.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'; import 'state.dart';
class FeedbackLogic extends GetxController { class FeedbackLogic extends GetxController {
@ -11,20 +16,35 @@ class FeedbackLogic extends GetxController {
final ImagePicker _picker = ImagePicker(); final ImagePicker _picker = ImagePicker();
var storage = Storage(); var storage = Storage();
var quToken = '';
@override
void onInit() async{
super.onInit();
var data =
await DioManager.instance.get(url: Api.getqiniuToken, params: {});
var bean = BaseResponse<QnTokenData>.fromJson(
data, (data) => QnTokenData.fromJson(data));
if(bean.isSuccess()){
quToken = bean.data!.token.toString();
}
}
Future getImageFile() async { Future getImageFile() async {
try { try {
final XFile? pickedFile = await _picker.pickImage( final XFile? pickedFile = await _picker.pickImage(
source: ImageSource.gallery, source: ImageSource.gallery,
); );
if(null==pickedFile){
// setState(() { return;
// _setImageFileListFromFile(pickedFile); }
// }); SmartDialog.showLoading();
upDataImage(quToken,pickedFile!,CONFIG.USER_INFO_AVATAR,(result){
SmartDialog.dismiss(force: true);
state.imaglist.add(result);
update();
});
} catch (e) { } catch (e) {
// setState(() {
// _pickImageError = e;
// });
} }
} }

View File

@ -3,4 +3,5 @@ class FeedbackState {
///Initialize variables ///Initialize variables
} }
String maxMsg = "0/200"; String maxMsg = "0/200";
List<String> imaglist = [];
} }

View File

@ -4,6 +4,7 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import '../../components/my_app_bar.dart'; import '../../components/my_app_bar.dart';
import '../../router/app_routers.dart';
import '../../util/util.dart'; import '../../util/util.dart';
import 'logic.dart'; import 'logic.dart';
@ -85,9 +86,10 @@ class FeedbackPage extends StatelessWidget {
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 3, // 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) { itemBuilder: (context, index) {
if (index == 0) {
if (index == 0&&controller.state.imaglist.length<3) {
// //
return GestureDetector( return GestureDetector(
onTap: () { onTap: () {
@ -108,8 +110,9 @@ class FeedbackPage extends StatelessWidget {
return Container( return Container(
margin: EdgeInsets.all(5.sp), margin: EdgeInsets.all(5.sp),
child: Center( child: Center(
// child: _buildImageItem( child: _buildImageItem(controller.state.imaglist.length<3 ?
// 'https://book.flutterchina.club/assets/img/logo.png'), 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), SizedBox(height: 50),
Container( GestureDetector(
margin: EdgeInsets.symmetric(horizontal: 72), onTap: () {
height: 42, // showToast("完善资料");
Get.toNamed(AppRoutes.Complete_materialPage, arguments: "user");
// controller.onInit();
},
child: Center(
child: Container(
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(21), borderRadius: BorderRadius.circular(21),
color: Color(0xFF21BEAB), gradient: LinearGradient(
colors: [
Color(0xFF06F9FA),
Color(0xFFDC5BFD),
],
begin: Alignment.centerLeft,
end: Alignment.centerRight,
), ),
child: Center( ),
padding: EdgeInsets.only(
top: 14.sp, bottom: 14.sp, left: 95.sp, right: 95.sp),
child: Text( child: Text(
'提交', "提交",
style: TextStyle(color: Colors.white, fontSize: 16), 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,
),
))
],
);
}
} }

View File

@ -208,6 +208,7 @@ class Complete_materialLogic extends GetxController {
showToast('请上传头像'); showToast('请上传头像');
return; return;
} }
//TODO
LatLng location = await getLocation(); LatLng location = await getLocation();
List<String> interestsList = []; List<String> interestsList = [];
numbers.forEach((element) { 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<String, dynamic> json) {
return QnTokenData(
token: json['token'],
cdnPrefix: json['cdn_prefix'],
);
}
}

View File

@ -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/router/app_routers.dart';
import 'package:circle_app/util/util.dart'; import 'package:circle_app/util/util.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_pickers/pickers.dart'; import 'package:flutter_pickers/pickers.dart';
import 'package:flutter_pickers/style/default_style.dart'; import 'package:flutter_pickers/style/default_style.dart';
import 'package:flutter_pickers/time_picker/model/date_mode.dart'; import 'package:flutter_pickers/time_picker/model/date_mode.dart';
@ -199,6 +200,7 @@ class Complete_materialPage extends StatelessWidget {
fontSize: 14.sp), fontSize: 14.sp),
border: InputBorder.none, border: InputBorder.none,
contentPadding: EdgeInsets.all(20.sp)), contentPadding: EdgeInsets.all(20.sp)),
inputFormatters: [LengthLimitingTextInputFormatter(40)],
) )
], ],
), ),

View File

@ -30,6 +30,7 @@ class MinefragmentLogic extends GetxController {
isVip = userInfoBean!.vip; isVip = userInfoBean!.vip;
SharedPreferences prefs = await SharedPreferences.getInstance(); SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setInt('vip', isVip); prefs.setInt('vip', isVip);
prefs.setInt('userId', userInfoBean!.id);
ageMsg = getAgeCOntent(userInfoBean!.gender, userInfoBean!.age, userInfoBean!.role, userInfoBean!.orientation); ageMsg = getAgeCOntent(userInfoBean!.gender, userInfoBean!.age, userInfoBean!.role, userInfoBean!.orientation);
} }

View File

@ -1,7 +1,12 @@
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:image_picker/image_picker.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'; import 'state.dart';
class ReportLogic extends GetxController { class ReportLogic extends GetxController {
@ -22,18 +27,36 @@ class ReportLogic extends GetxController {
return arrList; return arrList;
} }
final ImagePicker _picker = ImagePicker(); 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<QnTokenData>.fromJson(
data, (data) => QnTokenData.fromJson(data));
if(bean.isSuccess()){
quToken = bean.data!.token.toString();
}
}
Future getImageFile() async { Future getImageFile() async {
try { try {
final XFile? pickedFile = await _picker.pickImage( final XFile? pickedFile = await _picker.pickImage(
source: ImageSource.gallery, source: ImageSource.gallery,
); );
// setState(() { if(null==pickedFile){
// _setImageFileListFromFile(pickedFile); return;
// }); }
SmartDialog.showLoading();
upDataImage(quToken,pickedFile!,CONFIG.USER_INFO_AVATAR,(result){
SmartDialog.dismiss(force: true);
state.imaglist.add(result);
update();
});
} catch (e) { } catch (e) {
// setState(() {
// _pickImageError = e;
// });
} }
} }
} }

View File

@ -1,7 +1,7 @@
import 'logic.dart'; import 'logic.dart';
class ReportState { class ReportState {
List<String> imaglist = [];
ReportState() { ReportState() {
///Initialize variables ///Initialize variables

View File

@ -3,6 +3,7 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import '../../components/my_app_bar.dart'; import '../../components/my_app_bar.dart';
import '../../router/app_routers.dart';
import '../../util/util.dart'; import '../../util/util.dart';
import 'logic.dart'; import 'logic.dart';
@ -78,7 +79,7 @@ class ReportPage extends StatelessWidget {
), ),
SizedBox(height: 30), SizedBox(height: 30),
Container( Container(
margin: EdgeInsets.only(left: 16, right: 16), // margin: EdgeInsets.only(left: 10, right: 10),
height: 200, height: 200,
width: double.infinity, width: double.infinity,
decoration: BoxDecoration( decoration: BoxDecoration(
@ -183,9 +184,9 @@ class ReportPage extends StatelessWidget {
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 3, // 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) { itemBuilder: (BuildContext context, int index) {
if (index == 0) { if (index == 0&&controller.state.imaglist.length<3) {
// //
return GestureDetector( return GestureDetector(
onTap: () { onTap: () {
@ -205,8 +206,9 @@ class ReportPage extends StatelessWidget {
return Container( return Container(
margin: EdgeInsets.all(5.sp), margin: EdgeInsets.all(5.sp),
child: Center( child: Center(
// child: _buildImageItem( child: _buildImageItem(controller.state.imaglist.length<3 ?
// 'https://book.flutterchina.club/assets/img/logo.png'), 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,
),
))
],
);
}
} }

View File

@ -26,6 +26,10 @@ class UserinfoLogic extends GetxController {
bool isMe = false; bool isMe = false;
bool isEdit = false; bool isEdit = false;
bool isUrgeStatus = false; bool isUrgeStatus = false;
bool isOnline = false;
bool isShowAlbum = true;
@override @override
void onInit() async { void onInit() async {
@ -42,6 +46,7 @@ class UserinfoLogic extends GetxController {
isVip = userInfoBean!.vip; isVip = userInfoBean!.vip;
onLineCity = userInfoBean!.isOnline == true ? "在线" : "离线"; onLineCity = userInfoBean!.isOnline == true ? "在线" : "离线";
isOnline = userInfoBean!.isOnline;
if (userInfoBean!.city != null) { if (userInfoBean!.city != null) {
onLineCity = "$onLineCity·${userInfoBean!.city}"; onLineCity = "$onLineCity·${userInfoBean!.city}";
} }
@ -91,7 +96,7 @@ class UserinfoLogic extends GetxController {
myAlbumData, (myAlbumData) => AlbumResponseBean.fromJson(myAlbumData)); myAlbumData, (myAlbumData) => AlbumResponseBean.fromJson(myAlbumData));
if(myAlbumBean.isSuccess()){ if(myAlbumBean.isSuccess()){
myAlbumBean.data.lists.forEach((element) { myAlbumBean.data.lists.forEach((element) {
state.imaglist.add(element.url); state.imaglist.add(AlbumListItem(id: element.id,type: element.type,url:element.url));
}); });
} }

View File

@ -1,3 +1,5 @@
import 'dart:math';
import 'package:cached_network_image/cached_network_image.dart'; import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
@ -24,9 +26,21 @@ class _MyTabbedScreenState extends State<UserinfoPage>
@override @override
void initState() { void initState() {
super.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 @override
void dispose() { void dispose() {
_tabController.dispose(); _tabController.dispose();
@ -106,7 +120,7 @@ class _MyTabbedScreenState extends State<UserinfoPage>
padding: EdgeInsets.only( padding: EdgeInsets.only(
top: 10.sp, bottom: 10.sp, left: 55.sp, right: 55.sp), top: 10.sp, bottom: 10.sp, left: 55.sp, right: 55.sp),
child: Text( child: Text(
"完善个人形象", "完善个人形象",
style: TextStyle( style: TextStyle(
color: Colors.white, color: Colors.white,
fontSize: 12, fontSize: 12,
@ -229,12 +243,12 @@ class _MyTabbedScreenState extends State<UserinfoPage>
height: 5.sp, height: 5.sp,
decoration: BoxDecoration( decoration: BoxDecoration(
shape: BoxShape.circle, shape: BoxShape.circle,
color: Color(0xFF00FFF4), color: logic.isOnline? Color(0xFF00FFF4): Color(0xFF787575),
), ),
), ),
Text( Text(
controller.onLineCity, controller.onLineCity,
style: TextStyle(color: Color(0xFF00FFF4)), style: TextStyle(color: logic.isOnline? Color(0xFF00FFF4): Color(0xFF787575)),
) )
], ],
), ),
@ -291,12 +305,14 @@ class _MyTabbedScreenState extends State<UserinfoPage>
), ),
), ),
titleTab(controller), titleTab(controller),
Container( Visibility(
visible: logic.isShowAlbum,
child: Container(
margin: EdgeInsets.only(top: 18.sp, bottom: 14.sp), margin: EdgeInsets.only(top: 18.sp, bottom: 14.sp),
child: controller.isMe? Text( child: controller.isMe? Text(
controller.isLikeFoMsg, controller.isLikeFoMsg,
style: TextStyle(color: Colors.white30), style: TextStyle(color: Colors.white30),
) :Container()) , ) :Container())) ,
Expanded( Expanded(
child: Container( child: Container(
// color: Colors.blue, // color: Colors.blue,
@ -327,22 +343,25 @@ class _MyTabbedScreenState extends State<UserinfoPage>
labelColor: Color(0xFF00FFF4), labelColor: Color(0xFF00FFF4),
unselectedLabelColor: Color(0xB3FFFFFF), unselectedLabelColor: Color(0xB3FFFFFF),
indicatorSize: TabBarIndicatorSize.label, indicatorSize: TabBarIndicatorSize.label,
tabs: [ tabs: const [
Tab( Tab(
text: "形象照", text: "形象照",
), ),
Tab(text: "喊话") Tab(text: "喊话")
], ],
), ),
GestureDetector(onTap: (){ GestureDetector(onTap: (){
controller.isMe? controller.isEdit = !controller.isEdit : controller.urgeChange(); controller.isMe? controller.isEdit = !controller.isEdit : controller.urgeChange();
controller.update(); controller.update();
// controller.updataImage(); // controller.updataImage();
}, },
child: Visibility(
visible: logic.isShowAlbum,
child: Container( child: Container(
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(17), borderRadius: BorderRadius.circular(17),
gradient: LinearGradient( gradient: const LinearGradient(
colors: [ colors: [
Color(0xFF06F9FA), Color(0xFF06F9FA),
Color(0xFFDC5BFD), Color(0xFFDC5BFD),
@ -355,19 +374,20 @@ class _MyTabbedScreenState extends State<UserinfoPage>
top: 2.sp, bottom: 2.sp, left: 12.sp, right: 12.sp), top: 2.sp, bottom: 2.sp, left: 12.sp, right: 12.sp),
child: Text( child: Text(
controller.isMe? controller.isEdit?"完成": "管理" : controller.isUrgeStatus? "已催更":"催更", controller.isMe? controller.isEdit?"完成": "管理" : controller.isUrgeStatus? "已催更":"催更",
style: TextStyle( style: const TextStyle(
color: Colors.white, color: Colors.white,
fontSize: 12, fontSize: 12,
), ),
), ),
),), ),),),
], ],
)); ));
} }
Widget _imageAdapter(UserinfoLogic controller) { Widget _imageAdapter(UserinfoLogic controller) {
return GridView.builder( return GridView.builder(
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 3, // crossAxisCount: 3, //
), ),
itemCount:controller.isMe? itemCount:controller.isMe?
@ -538,8 +558,12 @@ class _MyTabbedScreenState extends State<UserinfoPage>
borderRadius: BorderRadius.circular(0.0), borderRadius: BorderRadius.circular(0.0),
child: GestureDetector( child: GestureDetector(
onTap: () { onTap: () {
List<String> imaglist = [];
controller.state.imaglist.forEach((element) {
imaglist.add(element.url);
});
Get.toNamed(AppRoutes.Swiper, arguments: { Get.toNamed(AppRoutes.Swiper, arguments: {
'imaglist':controller.state.imaglist, 'imaglist':imaglist,
'index':index 'index':index
}); });
}, },

View File

@ -38,13 +38,18 @@ class DioManager {
// //
baseUrl: baseUrl, baseUrl: baseUrl,
// //
connectTimeout: Duration(seconds: 30), connectTimeout: Duration(seconds: 30000000000),
// //
receiveTimeout: Duration(seconds: 30), receiveTimeout: Duration(seconds: 30000000000),
)); ));
_dio!.interceptors.add(LogInterceptor(responseBody: true)); _dio!.interceptors.add(LogInterceptor(responseBody: true));
} }
Future download(String urlPath,String savePath,ProgressCallback progressCallback)async{
return await _dio!.download(urlPath, savePath, onReceiveProgress : progressCallback);
}
/// get请求 /// get请求
/// [isShowErrorToast] true /// [isShowErrorToast] true
/// [isAddTokenInHeader] token /// [isAddTokenInHeader] token
@ -267,3 +272,17 @@ class BaseResponse<T> {
); );
} }
} }
class QnTokenData {
final String token;
final String cdnPrefix;
QnTokenData({required this.token, required this.cdnPrefix});
factory QnTokenData.fromJson(Map<String, dynamic> json) {
return QnTokenData(
token: json['token'],
cdnPrefix: json['cdn_prefix'],
);
}
}

View File

@ -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{ 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(); var path = await getApplicationSupportDirectoryPath();
CompressObject compressObject = CompressObject( CompressObject compressObject = CompressObject(

View File

@ -84,6 +84,8 @@ dependencies:
video_compress: ^3.1.2 video_compress: ^3.1.2
#图片缓存 #图片缓存
cached_network_image: ^3.2.3 cached_network_image: ^3.2.3
#安装apk
flutter_install_app: 1.3.0