Browse Source

优化修复bug

ios
ChenNyan 6 days ago
parent
commit
e48b5f2548
11 changed files with 374 additions and 54 deletions
  1. BIN
      .DS_Store
  2. 2
      lib/controller/home/home_controller.dart
  3. 26
      lib/controller/home/real_home_controller.dart
  4. 18
      lib/controller/home/timeline_controller.dart
  5. 21
      lib/controller/mine/login_controller.dart
  6. 46
      lib/pages/home/report_page.dart
  7. 16
      lib/pages/home/send_timeline.dart
  8. 98
      lib/pages/home/user_information_page.dart
  9. 45
      lib/pages/mine/open_webview.dart
  10. 120
      lib/pages/mine/phone_login_page.dart
  11. 36
      lib/pages/setting/deactivate_page.dart

BIN
.DS_Store

2
lib/controller/home/home_controller.dart

@ -58,8 +58,6 @@ class HomeController extends GetxController {
getMatchmakerList();
}
getBannerList() async {
try{
final response = await _homeApi.userPageBannerByCustomer();

26
lib/controller/home/real_home_controller.dart

@ -5,6 +5,7 @@ import 'package:easy_refresh/easy_refresh.dart';
import 'package:flutter/material.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
import 'package:get_storage/get_storage.dart';
import '../../model/home/post_data.dart';
@ -29,6 +30,19 @@ class RealHomeController extends GetxController {
getPostList();
}
clearData() async {
final blockList = GetStorage().read('blockList') ?? [];
final result = recommendFeed
.where((user) => !blockList.contains(user.userId))
.toList();
recommendFeed.value = result;
final result1 = postList
.where((user) => !blockList.contains(user.userId))
.toList();
postList.value = result1;
update();
}
getListData() async {
try {
var response = await _homeApi.getMarriageList(
@ -41,10 +55,14 @@ class RealHomeController extends GetxController {
.map((item) => MarriageData.fromJson(item as Map<String, dynamic>))
.toList();
final blockList = GetStorage().read('blockList') ?? [];
//
final records = allRecords!.where((item) => !item.isLive).toList();
final result = records
.where((user) => !blockList.contains(user.userId))
.toList();
recommendFeed.clear();
recommendFeed.addAll(records);
recommendFeed.addAll(result);
update();
} else {
//
@ -72,8 +90,12 @@ class RealHomeController extends GetxController {
);
if (response.data.isSuccess && response.data.data != null) {
final data = response.data.data?.records ?? [];
final blockList = GetStorage().read('blockList') ?? [];
final result = data
.where((user) => !blockList.contains(user.userId))
.toList();
postList.addAll(data.toList());
postList.addAll(result);
if((data.length ?? 0) == size.value){
listRefreshController.finishLoad(IndicatorResult.success);

18
lib/controller/home/timeline_controller.dart

@ -2,6 +2,7 @@ import 'package:dating_touchme_app/model/home/marriage_data.dart';
import 'package:dating_touchme_app/network/home_api.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
import 'package:get_storage/get_storage.dart';
import '../../model/home/post_data.dart';
@ -49,6 +50,17 @@ class TimelineController extends GetxController {
loadPostList();
}
clearData() async {
final blockList = GetStorage().read('blockList') ?? [];
final result1 = postList
.where((user) => !blockList.contains(user.userId))
.toList();
postList.value = result1;
update();
}
loadPostList() async {
if (recommendIsLoading.value || !recommendHasMore.value) return;
try{
@ -59,8 +71,12 @@ class TimelineController extends GetxController {
);
if (response.data.isSuccess && response.data.data != null) {
final data = response.data.data?.records ?? [];
final blockList = GetStorage().read('blockList') ?? [];
final result1 = data
.where((user) => !blockList.contains(user.userId))
.toList();
postList.addAll(data.toList());
postList.addAll(result1);
if((data.length ?? 0) == size.value){
hasMore.value = true;
} else {

21
lib/controller/mine/login_controller.dart

@ -53,9 +53,14 @@ class LoginController extends GetxController with WidgetsBindingObserver {
}
final isSend = false.obs;
final checked = false.obs;
//
Future<void> getVerificationCode() async {
if(!checked.value){
SmartDialog.showToast('请先同意用户协议和隐私协议');
return;
}
//
if (phoneNumber.value.isEmpty || phoneNumber.value.length != 11) {
SmartDialog.showToast('请输入正确的手机号');
@ -127,13 +132,29 @@ class LoginController extends GetxController with WidgetsBindingObserver {
//
Future<void> login() async {
if(!checked.value){
SmartDialog.showToast('请先同意用户协议和隐私协议');
passwordController.value.value = TextEditingValue(
text: "",
selection: TextSelection.fromPosition(TextPosition(offset: 0)),
);
return;
}
//
if (phoneNumber.value.isEmpty || phoneNumber.value.length != 11) {
passwordController.value.value = TextEditingValue(
text: "",
selection: TextSelection.fromPosition(TextPosition(offset: 0)),
);
SmartDialog.showToast('请输入正确的手机号');
return;
}
if (verificationCode.value.isEmpty) {
passwordController.value.value = TextEditingValue(
text: "",
selection: TextSelection.fromPosition(TextPosition(offset: 0)),
);
SmartDialog.showToast('请输入验证码');
return;
}

46
lib/pages/home/report_page.dart

@ -472,29 +472,29 @@ class ReportPage extends StatelessWidget {
},
),
),
SizedBox(height: 16.w ,),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
"同时加入黑名单",
style: TextStyle(
fontSize: 13.w,
color: const Color.fromRGBO(51, 51, 51, 1),
fontWeight: FontWeight.w500
),
),
TDSwitch(
isOn: controller.blockUser.value,
trackOnColor: const Color.fromRGBO(117, 98, 249, 1),
onChanged: (bool e){
print(e);
controller.blockUser.value = e;
return e;
},
),
],
),
// SizedBox(height: 16.w ,),
// Row(
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
// children: [
// Text(
// "同时加入黑名单",
// style: TextStyle(
// fontSize: 13.w,
// color: const Color.fromRGBO(51, 51, 51, 1),
// fontWeight: FontWeight.w500
// ),
// ),
// TDSwitch(
// isOn: controller.blockUser.value,
// trackOnColor: const Color.fromRGBO(117, 98, 249, 1),
// onChanged: (bool e){
// print(e);
// controller.blockUser.value = e;
// return e;
// },
// ),
// ],
// ),
SizedBox(height: 53.w ,),
Container(
width: 325.w,

16
lib/pages/home/send_timeline.dart

@ -163,14 +163,14 @@ class _SendTimelineState extends State<SendTimeline> {
Future<void> handleCameraCapture() async {
try {
//
final ok = await _ensurePermission(
Permission.camera,
denyToast: '相机权限被拒绝,请在设置中允许访问相机',
);
if (!ok) return;
// /
await _ensurePermission(Permission.microphone, denyToast: '麦克风权限被拒绝');
// final ok = await _ensurePermission(
// Permission.camera,
// denyToast: '相机权限被拒绝,请在设置中允许访问相机',
// );
// if (!ok) return;
//
// // /
// await _ensurePermission(Permission.microphone, denyToast: '麦克风权限被拒绝');
//
final ImagePicker picker = ImagePicker();

98
lib/pages/home/user_information_page.dart

@ -1,5 +1,8 @@
import 'package:cached_network_image/cached_network_image.dart';
import 'package:dating_touchme_app/controller/global.dart';
import 'package:dating_touchme_app/controller/home/home_controller.dart';
import 'package:dating_touchme_app/controller/home/real_home_controller.dart';
import 'package:dating_touchme_app/controller/home/timeline_controller.dart';
import 'package:dating_touchme_app/controller/home/user_information_controller.dart';
import 'package:dating_touchme_app/extension/ex_widget.dart';
import 'package:dating_touchme_app/generated/assets.dart';
@ -14,6 +17,7 @@ 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_core/src/get_main.dart';
import 'package:get_storage/get_storage.dart';
import 'package:tdesign_flutter/tdesign_flutter.dart';
class UserInformationPage extends StatelessWidget {
@ -663,6 +667,100 @@ class UserInformationPage extends StatelessWidget {
Get.to(() => ReportPage(id: userId,));
} else if (v == 'block') {
print("拉黑");
SmartDialog.dismiss();
//
SmartDialog.show(
onDismiss: (){
SmartDialog.dismiss();
},
builder: (context) {
return Material(
borderRadius: BorderRadius.all(Radius.circular(16.w)),
child: Container(
width: 311.w,
height: 165.w,
padding: EdgeInsets.only(
top: 50.w,
bottom: 20.w,
left: 20.w,
right: 20.w
),
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(16.w)),
),
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
"请确认是否拉黑该用户",
),
Spacer(),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Container(
width: 125.w,
height: 40.w,
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(12.w)),
color: const Color.fromRGBO(237, 237, 237, 1)
),
child: Center(
child: Text(
"取消",
style: TextStyle(
fontSize: 15.w
),
),
),
).onTap((){
SmartDialog.dismiss();
}),
Container(
width: 125.w,
height: 40.w,
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(12.w)),
color: const Color.fromRGBO(117, 98, 249, 1)
),
child: Center(
child: Text(
"确定",
style: TextStyle(
fontSize: 15.w,
color: Colors.white
),
),
),
).onTap((){
final blockList = GetStorage().read('blockList') ?? [];
blockList.add(controller.userData.value.miUserId);
GetStorage().write('blockList', blockList);
SmartDialog.dismiss();
Get.until((route) => route.isFirst);
if (Get.isRegistered<RealHomeController>()) {
final homeController = Get.find<RealHomeController>();
homeController.clearData();
}
if (Get.isRegistered<TimelineController>()) {
final timelineController = Get.find<TimelineController>();
timelineController.clearData();
}
}),
],
)
],
),
),
);
},
);
}
},
child: Container(

45
lib/pages/mine/open_webview.dart

@ -22,10 +22,55 @@ class _OpenWebViewState extends State<OpenWebView> {
controller = WebViewController()
..setJavaScriptMode(JavaScriptMode.unrestricted)
..setBackgroundColor(const Color(0x00000000))
..setNavigationDelegate(
NavigationDelegate(
onPageFinished: (url) async {
await controller.runJavaScript(_replaceTextJs());
},
),
)
..loadRequest(Uri.parse(Uri.decodeComponent(widget.url)));
super.initState();
}
String _replaceTextJs() {
return r"""
(function() {
const replaceMap = {
'趣恋恋': '星球奇遇记',
};
function walk(node) {
if (node.nodeType === Node.TEXT_NODE) {
let text = node.nodeValue;
if (!text) return;
Object.keys(replaceMap).forEach(key => {
text = text.split(key).join(replaceMap[key]);
});
node.nodeValue = text;
return;
}
if (
node.nodeType === Node.ELEMENT_NODE &&
!['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA'].includes(node.tagName)
) {
for (let i = 0; i < node.childNodes.length; i++) {
walk(node.childNodes[i]);
}
}
}
walk(document.body);
})();
""";
}
@override
Widget build(BuildContext context) {
return Scaffold(

120
lib/pages/mine/phone_login_page.dart

@ -1,5 +1,6 @@
import 'package:dating_touchme_app/controller/mine/login_controller.dart';
import 'package:dating_touchme_app/extension/ex_widget.dart';
import 'package:dating_touchme_app/pages/mine/open_webview.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
@ -95,6 +96,64 @@ class PhoneLoginPage extends StatelessWidget {
? null
: controller.getVerificationCode();
}),
//
Row(
children: [
Checkbox(
value: controller.checked.value,
onChanged: (value) {
controller.checked.value = value ?? false;
},
activeColor: const Color.fromRGBO(117, 98, 249, 1),
side: const BorderSide(color: Colors.grey),
shape: const CircleBorder(),
materialTapTargetSize:
MaterialTapTargetSize.shrinkWrap,
),
const Text(
'我已阅读并同意',
style: TextStyle(
fontSize: 11,
color: Color.fromRGBO(153, 153, 153, 1),
),
),
GestureDetector(
onTap: () {
//
Get.to(() => OpenWebView(url: "https://www.quzhaoqin.com/privacy.html"));
},
child: const Text(
'《用户协议》',
style: TextStyle(
fontSize: 11,
color: Color.fromRGBO(74, 99, 235, 1),
),
),
),
const Text(
'',
style: TextStyle(
fontSize: 11,
color: Color.fromRGBO(153, 153, 153, 1),
),
),
GestureDetector(
onTap: () {
//
Get.to(() => OpenWebView(url: "https://www.quzhaoqin.com/information.html"));
},
child: const Text(
'《隐私政策》',
style: TextStyle(
fontSize: 11,
color: Color.fromRGBO(74, 99, 235, 1),
),
),
),
],
),
],
),
) : Container(
@ -159,6 +218,67 @@ class PhoneLoginPage extends StatelessWidget {
? null
: controller.getVerificationCode();
}),
const SizedBox(height: 24),
//
Row(
children: [
Checkbox(
value: controller.checked.value,
onChanged: (value) {
controller.checked.value = value ?? false;
},
activeColor: const Color.fromRGBO(117, 98, 249, 1),
side: const BorderSide(color: Colors.grey),
shape: const CircleBorder(),
materialTapTargetSize:
MaterialTapTargetSize.shrinkWrap,
),
const Text(
'我已阅读并同意',
style: TextStyle(
fontSize: 11,
color: Color.fromRGBO(153, 153, 153, 1),
),
),
GestureDetector(
onTap: () {
//
Get.to(() => OpenWebView(url: "https://www.quzhaoqin.com/privacy.html"));
},
child: const Text(
'《用户协议》',
style: TextStyle(
fontSize: 11,
color: Color.fromRGBO(74, 99, 235, 1),
),
),
),
const Text(
'',
style: TextStyle(
fontSize: 11,
color: Color.fromRGBO(153, 153, 153, 1),
),
),
GestureDetector(
onTap: () {
//
Get.to(() => OpenWebView(url: "https://www.quzhaoqin.com/information.html"));
},
child: const Text(
'《隐私政策》',
style: TextStyle(
fontSize: 11,
color: Color.fromRGBO(74, 99, 235, 1),
),
),
),
],
),
],
),
),

