版本更新和一些ui问题
This commit is contained in:
parent
7bd1baad87
commit
79be1cb9cc
@ -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<void> getAppVersion() async {
|
||||
final info = await PackageInfo.fromPlatform();
|
||||
@ -29,6 +52,5 @@ class AboutappLogic extends GetxController {
|
||||
print(info.packageName);
|
||||
print(info.version);
|
||||
print(info.buildNumber);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -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,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),)
|
||||
|
||||
@ -20,8 +20,11 @@ class CircleLogic extends GetxController {
|
||||
.get(url: Api.getCircleInterests, params: {"page": page});
|
||||
var bean = BaseResponse<InterestsBean>.fromJson(
|
||||
data, (data) => InterestsBean.fromJson(data));
|
||||
circle = bean.data!;
|
||||
update();
|
||||
if(bean.data is InterestsBean&&bean.isSuccess()){
|
||||
circle = bean.data!;
|
||||
update();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
loadMore() async {
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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<QnTokenData>.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;
|
||||
// });
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -3,4 +3,5 @@ class FeedbackState {
|
||||
///Initialize variables
|
||||
}
|
||||
String maxMsg = "0/200";
|
||||
List<String> imaglist = [];
|
||||
}
|
||||
|
||||
@ -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,
|
||||
),
|
||||
))
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -208,6 +208,7 @@ class Complete_materialLogic extends GetxController {
|
||||
showToast('请上传头像');
|
||||
return;
|
||||
}
|
||||
//TODO 强制获取经纬度
|
||||
LatLng location = await getLocation();
|
||||
List<String> 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<String, dynamic> json) {
|
||||
return QnTokenData(
|
||||
token: json['token'],
|
||||
cdnPrefix: json['cdn_prefix'],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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)],
|
||||
)
|
||||
],
|
||||
),
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
@ -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<QnTokenData>.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;
|
||||
// });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import 'logic.dart';
|
||||
|
||||
class ReportState {
|
||||
|
||||
List<String> imaglist = [];
|
||||
ReportState() {
|
||||
|
||||
///Initialize variables
|
||||
|
||||
@ -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,
|
||||
),
|
||||
))
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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));
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@ -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<UserinfoPage>
|
||||
@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<UserinfoPage>
|
||||
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<UserinfoPage>
|
||||
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<UserinfoPage>
|
||||
),
|
||||
),
|
||||
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<UserinfoPage>
|
||||
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<UserinfoPage>
|
||||
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<UserinfoPage>
|
||||
borderRadius: BorderRadius.circular(0.0),
|
||||
child: GestureDetector(
|
||||
onTap: () {
|
||||
List<String> imaglist = [];
|
||||
controller.state.imaglist.forEach((element) {
|
||||
imaglist.add(element.url);
|
||||
});
|
||||
Get.toNamed(AppRoutes.Swiper, arguments: {
|
||||
'imaglist':controller.state.imaglist,
|
||||
'imaglist':imaglist,
|
||||
'index':index
|
||||
});
|
||||
},
|
||||
|
||||
@ -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<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'],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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(
|
||||
|
||||
@ -84,6 +84,8 @@ dependencies:
|
||||
video_compress: ^3.1.2
|
||||
#图片缓存
|
||||
cached_network_image: ^3.2.3
|
||||
#安装apk
|
||||
flutter_install_app: 1.3.0
|
||||
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user