新增del请求 完成个人信息相册相关和催更

This commit is contained in:
YangYuhao 2023-06-30 17:57:17 +08:00
parent 9e55ec1d68
commit 7bd1baad87
11 changed files with 347 additions and 101 deletions

View File

@ -1,15 +1,11 @@
import 'dart:io';
import 'dart:math';
import 'package:circle_app/network/dio_manager.dart'; import 'package:circle_app/network/dio_manager.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_luban/flutter_luban.dart';
import 'package:flutter_pickers/time_picker/model/pduration.dart'; import 'package:flutter_pickers/time_picker/model/pduration.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.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 'package:qiniu_flutter_sdk/qiniu_flutter_sdk.dart';
import '../../../common/config.dart'; import '../../../common/config.dart';
import '../../../network/api.dart'; import '../../../network/api.dart';
@ -17,7 +13,6 @@ import '../../../util/device.dart';
import '../../../util/qiniu.dart'; import '../../../util/qiniu.dart';
import '../../select_circle/logic.dart'; import '../../select_circle/logic.dart';
import '../../userinfo/logic.dart'; import '../../userinfo/logic.dart';
import '../login/logic.dart';
import 'state.dart'; import 'state.dart';
class Complete_materialLogic extends GetxController { class Complete_materialLogic extends GetxController {
@ -59,6 +54,9 @@ class Complete_materialLogic extends GetxController {
state.textEditingController.text = userInfoBean!.nickname; state.textEditingController.text = userInfoBean!.nickname;
state.descEditingController.text = userInfoBean!.signature; state.descEditingController.text = userInfoBean!.signature;
headUrl = userInfoBean!.avatar; headUrl = userInfoBean!.avatar;
userInfoBean!.interests.forEach((element) {
numbers.add(MyConfigData(element.id.toString(),element.title,false));
});
update(); update();
// state.nickName = userInfoBean!.nickname; // state.nickName = userInfoBean!.nickname;
}else{ }else{
@ -72,7 +70,10 @@ class Complete_materialLogic extends GetxController {
await DioManager.instance.get(url: Api.getqiniuToken, params: {}); await DioManager.instance.get(url: Api.getqiniuToken, params: {});
var bean = BaseResponse<QnTokenData>.fromJson( var bean = BaseResponse<QnTokenData>.fromJson(
data, (data) => QnTokenData.fromJson(data)); data, (data) => QnTokenData.fromJson(data));
quToken = bean.data!.token.toString(); if(bean.isSuccess()){
quToken = bean.data!.token.toString();
}
var data1 = var data1 =
await DioManager.instance.get(url: Api.getCircleList, params: {}); await DioManager.instance.get(url: Api.getCircleList, params: {});
@ -102,7 +103,7 @@ class Complete_materialLogic extends GetxController {
} }
SmartDialog.showLoading(); SmartDialog.showLoading();
upDataImage(quToken,pickedFile!,CONFIG.USER_INFO_AVATAR,(result){ upDataImage(quToken,pickedFile!,CONFIG.USER_INFO_AVATAR,(result){
SmartDialog.dismiss(); SmartDialog.dismiss(force: true);
headUrl = result; headUrl = result;
update(); update();
}); });
@ -175,38 +176,60 @@ class Complete_materialLogic extends GetxController {
} }
editInfo() async { editInfo() async {
Map<String, dynamic> params = Map(); if (state.textEditingController.text.isEmpty) {
if (numbers.length > 0) { showToast('请输入您的昵称');
List<String> interestsList = []; return;
numbers.forEach((element) { } else if (state.sex.isEmpty) {
interestsList.add(element.id); showToast('请选择您的属性');
}); return;
params['interests'] = interestsList; } else if (state.age.isEmpty) {
showToast('请选择您的年龄');
return;
} else if (state.role.isEmpty) {
showToast('请选择您的角色');
return;
} else if (state.role.isEmpty) {
showToast('请选择您的角色');
return;
} else if (state.orientation.isEmpty) {
showToast('请选择您的取向');
return;
} else if (numbers.isEmpty) {
showToast('请选择您的兴趣');
// return;
} else if (state.descEditingController.text.isEmpty) {
showToast('请输入您的交友宣言');
return;
} else if (state.descEditingController.text.length < 5) {
showToast('您的交友宣言太短');
return;
} }
if (!headUrl.isEmpty) { if (headUrl == '') {
params['avatar_url'] = headUrl; showToast('请上传头像');
} return;
if (!state.brithday.isEmpty) {
params['birthday'] = state.brithday;
}
if (!state.genderId.isEmpty) {
params['gender'] = state.genderId;
}
if (!state.roleId.isEmpty) {
params['role'] = state.roleId;
}
if (!state.orientationId.isEmpty) {
params['orientation'] = state.orientationId;
} }
LatLng location = await getLocation(); LatLng location = await getLocation();
params['lat'] = location.latitude; List<String> interestsList = [];
params['lng'] = location.longitude; numbers.forEach((element) {
params['nickname'] = state.textEditingController.text; interestsList.add(element.id);
params['signature'] = state.descEditingController.text; });
var data = await DioManager.instance.put(url: Api.UpdataUserInfo, params: params); var data = await DioManager.instance.put(url: Api.UpdataUserInfo, params: {
'avatar_url': headUrl,
'birthday': state.brithday,
'gender': state.genderId, //
'role': state.roleId, //Int
'interests': interestsList, //
'orientation': state.orientationId, //Int
'lat': location.latitude,
'lng': location.longitude,
'nickname': state.textEditingController.text,
'signature': state.descEditingController.text,
});
var bean = BaseResponse<String>.fromJson(data, (data) => data); var bean = BaseResponse<String>.fromJson(data, (data) => data);
if (bean.code == 200) { if (bean.code == 200) {
Get.back(); Get.back();
}else{
showToast(bean.msg);
} }
} }

View File

@ -9,13 +9,15 @@ import 'package:flutter_pickers/time_picker/model/date_mode.dart';
import 'package:flutter_pickers/time_picker/model/pduration.dart'; import 'package:flutter_pickers/time_picker/model/pduration.dart';
import 'package:flutter_pickers/time_picker/model/suffix.dart'; import 'package:flutter_pickers/time_picker/model/suffix.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'logic.dart'; import 'logic.dart';
class Complete_materialPage extends StatelessWidget { class Complete_materialPage extends StatelessWidget {
Complete_materialPage({Key? key}) : super(key: key); Complete_materialPage({Key? key}) : super(key: key);
final logic = Get.put(Complete_materialLogic());
// final logic = Get.put(Complete_materialLogic());
// PickerStyle pickerStyle = PickerStyle(); // PickerStyle pickerStyle = PickerStyle();
@override @override
@ -63,8 +65,8 @@ class Complete_materialPage extends StatelessWidget {
) )
: ClipOval( : ClipOval(
child: CachedNetworkImage( child: CachedNetworkImage(
fit: BoxFit.fill, fit: BoxFit.cover,
imageUrl: controller.headUrl, imageUrl: controller.headUrl,
width: 86.sp, width: 86.sp,
height: 86.sp, height: 86.sp,
), ),
@ -156,9 +158,9 @@ class Complete_materialPage extends StatelessWidget {
var data = await Get.toNamed( var data = await Get.toNamed(
AppRoutes.SelectCircleActivity, AppRoutes.SelectCircleActivity,
arguments: { arguments: {
"interestMap" :controller.configBean.interestMap, "interestMap": controller.configBean.interestMap,
'selectCircle':controller.numbers, 'selectCircle': controller.numbers,
"isRodio" :false "isRodio": false
}); });
if (data != null) { if (data != null) {
controller.numbers = data; controller.numbers = data;
@ -345,7 +347,6 @@ class Complete_materialPage extends StatelessWidget {
); );
} }
showSexPiker(context, Complete_materialLogic controller) { showSexPiker(context, Complete_materialLogic controller) {
Pickers.showSinglePicker(context, Pickers.showSinglePicker(context,
pickerStyle: DefaultPickerStyle.dark(), pickerStyle: DefaultPickerStyle.dark(),

View File

@ -352,8 +352,9 @@ class MinefragmentPage extends StatelessWidget {
Widget _buildAvatarRow(MinefragmentLogic logic) { Widget _buildAvatarRow(MinefragmentLogic logic) {
return GestureDetector( return GestureDetector(
behavior: HitTestBehavior.opaque, behavior: HitTestBehavior.opaque,
onTap: () { onTap: () async{
Get.toNamed(AppRoutes.UserInfoActivity, arguments: ""); await Get.toNamed(AppRoutes.UserInfoActivity, arguments: "");
logic.onInit();
}, },
child: Container( child: Container(
width: Get.width, width: Get.width,

View File

@ -1,6 +1,6 @@
import 'dart:io';
import 'package:flutter_luban/flutter_luban.dart'; import 'dart:convert';
import 'package:flutter_smart_dialog/flutter_smart_dialog.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';
@ -23,7 +23,10 @@ class UserinfoLogic extends GetxController {
var onLineCity = ""; var onLineCity = "";
var isLikeFoMsg = ''; var isLikeFoMsg = '';
var quToken = ''; var quToken = '';
bool isMe = false; bool isMe = false;
bool isEdit = false;
bool isUrgeStatus = false;
@override @override
void onInit() async { void onInit() async {
super.onInit(); super.onInit();
@ -32,54 +35,105 @@ bool isMe = false;
var data = await DioManager.instance.get(url: Api.getUserInfo); var data = await DioManager.instance.get(url: Api.getUserInfo);
var bean = BaseResponse<ResponseBean>.fromJson( var bean = BaseResponse<ResponseBean>.fromJson(
data, (data) => ResponseBean.fromJson(data)); data, (data) => ResponseBean.fromJson(data));
if(bean.isSuccess()){ if (bean.isSuccess()) {
isLikeFoMsg = "${bean.data.imageUrgeCount}位圈友感兴趣,其中${bean.data.likeMeCount}位已催您更新"; isLikeFoMsg =
"${bean.data.imageUrgeCount}位圈友感兴趣,其中${bean.data.likeMeCount}位已催您更新";
userInfoBean = bean.data.user; userInfoBean = bean.data.user;
isVip = userInfoBean!.vip; isVip = userInfoBean!.vip;
onLineCity = userInfoBean!.isOnline == true? "在线":"离线"; onLineCity = userInfoBean!.isOnline == true ? "在线" : "离线";
if(userInfoBean!.city != null) { if (userInfoBean!.city != null) {
onLineCity = "$onLineCity·${userInfoBean!.city}"; onLineCity = "$onLineCity·${userInfoBean!.city}";
} }
ageMsg = getAgeCOntent(userInfoBean!.gender, userInfoBean!.age, userInfoBean!.role, userInfoBean!.orientation); ageMsg = getAgeCOntent(userInfoBean!.gender, userInfoBean!.age,
}else{ userInfoBean!.role, userInfoBean!.orientation);
} else {
showToast(bean.msg); showToast(bean.msg);
} }
var myAlbumData = await DioManager.instance.get(url: Api.getMyAlbum,);
var myAlbumBean = BaseResponse<AlbumResponseBean>.fromJson(
myAlbumData, (myAlbumData) => AlbumResponseBean.fromJson(myAlbumData));
if(myAlbumBean.isSuccess()){
myAlbumBean.data.lists.forEach((element) {
state.imaglist.add(element);
});
}
} else { } else {
isMe = false; isMe = false;
var data = await DioManager.instance.get(url: Api.getUserInfoTA+userId+"/home"); var data = await DioManager.instance
.get(url: "${Api.getUserInfoTA + userId}/home");
var bean = BaseResponse<ResponseBean>.fromJson( var bean = BaseResponse<ResponseBean>.fromJson(
data, (data) => ResponseBean.fromJson(data)); data, (data) => ResponseBean.fromJson(data));
if(bean.isSuccess()){ if (bean.isSuccess()) {
isLikeFoMsg = "${bean.data.imageUrgeCount}位圈友感兴趣,其中${bean.data.likeMeCount}位已催您更新"; isLikeFoMsg =
userInfoBean = bean.data!.user; "${bean.data.imageUrgeCount}位圈友感兴趣,其中${bean.data.likeMeCount}位已催您更新";
isVip = userInfoBean!.vip; userInfoBean = bean.data!.user;
onLineCity = userInfoBean!.isOnline == true? "在线":"离线"; isVip = userInfoBean!.vip;
if(userInfoBean!.city != null){ onLineCity = userInfoBean!.isOnline == true ? "在线" : "离线";
onLineCity = "$onLineCity·${userInfoBean!.city}"; if (userInfoBean!.city != null) {
} onLineCity = "$onLineCity·${userInfoBean!.city}";
}
ageMsg = getAgeCOntent(userInfoBean!.gender, userInfoBean!.age, userInfoBean!.role, userInfoBean!.orientation); ageMsg = getAgeCOntent(userInfoBean!.gender, userInfoBean!.age,
}else{ userInfoBean!.role, userInfoBean!.orientation);
} else {
showToast(bean.msg); showToast(bean.msg);
} }
var myAlbumData = await DioManager.instance.get(url: Api.getTaAlbum+userId+"/albums");
var myAlbumBean = BaseResponse<AlbumResponseBean>.fromJson(
myAlbumData, (myAlbumData) => AlbumResponseBean.fromJson(myAlbumData));
if(myAlbumBean.isSuccess()){
myAlbumBean.data.lists.forEach((element) {
state.imaglist.add(element.url);
});
}
var urgedata = await DioManager.instance.get(url: Api.getUrgeStatus+userId+"/urge/album/status");
var urgeBean = BaseResponse<UrgentStatus>.fromJson(
urgedata, (urgedata) => UrgentStatus.fromJson(urgedata));
isUrgeStatus = urgeBean.data.isUrgent;
} }
update(); update();
var data = var data =
await DioManager.instance.get(url: Api.getqiniuToken, params: {}); await DioManager.instance.get(url: Api.getqiniuToken, params: {});
var bean = BaseResponse<QnTokenData>.fromJson( var bean = BaseResponse<QnTokenData>.fromJson(
data, (data) => QnTokenData.fromJson(data)); data, (data) => QnTokenData.fromJson(data));
quToken = bean.data!.token.toString(); if (bean.isSuccess()) {
quToken = bean.data!.token.toString();
}
}
urgeChange() async{
var data = await DioManager.instance.post(url: Api.urgeAlbum+userId+"/urge/album");
var bean = BaseResponse<String>.fromJson(data, (data) => data);
if(bean.isSuccess()){
showToast("催更成功");
isUrgeStatus = true;
update();
}
} }
updataImage(){
showToast(""+state.updataimaglist.toString()); delAlbumImage(int index) async{
var data = await DioManager.instance.delete(url: Api.deleteAlbum+state.imaglist[index].id.toString());
var bean = BaseResponse<String>.fromJson(data, (data) => data);
if(bean.code == 200){
state.imaglist.removeAt(index);
update();
}
} }
Future getImageFile() async { Future getImageFile() async {
@ -87,20 +141,29 @@ bool isMe = false;
final XFile? pickedFile = await _picker.pickImage( final XFile? pickedFile = await _picker.pickImage(
source: ImageSource.gallery, source: ImageSource.gallery,
); );
if(null==pickedFile){ if (null == pickedFile) {
return; return;
} }
SmartDialog.showLoading();
upDataImage(quToken,pickedFile!,CONFIG.USER_ALBUM_IMAGE,(result){
SmartDialog.dismiss();
state.imaglist.add(result);
state.updataimaglist.add(result);
update();
});
} catch (e) {
} SmartDialog.showLoading();
upDataImage(quToken, pickedFile, CONFIG.USER_ALBUM_IMAGE, (result) async {
var data = await DioManager.instance.post(url: Api.updataAlbum,params: {
"type" :1,
"url": result
});
var myAlbumBean = BaseResponse<AddAlbum>.fromJson(
data, (data) => AddAlbum.fromJson(data));
if (myAlbumBean.code == 200) {
SmartDialog.dismiss();
state.imaglist.add(AlbumListItem(id:myAlbumBean.data.id,type:myAlbumBean.data.type,url: result));
update();
}
});
} catch (e) {}
} }
} }
class UserBean { class UserBean {
@ -114,6 +177,7 @@ class UserBean {
int gender; int gender;
int role; int role;
int orientation; int orientation;
List<Interest> interests;
double lng; double lng;
double lat; double lat;
String? city; String? city;
@ -132,6 +196,7 @@ class UserBean {
required this.gender, required this.gender,
required this.role, required this.role,
required this.orientation, required this.orientation,
required this.interests,
required this.lng, required this.lng,
required this.lat, required this.lat,
this.city, this.city,
@ -152,16 +217,38 @@ class UserBean {
gender: json['gender'], gender: json['gender'],
role: json['role'], role: json['role'],
orientation: json['orientation'], orientation: json['orientation'],
interests: List<Interest>.from(
json['interests'].map((x) => Interest.fromJson(x)),
),
lng: json['lng'], lng: json['lng'],
lat: json['lat'], lat: json['lat'],
city: json['city'], city: json['city'],
isOnline: json['isOnline'], isOnline: json['isOnline'],
offlineTime: json['offlineTime'] != null ? DateTime.parse(json['offlineTime']) : null, offlineTime: json['offlineTime'] != null
? DateTime.parse(json['offlineTime'])
: null,
avatarThumb: json['avatar_thumb'], avatarThumb: json['avatar_thumb'],
); );
} }
} }
class Interest {
int id;
String title;
Interest({
required this.id,
required this.title,
});
factory Interest.fromJson(Map<String, dynamic> json) {
return Interest(
id: json['id'],
title: json['title'],
);
}
}
class ResponseBean { class ResponseBean {
UserBean user; UserBean user;
int likeMeCount; int likeMeCount;
@ -182,3 +269,76 @@ class ResponseBean {
} }
} }
class AlbumResponseBean {
List<AlbumListItem> lists;
int total;
AlbumResponseBean({
required this.lists,
required this.total,
});
factory AlbumResponseBean.fromJson(Map<String, dynamic> json) {
return AlbumResponseBean(
lists: List<AlbumListItem>.from(json['lists'].map((x) => AlbumListItem.fromJson(x))),
total: json['total'],
);
}
}
class AlbumListItem {
int id;
int type;
String url;
AlbumListItem({
required this.id,
required this.type,
required this.url,
});
factory AlbumListItem.fromJson(Map<String, dynamic> json) {
return AlbumListItem(
id: json['id'],
type: json['type'],
url: json['url'],
);
}
}
class AddAlbum {
int id;
int type;
String url;
AddAlbum({
required this.id,
required this.type,
required this.url,
});
factory AddAlbum.fromJson(Map<String, dynamic> json) {
return AddAlbum(
id: json['id'],
type: json['type'],
url: json['url'],
);
}
}
class UrgentStatus {
bool isUrgent;
UrgentStatus({
required this.isUrgent,
});
factory UrgentStatus.fromJson(Map<String, dynamic> json) {
return UrgentStatus(
isUrgent: json['is_urge'],
);
}
}

View File

@ -1,8 +1,9 @@
import 'logic.dart';
class UserinfoState { class UserinfoState {
UserinfoState() { UserinfoState() {
///Initialize variables ///Initialize variables
} }
List<String> imaglist = []; List<AlbumListItem> imaglist = [];
List<String> updataimaglist = [];
} }

View File

@ -87,7 +87,8 @@ class _MyTabbedScreenState extends State<UserinfoPage>
return GestureDetector( return GestureDetector(
onTap: () { onTap: () {
// showToast("完善资料"); // showToast("完善资料");
Get.toNamed(AppRoutes.Complete_materialPage, arguments: "user"); Get.toNamed(AppRoutes.Complete_materialPage, arguments: "user");
// controller.onInit();
}, },
child: Center( child: Center(
child: Container( child: Container(
@ -243,7 +244,7 @@ class _MyTabbedScreenState extends State<UserinfoPage>
// margin: EdgeInsets.only(top: 18.sp, bottom: 18.sp), // margin: EdgeInsets.only(top: 18.sp, bottom: 18.sp),
height: 59.sp, height: 59.sp,
child: ListView.builder( child: ListView.builder(
itemCount: 8, itemCount: controller.userInfoBean==null ? 0 : controller.userInfoBean!.interests.length,
// item // item
scrollDirection: Axis.horizontal, scrollDirection: Axis.horizontal,
// //
@ -275,7 +276,7 @@ class _MyTabbedScreenState extends State<UserinfoPage>
top: 2.sp, bottom: 2.sp, left: 15.sp, right: 15.sp), top: 2.sp, bottom: 2.sp, left: 15.sp, right: 15.sp),
child: Center( child: Center(
child: Text( child: Text(
"圆角背景边框", controller.userInfoBean!.interests[index].title,
style: TextStyle( style: TextStyle(
fontSize: 11.0, fontSize: 11.0,
color: Colors.white, color: Colors.white,
@ -334,15 +335,17 @@ class _MyTabbedScreenState extends State<UserinfoPage>
], ],
), ),
GestureDetector(onTap: (){ GestureDetector(onTap: (){
controller.updataImage(); controller.isMe? controller.isEdit = !controller.isEdit : controller.urgeChange();
controller.update();
// controller.updataImage();
}, },
child: Container( child: Container(
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(17), borderRadius: BorderRadius.circular(17),
gradient: LinearGradient( gradient: LinearGradient(
colors: [ colors: [
controller.state.updataimaglist.length==0 && controller.isMe? Color(0xFF4A3E5D):Color(0xFF06F9FA), Color(0xFF06F9FA),
controller.state.updataimaglist.length==0 && controller.isMe? Color(0xFF344143):Color(0xFFDC5BFD), Color(0xFFDC5BFD),
], ],
begin: Alignment.centerLeft, begin: Alignment.centerLeft,
end: Alignment.centerRight, end: Alignment.centerRight,
@ -351,7 +354,7 @@ class _MyTabbedScreenState extends State<UserinfoPage>
padding: EdgeInsets.only( padding: EdgeInsets.only(
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.isMe? controller.isEdit?"完成": "管理" : controller.isUrgeStatus? "已催更":"催更",
style: TextStyle( style: TextStyle(
color: Colors.white, color: Colors.white,
fontSize: 12, fontSize: 12,
@ -367,9 +370,11 @@ class _MyTabbedScreenState extends State<UserinfoPage>
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 3, // crossAxisCount: 3, //
), ),
itemCount:controller.isMe? controller.state.imaglist.length+1: controller.state.imaglist.length, // itemCount:controller.isMe?
controller.isEdit? controller.state.imaglist.length+1 : controller.state.imaglist.length:
controller.state.imaglist.length, //
itemBuilder: (BuildContext context, int index) { itemBuilder: (BuildContext context, int index) {
if(controller.isMe){ if(controller.isMe&&controller.isEdit){
if (index == 0) { if (index == 0) {
// //
return GestureDetector( return GestureDetector(
@ -389,7 +394,7 @@ class _MyTabbedScreenState extends State<UserinfoPage>
margin: EdgeInsets.all(5.sp), margin: EdgeInsets.all(5.sp),
child: Center( child: Center(
child: _buildImageItem( child: _buildImageItem(
controller.state.imaglist[index-1], controller.state.imaglist[index-1].url,
controller,index-1)), controller,index-1)),
); );
} }
@ -398,7 +403,7 @@ class _MyTabbedScreenState extends State<UserinfoPage>
margin: EdgeInsets.all(5.sp), margin: EdgeInsets.all(5.sp),
child: Center( child: Center(
child: _buildImageItem( child: _buildImageItem(
controller.state.imaglist[index], controller.state.imaglist[index].url,
controller,index)), controller,index)),
); );
} }
@ -555,11 +560,11 @@ class _MyTabbedScreenState extends State<UserinfoPage>
_showDelImgDialog(context,controller,index); _showDelImgDialog(context,controller,index);
}, },
child: Image( child:controller.isEdit? Image(
image: AssetImage(getMineImage("icon_img_del")), image: AssetImage(getMineImage("icon_img_del")),
width: 20.sp, width: 20.sp,
height: 20.sp, height: 20.sp,
), ):Container(),
)) ))
], ],
); );
@ -744,10 +749,9 @@ class _MyTabbedScreenState extends State<UserinfoPage>
GestureDetector( GestureDetector(
onTap: () { onTap: () {
Navigator.pop(context); Navigator.pop(context);
controller.state.updataimaglist.remove(controller.state.updataimaglist[index]); controller.delAlbumImage(index);
controller.state.imaglist.removeAt(index);
controller.update();
}, },
child: Container( child: Container(

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:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:tencent_cloud_chat_uikit/tencent_cloud_chat_uikit.dart'; import 'package:tencent_cloud_chat_uikit/tencent_cloud_chat_uikit.dart';
@ -107,6 +108,7 @@ class _MyAppState extends State<MyApp> {
initialBinding: SplashBinding(), initialBinding: SplashBinding(),
getPages: AppPages.routes, getPages: AppPages.routes,
home: SplashPage(), home: SplashPage(),
builder: FlutterSmartDialog.init(),
debugShowCheckedModeBanner: false, debugShowCheckedModeBanner: false,
); );
}); });

View File

@ -56,4 +56,34 @@ class Api {
// //
static const getUserInfoTA = 'user-service/user/'; static const getUserInfoTA = 'user-service/user/';
//
static const getMyAlbum = 'up-service/my/albums';
//
static const getTaAlbum = 'up-service/user/';
//
static const updataAlbum = 'up-service/album';
//
static const deleteAlbum = 'up-service/album/';
//Ta的相册
static const urgeAlbum = 'up-service/user/';
//
static const getUrgeStatus = 'up-service/user/';
} }

View File

@ -107,6 +107,30 @@ class DioManager {
} }
Future delete<T>({
required String url,
Map<String, dynamic>? params,
bool isAddTokenInHeader = true,
bool isShowErrorToast = true,
FormData? formData,
CancelToken? cancelToken,
ProgressCallback? onSendProgress,
ProgressCallback? onReceiveProgress,
}) async {
return await requestHttp<T>(
url,
method: DioMethod.delete,
// delete
isShowErrorToast: isShowErrorToast,
params: params,
formData: formData,
cancelToken: cancelToken,
onSendProgress: onSendProgress,
onReceiveProgress: onReceiveProgress,
);
}
/// Dio request /// Dio request
Future requestHttp<T>(String url, Future requestHttp<T>(String url,

View File

@ -59,7 +59,7 @@ class AppPages {
), ),
GetPage( GetPage(
name: AppRoutes.Complete_materialPage, name: AppRoutes.Complete_materialPage,
page: () => FlutterSmartDialog(child: Complete_materialPage(),), page: () => Complete_materialPage(),
binding: Complete_materialBinding(), binding: Complete_materialBinding(),
), ),
GetPage( GetPage(
@ -104,12 +104,12 @@ class AppPages {
), ),
GetPage( GetPage(
name: AppRoutes.UserInfoActivity, name: AppRoutes.UserInfoActivity,
page: () => FlutterSmartDialog(child: UserinfoPage()), page: () => UserinfoPage(),
binding: UserinfoBinding(), binding: UserinfoBinding(),
), ),
GetPage( GetPage(
name: AppRoutes.Call_out, name: AppRoutes.Call_out,
page: () => FlutterSmartDialog(child:Call_outPage() ,) , page: () => Call_outPage() ,
binding: Call_outBinding(), binding: Call_outBinding(),
), ),
GetPage(name: AppRoutes.Login, page: () => LoginPage()), GetPage(name: AppRoutes.Login, page: () => LoginPage()),

View File

@ -67,7 +67,7 @@ dependencies:
#权限申请 #权限申请
permission_handler: ^10.3.0 permission_handler: ^10.3.0
#loading #loading
flutter_smart_dialog: 4.9.2 flutter_smart_dialog: ^4.9.2
#获取位置信息 #获取位置信息
geolocator: ^9.0.2 geolocator: ^9.0.2
#获取视频第一帧 #获取视频第一帧