36
lib/pages/setting/deactivate_page.dart

@ -35,7 +35,7 @@ class DeactivatePage extends StatelessWidget {
),
SizedBox(height: 35.w,),
Text(
"申请注销趣恋恋账号前,趣恋恋将进行以下验证,以保证你的账号安全、财产安全。",
"申请注销星球奇遇记账号前,星球奇遇记将进行以下验证,以保证你的账号安全、财产安全。",
style: TextStyle(
fontSize: 13.w,
fontWeight: FontWeight.w500,
@ -44,7 +44,7 @@ class DeactivatePage extends StatelessWidget {
),
SizedBox(height: 15.w,),
Container(
height: 104.w,
// height: 104.w,
padding: EdgeInsets.symmetric(
vertical: 20.w,
horizontal: 17.w
@ -73,22 +73,22 @@ class DeactivatePage extends StatelessWidget {
)
],
),
Row(
children: [
Image.asset(
Assets.imagesErrorIcon,
width: 15.w,
),
SizedBox(width: 9.w,),
Text(
"钱包余额未结清",
style: TextStyle(
fontSize: 13.w,
fontWeight: FontWeight.w500
),
)
],
),
// Row(
// children: [
// Image.asset(
// Assets.imagesErrorIcon,
// width: 15.w,
// ),
// SizedBox(width: 9.w,),
// Text(
// "钱包余额未结清",
// style: TextStyle(
// fontSize: 13.w,
// fontWeight: FontWeight.w500
// ),
// )
// ],
// ),
],
),
),

Loading…
Cancel
Save