修改安卓版本号1.2.0,iOS1.2.1线上代码提交
This commit is contained in:
parent
85bc065c71
commit
2a84997430
@ -72,7 +72,7 @@ android {
|
|||||||
minSdkVersion 21
|
minSdkVersion 21
|
||||||
targetSdkVersion flutter.targetSdkVersion
|
targetSdkVersion flutter.targetSdkVersion
|
||||||
versionCode 14
|
versionCode 14
|
||||||
versionName "1.1.4"
|
versionName "1.2.0"
|
||||||
manifestPlaceholders = [
|
manifestPlaceholders = [
|
||||||
vivo_APPID: "105669716",
|
vivo_APPID: "105669716",
|
||||||
vivo_APPKEY:"84f750207787376b310ca5b0d5969122",
|
vivo_APPKEY:"84f750207787376b310ca5b0d5969122",
|
||||||
|
|||||||
@ -363,11 +363,11 @@
|
|||||||
DEVELOPMENT_TEAM = C39VUKAY2Z;
|
DEVELOPMENT_TEAM = C39VUKAY2Z;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
INFOPLIST_FILE = Runner/Info.plist;
|
INFOPLIST_FILE = Runner/Info.plist;
|
||||||
INFOPLIST_KEY_CFBundleDisplayName = "跨友Trans";
|
INFOPLIST_KEY_CFBundleDisplayName = "微乐园";
|
||||||
INFOPLIST_KEY_NSCameraUsageDescription = "App会在上传头像时,需要访问您的相机权限";
|
INFOPLIST_KEY_NSCameraUsageDescription = "App会在上传头像时,需要访问您的相机权限";
|
||||||
INFOPLIST_KEY_NSLocationAlwaysUsageDescription = "应用想要访问您的位置,用于设置个人资料";
|
INFOPLIST_KEY_NSLocationAlwaysUsageDescription = "应用想要访问您的位置,用于设置个人资料";
|
||||||
INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "App需要使用您的位置信息,寻找附近用户";
|
INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "App需要使用您的位置信息,寻找附近用户";
|
||||||
INFOPLIST_KEY_NSMicrophoneUsageDescription = "$(PRODUCT_NAME)需要您同意,才能使用麦克风,用来发送语音";
|
INFOPLIST_KEY_NSMicrophoneUsageDescription = "Runner需要您同意,才能使用麦克风,用来发送语音";
|
||||||
INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "是否同意应用将图片保存到相册中?";
|
INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "是否同意应用将图片保存到相册中?";
|
||||||
INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "App会在上传头像时,需要访问您的相册权限";
|
INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "App会在上传头像时,需要访问您的相册权限";
|
||||||
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
|
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
|
||||||
@ -381,7 +381,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.2.0;
|
MARKETING_VERSION = 1.2.1;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.exampe.circleApp;
|
PRODUCT_BUNDLE_IDENTIFIER = com.exampe.circleApp;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||||
@ -512,11 +512,11 @@
|
|||||||
DEVELOPMENT_TEAM = C39VUKAY2Z;
|
DEVELOPMENT_TEAM = C39VUKAY2Z;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
INFOPLIST_FILE = Runner/Info.plist;
|
INFOPLIST_FILE = Runner/Info.plist;
|
||||||
INFOPLIST_KEY_CFBundleDisplayName = "跨友Trans";
|
INFOPLIST_KEY_CFBundleDisplayName = "微乐园";
|
||||||
INFOPLIST_KEY_NSCameraUsageDescription = "App会在上传头像时,需要访问您的相机权限";
|
INFOPLIST_KEY_NSCameraUsageDescription = "App会在上传头像时,需要访问您的相机权限";
|
||||||
INFOPLIST_KEY_NSLocationAlwaysUsageDescription = "应用想要访问您的位置,用于设置个人资料";
|
INFOPLIST_KEY_NSLocationAlwaysUsageDescription = "应用想要访问您的位置,用于设置个人资料";
|
||||||
INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "App需要使用您的位置信息,寻找附近用户";
|
INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "App需要使用您的位置信息,寻找附近用户";
|
||||||
INFOPLIST_KEY_NSMicrophoneUsageDescription = "$(PRODUCT_NAME)需要您同意,才能使用麦克风,用来发送语音";
|
INFOPLIST_KEY_NSMicrophoneUsageDescription = "Runner需要您同意,才能使用麦克风,用来发送语音";
|
||||||
INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "是否同意应用将图片保存到相册中?";
|
INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "是否同意应用将图片保存到相册中?";
|
||||||
INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "App会在上传头像时,需要访问您的相册权限";
|
INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "App会在上传头像时,需要访问您的相册权限";
|
||||||
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
|
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
|
||||||
@ -530,7 +530,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.2.0;
|
MARKETING_VERSION = 1.2.1;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.exampe.circleApp;
|
PRODUCT_BUNDLE_IDENTIFIER = com.exampe.circleApp;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||||
@ -555,11 +555,11 @@
|
|||||||
DEVELOPMENT_TEAM = C39VUKAY2Z;
|
DEVELOPMENT_TEAM = C39VUKAY2Z;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
INFOPLIST_FILE = Runner/Info.plist;
|
INFOPLIST_FILE = Runner/Info.plist;
|
||||||
INFOPLIST_KEY_CFBundleDisplayName = "跨友Trans";
|
INFOPLIST_KEY_CFBundleDisplayName = "微乐园";
|
||||||
INFOPLIST_KEY_NSCameraUsageDescription = "App会在上传头像时,需要访问您的相机权限";
|
INFOPLIST_KEY_NSCameraUsageDescription = "App会在上传头像时,需要访问您的相机权限";
|
||||||
INFOPLIST_KEY_NSLocationAlwaysUsageDescription = "应用想要访问您的位置,用于设置个人资料";
|
INFOPLIST_KEY_NSLocationAlwaysUsageDescription = "应用想要访问您的位置,用于设置个人资料";
|
||||||
INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "App需要使用您的位置信息,寻找附近用户";
|
INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "App需要使用您的位置信息,寻找附近用户";
|
||||||
INFOPLIST_KEY_NSMicrophoneUsageDescription = "$(PRODUCT_NAME)需要您同意,才能使用麦克风,用来发送语音";
|
INFOPLIST_KEY_NSMicrophoneUsageDescription = "Runner需要您同意,才能使用麦克风,用来发送语音";
|
||||||
INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "是否同意应用将图片保存到相册中?";
|
INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "是否同意应用将图片保存到相册中?";
|
||||||
INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "App会在上传头像时,需要访问您的相册权限";
|
INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "App会在上传头像时,需要访问您的相册权限";
|
||||||
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
|
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
|
||||||
@ -573,7 +573,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.2.0;
|
MARKETING_VERSION = 1.2.1;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.exampe.circleApp;
|
PRODUCT_BUNDLE_IDENTIFIER = com.exampe.circleApp;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||||
|
|||||||
@ -32,5 +32,7 @@
|
|||||||
<false/>
|
<false/>
|
||||||
<key>io.flutter.embedded_views_preview</key>
|
<key>io.flutter.embedded_views_preview</key>
|
||||||
<true/>
|
<true/>
|
||||||
|
<key>UIApplicationSupportsIndirectInputEvents</key>
|
||||||
|
<true/>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// import 'package:flutter_install_app/flutter_install_app.dart';
|
import 'package:flutter_install_app/flutter_install_app.dart';
|
||||||
import 'package:dio/dio.dart';
|
import 'package:dio/dio.dart';
|
||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
@ -32,7 +32,7 @@ class AboutappLogic extends GetxController {
|
|||||||
_updateInfo = bean.data;
|
_updateInfo = bean.data;
|
||||||
version = bean.data.version;
|
version = bean.data.version;
|
||||||
update();
|
update();
|
||||||
// showReportDialog(Get.context!, bean.data.constraint == 0, bean.data);
|
showReportDialog(Get.context!, bean.data.constraint == 0, bean.data);
|
||||||
}
|
}
|
||||||
|
|
||||||
//getVersion();
|
//getVersion();
|
||||||
@ -41,7 +41,7 @@ class AboutappLogic extends GetxController {
|
|||||||
|
|
||||||
getVersion() async {
|
getVersion() async {
|
||||||
final info = await PackageInfo.fromPlatform();
|
final info = await PackageInfo.fromPlatform();
|
||||||
currentVersion = "V:${info.version}";
|
currentVersion = "V${info.version}";
|
||||||
//version = info.version;
|
//version = info.version;
|
||||||
update();
|
update();
|
||||||
return version;
|
return version;
|
||||||
|
|||||||
@ -412,14 +412,17 @@ bool isSendLoging = false;
|
|||||||
focusNode.requestFocus();
|
focusNode.requestFocus();
|
||||||
_addDeleteTag();
|
_addDeleteTag();
|
||||||
} else {}
|
} else {}
|
||||||
if (widget.model.editRevokedMsg != "") {
|
if (widget.model.editRevokedMsg.isNotEmpty) {
|
||||||
narrowTextFieldKey.currentState?.showKeyboard = true;
|
narrowTextFieldKey.currentState?.showKeyboard = true;
|
||||||
focusNode.requestFocus();
|
|
||||||
textEditingController.text = widget.model.editRevokedMsg;
|
textEditingController.text = widget.model.editRevokedMsg;
|
||||||
textEditingController.selection = TextSelection.fromPosition(TextPosition(
|
textEditingController.selection = TextSelection.fromPosition(TextPosition(
|
||||||
affinity: TextAffinity.downstream,
|
affinity: TextAffinity.downstream,
|
||||||
offset: widget.model.editRevokedMsg.length));
|
offset: widget.model.editRevokedMsg.length));
|
||||||
widget.model.editRevokedMsg = "";
|
widget.model.editRevokedMsg = "";
|
||||||
|
Future.delayed(Duration(milliseconds: 300),() {
|
||||||
|
focusNode.requestFocus();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -320,12 +320,12 @@ class _TIMTextFieldLayoutNarrowState
|
|||||||
final height = originHeight != 0 ? originHeight : currentKeyboardHeight;
|
final height = originHeight != 0 ? originHeight : currentKeyboardHeight;
|
||||||
return height;
|
return height;
|
||||||
} else if (showMore || showEmojiPanel) {
|
} else if (showMore || showEmojiPanel) {
|
||||||
return 200.0 + (bottomPadding ?? 0.0);
|
return 240.0 + (bottomPadding ?? 0.0);
|
||||||
} else if (widget.textEditingController.text.length >= 46 &&
|
} else if (widget.textEditingController.text.length >= 46 &&
|
||||||
showKeyboard == false) {
|
showKeyboard == false) {
|
||||||
return 15 + (bottomPadding ?? 0.0);
|
return 15 + (bottomPadding ?? 0.0);
|
||||||
} else {
|
} else {
|
||||||
return bottomPadding ?? 0;
|
return bottomPadding == 0 ? 10.sp : bottomPadding ?? 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -677,7 +677,7 @@ class _TIMTextFieldLayoutNarrowState
|
|||||||
Container(
|
Container(
|
||||||
height: 40.sp,
|
height: 40.sp,
|
||||||
width: Get.width,
|
width: Get.width,
|
||||||
margin: EdgeInsets.only(bottom: showEmojiPanel ? 40.sp : 0),
|
margin: EdgeInsets.only(bottom: showEmojiPanel ? Platform.isIOS ? 40.sp : 10.sp : 0),
|
||||||
child: Row(
|
child: Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
||||||
children: [
|
children: [
|
||||||
|
|||||||
@ -43,25 +43,25 @@ class CircleLogic extends GetxController {
|
|||||||
|
|
||||||
List<BannerItem> bannerList = [];
|
List<BannerItem> bannerList = [];
|
||||||
|
|
||||||
|
List<MyConfigData> genderList = [];
|
||||||
|
|
||||||
|
List<MyConfigData> orientationList = [];
|
||||||
|
|
||||||
|
List<MyConfigData> roleList = [];
|
||||||
|
|
||||||
|
List<MyConfigData> dis_genderList = [];
|
||||||
|
|
||||||
|
List<MyConfigData> dis_orientationList = [];
|
||||||
|
|
||||||
|
List<MyConfigData> dis_roleList = [];
|
||||||
|
|
||||||
AutoScrollController scrollController = AutoScrollController();
|
AutoScrollController scrollController = AutoScrollController();
|
||||||
ScrollController listScrollController = ScrollController();
|
ScrollController listScrollController = ScrollController();
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onInit() async {
|
void onInit() {
|
||||||
super.onInit();
|
super.onInit();
|
||||||
var data = await DioManager.instance.get(
|
loadCircleListData();
|
||||||
url: Api.getCircleInterests, params: {"page": page, 'page_size': 20});
|
|
||||||
var bean = BaseResponse<InterestsBean>.fromJson(
|
|
||||||
data, (data) => InterestsBean.fromJson(data));
|
|
||||||
if (bean.data is InterestsBean && bean.isSuccess()) {
|
|
||||||
circle = bean.data!;
|
|
||||||
if (circle.lists.length < 20) {
|
|
||||||
isMore = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
update();
|
|
||||||
}
|
|
||||||
// myVip = await getVip();
|
|
||||||
loadCirclePeopleData();
|
loadCirclePeopleData();
|
||||||
initGerder();
|
initGerder();
|
||||||
getCityList();
|
getCityList();
|
||||||
@ -75,18 +75,21 @@ class CircleLogic extends GetxController {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
List<MyConfigData> genderList = [];
|
|
||||||
|
|
||||||
List<MyConfigData> orientationList = [];
|
loadCircleListData() async {
|
||||||
|
var data = await DioManager.instance.get(
|
||||||
|
url: Api.getCircleInterests, params: {"page": page, 'page_size': 20});
|
||||||
|
var bean = BaseResponse<InterestsBean>.fromJson(
|
||||||
|
data, (data) => InterestsBean.fromJson(data));
|
||||||
|
if (bean.data is InterestsBean && bean.isSuccess()) {
|
||||||
|
circle = bean.data!;
|
||||||
|
if (circle.lists.length < 20) {
|
||||||
|
isMore = false;
|
||||||
|
}
|
||||||
|
|
||||||
List<MyConfigData> roleList = [];
|
update();
|
||||||
|
}
|
||||||
|
}
|
||||||
List<MyConfigData> dis_genderList = [];
|
|
||||||
|
|
||||||
List<MyConfigData> dis_orientationList = [];
|
|
||||||
|
|
||||||
List<MyConfigData> dis_roleList = [];
|
|
||||||
|
|
||||||
void initGerder() async {
|
void initGerder() async {
|
||||||
var data1 =
|
var data1 =
|
||||||
@ -108,7 +111,6 @@ class CircleLogic extends GetxController {
|
|||||||
configBean.roleMap.forEach((key, value) {
|
configBean.roleMap.forEach((key, value) {
|
||||||
roleList.add(MyConfigData(key, value, false));
|
roleList.add(MyConfigData(key, value, false));
|
||||||
dis_roleList.add(MyConfigData(key, value, false));
|
dis_roleList.add(MyConfigData(key, value, false));
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -131,7 +133,6 @@ class CircleLogic extends GetxController {
|
|||||||
}
|
}
|
||||||
cityMap[provinceList[i].name] = areaMap;
|
cityMap[provinceList[i].name] = areaMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
print('Error loading JSON file: $e');
|
print('Error loading JSON file: $e');
|
||||||
}
|
}
|
||||||
@ -238,7 +239,6 @@ class CircleLogic extends GetxController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void getBanner() async {
|
void getBanner() async {
|
||||||
|
|
||||||
var data =
|
var data =
|
||||||
await DioManager.instance.get(url: Api.getNearbyBeanner, params: {});
|
await DioManager.instance.get(url: Api.getNearbyBeanner, params: {});
|
||||||
var bean = BaseResponse<BannerList>.fromJson(
|
var bean = BaseResponse<BannerList>.fromJson(
|
||||||
@ -268,7 +268,7 @@ class CircleLogic extends GetxController {
|
|||||||
orientationList.forEach((element) {
|
orientationList.forEach((element) {
|
||||||
if (element.isSelect) orientations.add(element.id);
|
if (element.isSelect) orientations.add(element.id);
|
||||||
});
|
});
|
||||||
if(offset==0){
|
if (offset == 0) {
|
||||||
getBanner();
|
getBanner();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -295,19 +295,16 @@ class CircleLogic extends GetxController {
|
|||||||
vicinityList.clear();
|
vicinityList.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (vicinityPage == 1) {
|
if (vicinityPage == 1) {
|
||||||
refreshController.refreshCompleted();
|
refreshController.refreshCompleted();
|
||||||
} else {
|
} else {
|
||||||
refreshController.loadComplete();
|
refreshController.loadComplete();
|
||||||
}
|
}
|
||||||
|
|
||||||
try{
|
try {
|
||||||
|
|
||||||
vicinityList.addAll(bean.data.users);
|
vicinityList.addAll(bean.data.users);
|
||||||
vicinityPage = vicinityPage + 1;
|
vicinityPage = vicinityPage + 1;
|
||||||
} on Exception{}
|
} on Exception {}
|
||||||
|
|
||||||
} else if (bean.code == 21201) {
|
} else if (bean.code == 21201) {
|
||||||
myVip = 0;
|
myVip = 0;
|
||||||
refreshController.loadComplete();
|
refreshController.loadComplete();
|
||||||
|
|||||||
@ -535,6 +535,8 @@ class _CirclePageState extends State<CirclePage>
|
|||||||
if (!logic.isMore) {
|
if (!logic.isMore) {
|
||||||
showOKToast('小主,换个方向滑动呗~');
|
showOKToast('小主,换个方向滑动呗~');
|
||||||
}
|
}
|
||||||
|
} else if (index == 0) {
|
||||||
|
showOKToast('小主,换个方向滑动呗~');
|
||||||
}
|
}
|
||||||
|
|
||||||
print(index.toString());
|
print(index.toString());
|
||||||
@ -609,29 +611,21 @@ class _CirclePageState extends State<CirclePage>
|
|||||||
),
|
),
|
||||||
child: Container(
|
child: Container(
|
||||||
margin: EdgeInsets.all(0.6.sp),
|
margin: EdgeInsets.all(0.6.sp),
|
||||||
|
padding: EdgeInsets.only(left: 6.sp,right: 6.sp,top: 4.sp,bottom: 4.sp),
|
||||||
|
alignment: Alignment.center,
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
borderRadius: BorderRadius.circular(17.0),
|
borderRadius: BorderRadius.circular(17.0),
|
||||||
color: const Color(0xFF392D53),
|
color: const Color(0xFF392D53),
|
||||||
),
|
),
|
||||||
child: Padding(
|
|
||||||
padding: EdgeInsets.only(
|
|
||||||
top: 5.sp,
|
|
||||||
bottom: 4.sp,
|
|
||||||
left: 8.sp,
|
|
||||||
right: 8.sp,
|
|
||||||
),
|
|
||||||
child: const Center(
|
|
||||||
child: Text(
|
child: Text(
|
||||||
"邀请得会员",
|
"邀请得会员",
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 11,
|
fontSize: 12.sp,
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
|
||||||
),
|
|
||||||
))
|
))
|
||||||
: _tabController.index == 1
|
: _tabController.index == 1
|
||||||
? Positioned(
|
? Positioned(
|
||||||
|
|||||||
@ -59,11 +59,7 @@ class _DiscoverState extends State<Discover>
|
|||||||
double nextOffset = 0;
|
double nextOffset = 0;
|
||||||
int lastPage = 0;
|
int lastPage = 0;
|
||||||
|
|
||||||
double screenHeight = Platform.isAndroid ? Get.height -
|
double screenHeight = 0;
|
||||||
Get.statusBarHeight - Get.bottomBarHeight : Get.height -
|
|
||||||
Get.bottomBarHeight -
|
|
||||||
Get.statusBarHeight -
|
|
||||||
((Get.height > 750 ? 115.sp : 155.sp) - Get.statusBarHeight);
|
|
||||||
|
|
||||||
|
|
||||||
void animateToOffset(ScrollController controller, double offset,
|
void animateToOffset(ScrollController controller, double offset,
|
||||||
@ -143,6 +139,9 @@ class _DiscoverState extends State<Discover>
|
|||||||
|
|
||||||
|
|
||||||
sub = EventBusManager.on<DiscovrScrollTap>().listen((event) {
|
sub = EventBusManager.on<DiscovrScrollTap>().listen((event) {
|
||||||
|
pointerStart = Offset.zero;
|
||||||
|
pointerEnd = Offset.zero;
|
||||||
|
lastPage = 0;
|
||||||
_scrollController.animateTo(0,
|
_scrollController.animateTo(0,
|
||||||
duration: const Duration(milliseconds: 300), curve: Curves.easeInOut);
|
duration: const Duration(milliseconds: 300), curve: Curves.easeInOut);
|
||||||
});
|
});
|
||||||
@ -259,17 +258,29 @@ class _DiscoverState extends State<Discover>
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
// TODO: add widget build method
|
// TODO: add widget build method
|
||||||
|
|
||||||
screenHeight = Platform.isAndroid ? Get.height - (widget.unlockWxNum == 1 ? 10.sp : Get.bottomBarHeight + 49.sp + 2.sp) -
|
/// 延时一下,需要等state layout结束之后才能获取size
|
||||||
Get.statusBarHeight : Get.height -
|
Future.delayed(Duration(milliseconds: 100), () {
|
||||||
Get.bottomBarHeight -
|
if (!mounted) return;
|
||||||
Get.statusBarHeight -
|
if (screenHeight == 0 && list.isNotEmpty) {
|
||||||
((Get.height > 750 ? 100.sp : 140.sp) - Get.statusBarHeight);
|
var size = context?.findRenderObject()?.paintBounds?.size;
|
||||||
|
screenHeight = size!.height - 20.sp;
|
||||||
|
setState(() {
|
||||||
|
|
||||||
|
});
|
||||||
|
print(size.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
return list.isEmpty
|
return list.isEmpty
|
||||||
? isMore
|
? isMore
|
||||||
? loaddingWidget(true)
|
? loaddingWidget(true)
|
||||||
: noResultWidget(tip: '已解锁微信的圈友会展示在这里哦~')
|
: noResultWidget(tip: '已解锁微信的圈友会展示在这里哦~')
|
||||||
: Listener(
|
: Stack(
|
||||||
|
fit: StackFit.expand,
|
||||||
|
children: [
|
||||||
|
Container(color: Colors.transparent),
|
||||||
|
Listener(
|
||||||
onPointerDown: getPointDownListenerInHorizontal(),
|
onPointerDown: getPointDownListenerInHorizontal(),
|
||||||
onPointerUp: getPointUpListenerInHorizontal(),
|
onPointerUp: getPointUpListenerInHorizontal(),
|
||||||
child: SmartRefresher(
|
child: SmartRefresher(
|
||||||
@ -278,6 +289,7 @@ class _DiscoverState extends State<Discover>
|
|||||||
onLoading: _onLoading,
|
onLoading: _onLoading,
|
||||||
enablePullUp: true,
|
enablePullUp: true,
|
||||||
child: ListView.builder(
|
child: ListView.builder(
|
||||||
|
|
||||||
itemBuilder: (context, index) {
|
itemBuilder: (context, index) {
|
||||||
var user = Users.fromJson(list[index]);
|
var user = Users.fromJson(list[index]);
|
||||||
|
|
||||||
@ -286,13 +298,13 @@ class _DiscoverState extends State<Discover>
|
|||||||
onLineStr = '当前在线';
|
onLineStr = '当前在线';
|
||||||
if (user.distance != null) {
|
if (user.distance != null) {
|
||||||
if (user.distance! < 100) {
|
if (user.distance! < 100) {
|
||||||
onLineStr = '当前在线 · ${user.distance!}km';
|
onLineStr = '当前在线 · ${user.distance!.toInt()}km';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (user.distance != null) {
|
if (user.distance != null) {
|
||||||
if ((user.distance! ?? 10) < 100) {
|
if ((user.distance! ?? 10) < 100) {
|
||||||
onLineStr = '${user.distance!}km';
|
onLineStr = '${user.distance!.toInt()}km';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -635,6 +647,8 @@ class _DiscoverState extends State<Discover>
|
|||||||
controller: _scrollController,
|
controller: _scrollController,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -34,17 +34,17 @@ class _VicinityState extends State<Vicinity> with AutomaticKeepAliveClientMixin
|
|||||||
// TODO: implement initState
|
// TODO: implement initState
|
||||||
super.initState();
|
super.initState();
|
||||||
sub = EventBusManager.on<NearScrollTap>().listen((event) {
|
sub = EventBusManager.on<NearScrollTap>().listen((event) {
|
||||||
if (widget.logic.myVip > 0) {
|
// if (widget.logic.myVip > 0) {
|
||||||
_scrollController.animateTo(0,
|
_scrollController.animateTo(0,
|
||||||
duration: const Duration(milliseconds: 300), curve: Curves.easeInOut);
|
duration: const Duration(milliseconds: 300), curve: Curves.easeInOut);
|
||||||
}
|
// }
|
||||||
});
|
});
|
||||||
|
|
||||||
_scrollController.addListener(() {
|
// _scrollController.addListener(() {
|
||||||
if (maxOff > 0 && widget.logic.myVip == 0 && _scrollController.offset >= maxOff) {
|
// if (maxOff > 0 && widget.logic.myVip == 0 && _scrollController.offset >= maxOff) {
|
||||||
_scrollController.jumpTo(maxOff);
|
// _scrollController.jumpTo(maxOff);
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -59,9 +59,7 @@ class _VicinityState extends State<Vicinity> with AutomaticKeepAliveClientMixin
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
// TODO: add widget build method
|
// TODO: add widget build method
|
||||||
if (widget.logic.myVip == 0 && _scrollController.offset > Get.height) {
|
|
||||||
_scrollController.jumpTo(_scrollController.offset - 150.sp);
|
|
||||||
}
|
|
||||||
return widget.logic.vicinityList.isNotEmpty ? Stack(
|
return widget.logic.vicinityList.isNotEmpty ? Stack(
|
||||||
fit: StackFit.expand,
|
fit: StackFit.expand,
|
||||||
children: [
|
children: [
|
||||||
@ -69,24 +67,34 @@ class _VicinityState extends State<Vicinity> with AutomaticKeepAliveClientMixin
|
|||||||
controller: widget.logic.refreshController,
|
controller: widget.logic.refreshController,
|
||||||
onRefresh: _onRefresh,
|
onRefresh: _onRefresh,
|
||||||
onLoading: _onLoading,
|
onLoading: _onLoading,
|
||||||
enablePullUp: true,
|
enablePullUp: widget.logic.myVip == 0 ? false : true,
|
||||||
child: ListView.builder(
|
child: ListView.builder(
|
||||||
controller: _scrollController,
|
controller: _scrollController,
|
||||||
padding: EdgeInsets.all(10.sp),
|
padding: EdgeInsets.all(10.sp),
|
||||||
itemCount: widget.logic.vicinityList.length + 1,
|
itemCount:widget.logic.vicinityList.length + 1,
|
||||||
itemBuilder: (context, index) {
|
itemBuilder: (context, index) {
|
||||||
if (index == 0) {
|
if (index == 0) {
|
||||||
return bannerView(widget.logic);
|
return bannerView(widget.logic);
|
||||||
|
} else {
|
||||||
|
if (widget.logic.myVip == 0 && index == widget.logic.vicinityList.length) {
|
||||||
|
// return;
|
||||||
|
return Stack(
|
||||||
|
children: [
|
||||||
|
ListItem(widget.logic.vicinityList[index - 1], index - 1),
|
||||||
|
showVipView()
|
||||||
|
],
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
return ListItem(widget.logic.vicinityList[index - 1], index - 1);
|
return ListItem(widget.logic.vicinityList[index - 1], index - 1);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
if (widget.logic.myVip == 0)
|
// if (widget.logic.myVip == 0)
|
||||||
Positioned(
|
// Positioned(
|
||||||
bottom: 0,
|
// bottom: 0,
|
||||||
child: showVipView())
|
// child: showVipView())
|
||||||
],
|
],
|
||||||
) : loaddingWidget(true);
|
) : loaddingWidget(true);
|
||||||
}
|
}
|
||||||
@ -162,10 +170,22 @@ class _VicinityState extends State<Vicinity> with AutomaticKeepAliveClientMixin
|
|||||||
|
|
||||||
Widget showVipView() {
|
Widget showVipView() {
|
||||||
return Container(
|
return Container(
|
||||||
|
margin: EdgeInsets.only(top: 10.sp),
|
||||||
|
child: Stack(
|
||||||
|
children: [
|
||||||
|
Positioned(
|
||||||
|
bottom: 0,
|
||||||
|
child: Container(
|
||||||
|
color: Colors.black,
|
||||||
|
width: Get.width,
|
||||||
|
height: 100.sp,
|
||||||
|
padding: EdgeInsets.symmetric(vertical: 25.sp),
|
||||||
|
)),
|
||||||
|
Container(
|
||||||
width: Get.width,
|
width: Get.width,
|
||||||
// margin: EdgeInsets.only(top: 10.sp),
|
// margin: EdgeInsets.only(top: 10.sp),
|
||||||
color: Colors.black87,
|
color: Colors.black.withOpacity(0.87),
|
||||||
padding: EdgeInsets.symmetric(vertical: 14.sp, horizontal: 20.sp),
|
padding: EdgeInsets.symmetric(vertical: 25.sp, horizontal: 20.sp),
|
||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
Center(
|
Center(
|
||||||
@ -213,7 +233,10 @@ class _VicinityState extends State<Vicinity> with AutomaticKeepAliveClientMixin
|
|||||||
),
|
),
|
||||||
))
|
))
|
||||||
],
|
],
|
||||||
));
|
)),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget ListItem(VicinityItemBean item, int index) {
|
Widget ListItem(VicinityItemBean item, int index) {
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import 'dart:io';
|
|||||||
|
|
||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
// import 'package:flutter_install_app/flutter_install_app.dart';
|
import 'package:flutter_install_app/flutter_install_app.dart';
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
import 'package:url_launcher/url_launcher.dart';
|
import 'package:url_launcher/url_launcher.dart';
|
||||||
|
|
||||||
@ -260,7 +260,7 @@ class _CustomDialogState extends State<UpdateDialog> {
|
|||||||
// SmartDialog.dismiss();
|
// SmartDialog.dismiss();
|
||||||
print(error);
|
print(error);
|
||||||
});
|
});
|
||||||
// await AppInstaller.installApk(filePath, actionRequired: false);
|
await AppInstaller.installApk(filePath, actionRequired: false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -7,6 +7,7 @@ import 'package:flutter/cupertino.dart';
|
|||||||
import 'package:flutter/gestures.dart';
|
import 'package:flutter/gestures.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
|
import 'package:flutter_bugly/flutter_bugly.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:flutter_smart_dialog/flutter_smart_dialog.dart';
|
||||||
import 'package:tencent_chat_push_for_china/tencent_chat_push_for_china.dart';
|
import 'package:tencent_chat_push_for_china/tencent_chat_push_for_china.dart';
|
||||||
@ -147,6 +148,10 @@ class _CustomDialogState extends State<YesAgreementDialog> {
|
|||||||
uploadBuzIDAndToken();
|
uploadBuzIDAndToken();
|
||||||
SmartDialog.dismiss();
|
SmartDialog.dismiss();
|
||||||
pushLoginPage();
|
pushLoginPage();
|
||||||
|
FlutterBugly.init(
|
||||||
|
androidAppId: "8509314e11",
|
||||||
|
iOSAppId: "51e7b4e472",
|
||||||
|
);
|
||||||
},
|
},
|
||||||
child: Container(
|
child: Container(
|
||||||
width: 240.sp,
|
width: 240.sp,
|
||||||
|
|||||||
@ -131,6 +131,7 @@ class HomeLogic extends GetxController {
|
|||||||
showOKToast(bean.msg);
|
showOKToast(bean.msg);
|
||||||
}
|
}
|
||||||
getUnreadSize() async {
|
getUnreadSize() async {
|
||||||
|
try {
|
||||||
V2TimValueCallback<int> getTotalUnreadMessageCountRes =
|
V2TimValueCallback<int> getTotalUnreadMessageCountRes =
|
||||||
await TencentImSDKPlugin.v2TIMManager
|
await TencentImSDKPlugin.v2TIMManager
|
||||||
.getConversationManager()
|
.getConversationManager()
|
||||||
@ -150,6 +151,7 @@ class HomeLogic extends GetxController {
|
|||||||
} else {
|
} else {
|
||||||
getUnreadSize();
|
getUnreadSize();
|
||||||
}
|
}
|
||||||
|
} catch (e) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@ -459,8 +459,8 @@ class _TIMConversationState extends TIMUIKitState<TIMConversation> {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
//自己的信息
|
//自己的信息
|
||||||
V2TimUserFullInfo myuserFullInfo =
|
V2TimUserFullInfo myuserFullInfo =snapshot.data!.where((element) => element.userID! == model.selfInfoViewModel.loginInfo!.userID!).toList().first;
|
||||||
snapshot.data!.first;
|
|
||||||
|
|
||||||
if (userFullInfo!.customInfo!
|
if (userFullInfo!.customInfo!
|
||||||
.containsKey('Label')) {
|
.containsKey('Label')) {
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import 'package:cached_network_image/cached_network_image.dart';
|
|||||||
import 'package:circle_app/app/circle/logic.dart';
|
import 'package:circle_app/app/circle/logic.dart';
|
||||||
import 'package:circle_app/app/circle/view.dart';
|
import 'package:circle_app/app/circle/view.dart';
|
||||||
import 'package:circle_app/common/Widgets/open_vip_tip/view.dart';
|
import 'package:circle_app/common/Widgets/open_vip_tip/view.dart';
|
||||||
|
import 'package:circle_app/common/colors/app_color.dart';
|
||||||
import 'package:circle_app/main.dart';
|
import 'package:circle_app/main.dart';
|
||||||
import 'package:circle_app/network/api.dart';
|
import 'package:circle_app/network/api.dart';
|
||||||
import 'package:circle_app/network/dio_manager.dart';
|
import 'package:circle_app/network/dio_manager.dart';
|
||||||
@ -123,6 +124,40 @@ class MsgPage extends StatelessWidget {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String count = '0';
|
||||||
|
if (logic != null) {
|
||||||
|
count = (logic.statistics.value.likeMeCount ?? 0).toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (int.parse(count) > 0) {
|
||||||
|
widgets.add(Positioned(
|
||||||
|
left: 15.sp * i,
|
||||||
|
child: Stack(
|
||||||
|
alignment: Alignment.center,
|
||||||
|
children: [
|
||||||
|
Image.asset(
|
||||||
|
getCircleImage('avatar_bg'),
|
||||||
|
width: 30.sp,
|
||||||
|
height: 30.sp,
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
alignment: Alignment.center,
|
||||||
|
width: 28.sp,
|
||||||
|
height: 28.sp,
|
||||||
|
child: Text(
|
||||||
|
int.parse(count) > 99
|
||||||
|
? '99+'
|
||||||
|
: count,
|
||||||
|
style: TextStyle(
|
||||||
|
color: Colors.white,
|
||||||
|
fontSize: int.parse(count) > 99 ? 10.sp : 12.sp),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
return Container(
|
return Container(
|
||||||
width: Get.width,
|
width: Get.width,
|
||||||
padding: EdgeInsets.only(left: 18.sp, right: 18.sp),
|
padding: EdgeInsets.only(left: 18.sp, right: 18.sp),
|
||||||
@ -141,8 +176,7 @@ class MsgPage extends StatelessWidget {
|
|||||||
height: 30.sp,
|
height: 30.sp,
|
||||||
width: 30.0.sp +
|
width: 30.0.sp +
|
||||||
15.sp *
|
15.sp *
|
||||||
(widgets.length -
|
(widgets.length),
|
||||||
1.sp),
|
|
||||||
child: Stack(
|
child: Stack(
|
||||||
children: widgets,
|
children: widgets,
|
||||||
),
|
),
|
||||||
|
|||||||
@ -27,31 +27,32 @@ class SplashLogic extends GetxController {
|
|||||||
super.onReady();
|
super.onReady();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onInit() async {
|
void onInit() {
|
||||||
super.onInit();
|
super.onInit();
|
||||||
// await Future.delayed(Duration(seconds: 30));
|
// await Future.delayed(Duration(seconds: 30));
|
||||||
|
|
||||||
var data1 =
|
// var data1 =
|
||||||
await DioManager.instance.get(url: Api.getCircleList, params: {});
|
// await DioManager.instance.get(url: Api.getCircleList, params: {});
|
||||||
var bean1 = BaseResponse<ConfigBean>.fromJson(
|
// var bean1 = BaseResponse<ConfigBean>.fromJson(
|
||||||
data1, (data1) => ConfigBean.fromJson(data1));
|
// data1, (data1) => ConfigBean.fromJson(data1));
|
||||||
if (bean1.code == 200) {
|
// if (bean1.code == 200) {
|
||||||
configBean = bean1.data!;
|
// configBean = bean1.data!;
|
||||||
|
//
|
||||||
configBean.genderMap.forEach((key, value) {
|
// configBean.genderMap.forEach((key, value) {
|
||||||
genderList.add(value);
|
// genderList.add(value);
|
||||||
});
|
// });
|
||||||
|
//
|
||||||
configBean.orientationMap.forEach((key, value) {
|
// configBean.orientationMap.forEach((key, value) {
|
||||||
orientationList.add(value);
|
// orientationList.add(value);
|
||||||
});
|
// });
|
||||||
configBean.roleMap.forEach((key, value) {
|
// configBean.roleMap.forEach((key, value) {
|
||||||
roleList.add(value);
|
// roleList.add(value);
|
||||||
});
|
// });
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
checkStatus() async {
|
||||||
if ((await getAuthorization()).isEmpty) {
|
if ((await getAuthorization()).isEmpty) {
|
||||||
if (Platform.isIOS) {
|
if (Platform.isIOS) {
|
||||||
pushLoginPage();
|
pushLoginPage();
|
||||||
|
|||||||
@ -99,7 +99,7 @@ class _SwiperPageState extends State<SwiperPage> {
|
|||||||
Container(
|
Container(
|
||||||
// color: Colors.red,
|
// color: Colors.red,
|
||||||
child: CachedNetworkImage(
|
child: CachedNetworkImage(
|
||||||
imageUrl: logic.imgList[index],
|
imageUrl: logic.imgList[index].toString().contains('?') ? logic.imgList[index].toString().split('?').first : logic.imgList[index].toString(),
|
||||||
fit: BoxFit.contain,
|
fit: BoxFit.contain,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import 'package:circle_app/common/Widgets/base_tip_widget.dart';
|
|||||||
import 'package:circle_app/common/colors/app_color.dart';
|
import 'package:circle_app/common/colors/app_color.dart';
|
||||||
import 'package:circle_app/common/const.dart';
|
import 'package:circle_app/common/const.dart';
|
||||||
import 'package:circle_app/main.dart';
|
import 'package:circle_app/main.dart';
|
||||||
|
import 'package:circle_app/view/notice.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:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
@ -50,6 +51,9 @@ class MyTabbedScreenState extends State<UserinfoPage>
|
|||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
_tabController.dispose();
|
_tabController.dispose();
|
||||||
|
if (OverlayClass.overlayEntry != null) {
|
||||||
|
OverlayClass.overlayEntry!.remove();
|
||||||
|
}
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -44,6 +44,7 @@ class _AddWxTipState extends State<AddWxTip> {
|
|||||||
children: [
|
children: [
|
||||||
Expanded(
|
Expanded(
|
||||||
child: Container(
|
child: Container(
|
||||||
|
width:Get.width - 30.sp,
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
color: Color(0x99000000),
|
color: Color(0x99000000),
|
||||||
image: DecorationImage(
|
image: DecorationImage(
|
||||||
|
|||||||
@ -174,6 +174,7 @@ class _UnlockWxTipState extends State<UnlockWxTip> {
|
|||||||
} else {
|
} else {
|
||||||
unlockingPayment(prices[selectedIndex].id.toString(), (){
|
unlockingPayment(prices[selectedIndex].id.toString(), (){
|
||||||
Get.back();
|
Get.back();
|
||||||
|
showOKToast('微信号解锁成功');
|
||||||
unLockWxSuccessResult(widget.userId);
|
unLockWxSuccessResult(widget.userId);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -269,20 +270,15 @@ class _UnlockWxTipState extends State<UnlockWxTip> {
|
|||||||
width: 40.sp,
|
width: 40.sp,
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
shape: BoxShape.circle,
|
// shape: BoxShape.circle,
|
||||||
gradient: AppColor.mainVerLinearGradient
|
// gradient: AppColor.mainVerLinearGradient
|
||||||
|
),
|
||||||
|
child: Image.asset(
|
||||||
|
getDisCoverImage('wx'), // Replace this with the actual image path
|
||||||
|
width: 35.sp
|
||||||
|
),
|
||||||
),
|
),
|
||||||
child: Text(
|
|
||||||
'VIP',
|
|
||||||
|
|
||||||
style: TextStyle(color: Colors.white, fontSize: 12.sp,fontWeight: FontWeight.w500),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
// Image.asset(
|
|
||||||
// iconIv, // Replace this with the actual image path
|
|
||||||
// width: 31.sp,
|
|
||||||
// height: 29.sp,
|
|
||||||
// ),
|
|
||||||
SizedBox(width: 8.sp),
|
SizedBox(width: 8.sp),
|
||||||
Column(
|
Column(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
|||||||
@ -37,15 +37,22 @@ final TUIChatSeparateViewModel chatSeparateViewModel =
|
|||||||
TUIChatSeparateViewModel();
|
TUIChatSeparateViewModel();
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
FlutterBugly.postCatchedException(() {
|
FlutterBugly.postCatchedException(() async {
|
||||||
// 如果需要 ensureInitialized,请在这里运行。
|
// 如果需要 ensureInitialized,请在这里运行。
|
||||||
WidgetsBinding widgetsBinding = WidgetsFlutterBinding.ensureInitialized();
|
WidgetsBinding widgetsBinding = WidgetsFlutterBinding.ensureInitialized();
|
||||||
FlutterNativeSplash.preserve(widgetsBinding: widgetsBinding);
|
FlutterNativeSplash.preserve(widgetsBinding: widgetsBinding);
|
||||||
runApp(MyApp());
|
runApp(MyApp());
|
||||||
|
if (Platform.isAndroid) {
|
||||||
|
bool isAgreemement = await getAgreemement();
|
||||||
|
if (isAgreemement) {
|
||||||
FlutterBugly.init(
|
FlutterBugly.init(
|
||||||
androidAppId: "8509314e11",
|
androidAppId: "8509314e11",
|
||||||
iOSAppId: "51e7b4e472",
|
iOSAppId: "51e7b4e472",
|
||||||
);
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
if (Platform.isAndroid) {
|
if (Platform.isAndroid) {
|
||||||
getLostData();
|
getLostData();
|
||||||
@ -104,8 +111,12 @@ loginIM(String userId, String sig) async {
|
|||||||
|
|
||||||
//退出IM
|
//退出IM
|
||||||
logoutIM() async {
|
logoutIM() async {
|
||||||
|
try {
|
||||||
final result = await coreInstance.logout();
|
final result = await coreInstance.logout();
|
||||||
print(result.desc + '退出IM');
|
print(result.desc + '退出IM');
|
||||||
|
} catch (e) {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//获取设备Token,获取成功后开启离线推送
|
//获取设备Token,获取成功后开启离线推送
|
||||||
|
|||||||
@ -65,14 +65,13 @@ void uploadImage(String quToken, XFile pickedFile, String updataRoute,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//if(isImageJpgOrPng(pickedFile.path)){
|
if(isImageJpgOrPng(pickedFile.path)){
|
||||||
if (false) {
|
|
||||||
var path = await getApplicationSupportDirectoryPath();
|
var path = await getApplicationSupportDirectoryPath();
|
||||||
CompressObject compressObject = CompressObject(
|
CompressObject compressObject = CompressObject(
|
||||||
imageFile: File(pickedFile.path),
|
imageFile: File(pickedFile.path),
|
||||||
path: path,
|
path: path,
|
||||||
quality: 80,
|
quality: 80,
|
||||||
step: 6,
|
step: 9,
|
||||||
mode: CompressMode.AUTO,
|
mode: CompressMode.AUTO,
|
||||||
);
|
);
|
||||||
Luban.compressImage(compressObject).then((_path) {
|
Luban.compressImage(compressObject).then((_path) {
|
||||||
@ -86,8 +85,6 @@ void uploadImage(String quToken, XFile pickedFile, String updataRoute,
|
|||||||
SmartDialog.dismiss(force: true);
|
SmartDialog.dismiss(force: true);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
// var path = await getApplicationSupportDirectoryPath();
|
|
||||||
// String outputPath = path;
|
|
||||||
uploadQiniu(pickedFile.path, pickedFile.name, updataRoute, quToken, (result) {
|
uploadQiniu(pickedFile.path, pickedFile.name, updataRoute, quToken, (result) {
|
||||||
myCallback(result);
|
myCallback(result);
|
||||||
});
|
});
|
||||||
|
|||||||
@ -309,7 +309,7 @@ class CustomLoadFooter extends StatelessWidget {
|
|||||||
canLoadingText: "松手开始加载数据",
|
canLoadingText: "松手开始加载数据",
|
||||||
loadingText: "正在加载...",
|
loadingText: "正在加载...",
|
||||||
idleText: "上拉加载更多",
|
idleText: "上拉加载更多",
|
||||||
noDataText: "没有更多数据了",
|
noDataText: "只展示推荐的哦~",
|
||||||
failedText: "加载失败",
|
failedText: "加载失败",
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,7 +6,9 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
typedef void NoticeCallback();
|
typedef void NoticeCallback();
|
||||||
|
class OverlayClass {
|
||||||
|
static OverlayEntry? overlayEntry;
|
||||||
|
}
|
||||||
|
|
||||||
void showFloatingButtonOverlay(
|
void showFloatingButtonOverlay(
|
||||||
BuildContext context, String nickname, String ageMsg, String avatar,int event,NoticeCallback noticeCallback) {
|
BuildContext context, String nickname, String ageMsg, String avatar,int event,NoticeCallback noticeCallback) {
|
||||||
@ -20,7 +22,7 @@ void showFloatingButtonOverlay(
|
|||||||
late Timer countdownTimer;
|
late Timer countdownTimer;
|
||||||
|
|
||||||
// 创建 OverlayEntry
|
// 创建 OverlayEntry
|
||||||
overlayEntry = OverlayEntry(
|
OverlayClass.overlayEntry = OverlayEntry(
|
||||||
builder: (BuildContext context) {
|
builder: (BuildContext context) {
|
||||||
return Positioned(
|
return Positioned(
|
||||||
top: 30,
|
top: 30,
|
||||||
@ -117,7 +119,11 @@ void showFloatingButtonOverlay(
|
|||||||
GestureDetector(
|
GestureDetector(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
countdownTimer.cancel(); // 取消计时器
|
countdownTimer.cancel(); // 取消计时器
|
||||||
overlayEntry.remove();
|
try {
|
||||||
|
OverlayClass.overlayEntry!.remove();
|
||||||
|
} catch (e) {
|
||||||
|
|
||||||
|
}
|
||||||
noticeCallback();
|
noticeCallback();
|
||||||
|
|
||||||
// logic.setLike();
|
// logic.setLike();
|
||||||
@ -172,10 +178,16 @@ void showFloatingButtonOverlay(
|
|||||||
countdownSeconds--;
|
countdownSeconds--;
|
||||||
// overlayEntry.markNeedsBuild(); // 刷新 OverlayEntry
|
// overlayEntry.markNeedsBuild(); // 刷新 OverlayEntry
|
||||||
} else {
|
} else {
|
||||||
timer.cancel(); // 取消计时器
|
timer.cancel();
|
||||||
overlayEntry.remove(); // 移除 OverlayEntry
|
// 取消计时器
|
||||||
|
|
||||||
|
try {
|
||||||
|
OverlayClass.overlayEntry!.remove();
|
||||||
|
} catch (e) {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
// 将 OverlayEntry 添加到 Overlay 中
|
// 将 OverlayEntry 添加到 Overlay 中
|
||||||
overlayState?.insert(overlayEntry);
|
overlayState?.insert(OverlayClass.overlayEntry!);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -606,6 +606,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.3"
|
version: "1.1.3"
|
||||||
|
flutter_install_app:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: flutter_install_app
|
||||||
|
sha256: "9b117006d17c900e671c26bcbc9b15c7b8efd15d6f9b4442ad5d576de20fab53"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.3.0"
|
||||||
flutter_intl:
|
flutter_intl:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
|||||||
@ -93,7 +93,7 @@ dependencies:
|
|||||||
#event_bus:
|
#event_bus:
|
||||||
event_bus: ^2.0.0
|
event_bus: ^2.0.0
|
||||||
#安装apk
|
#安装apk
|
||||||
# flutter_install_app: 1.3.0
|
flutter_install_app: 1.3.0
|
||||||
#闪屏页
|
#闪屏页
|
||||||
flutter_native_splash: 2.2.16
|
flutter_native_splash: 2.2.16
|
||||||
#腾讯离线推送
|
#腾讯离线推送
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user