feat:修改星星锁 ui

This commit is contained in:
ante 2024-04-15 14:09:23 +08:00
parent a45957f284
commit 25002323de
14 changed files with 452 additions and 202 deletions

View File

@ -95,7 +95,7 @@ flavors:
bundleId: "com.skychip.lock"
xhj:
app:
name: "锁"
name: "星星锁"
icon: "assets/icon/xhj.png"
android:
applicationId: "com.xhjcn.lock"

View File

@ -57,8 +57,12 @@ PODS:
- fluttertoast (0.0.2):
- Flutter
- Toast
- g711_flutter (0.0.1):
- fluwx (0.0.1):
- Flutter
- fluwx/pay (= 0.0.1)
- fluwx/pay (0.0.1):
- Flutter
- WechatOpenSDK-XCFramework (~> 2.0.4)
- google_maps_flutter_ios (0.0.1):
- Flutter
- GoogleMaps (< 9.0)
@ -88,7 +92,7 @@ PODS:
- path_provider_foundation (0.0.1):
- Flutter
- FlutterMacOS
- permission_handler_apple (9.1.1):
- permission_handler_apple (9.3.0):
- Flutter
- ReachabilitySwift (5.0.0)
- shared_preferences_foundation (0.0.1):
@ -107,6 +111,7 @@ PODS:
- FlutterMacOS
- webview_flutter_wkwebview (0.0.1):
- Flutter
- WechatOpenSDK-XCFramework (2.0.4)
DEPENDENCIES:
- aj_captcha_flutter (from `.symlinks/plugins/aj_captcha_flutter/ios`)
@ -128,7 +133,7 @@ DEPENDENCIES:
- flutter_pcm_sound (from `.symlinks/plugins/flutter_pcm_sound/ios`)
- flutter_voice_processor (from `.symlinks/plugins/flutter_voice_processor/ios`)
- fluttertoast (from `.symlinks/plugins/fluttertoast/ios`)
- g711_flutter (from `.symlinks/plugins/g711_flutter/ios`)
- fluwx (from `.symlinks/plugins/fluwx/ios`)
- google_maps_flutter_ios (from `.symlinks/plugins/google_maps_flutter_ios/ios`)
- image_gallery_saver (from `.symlinks/plugins/image_gallery_saver/ios`)
- image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`)
@ -164,6 +169,7 @@ SPEC REPOS:
- JPush
- ReachabilitySwift
- Toast
- WechatOpenSDK-XCFramework
EXTERNAL SOURCES:
aj_captcha_flutter:
@ -202,8 +208,8 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/flutter_voice_processor/ios"
fluttertoast:
:path: ".symlinks/plugins/fluttertoast/ios"
g711_flutter:
:path: ".symlinks/plugins/g711_flutter/ios"
fluwx:
:path: ".symlinks/plugins/fluwx/ios"
google_maps_flutter_ios:
:path: ".symlinks/plugins/google_maps_flutter_ios/ios"
image_gallery_saver:
@ -249,7 +255,7 @@ SPEC CHECKSUMS:
AMapLocation: 5248aec2455ebb5d104b367813c946430a2ee033
app_settings: 017320c6a680cdc94c799949d95b84cb69389ebc
audio_service: f509d65da41b9521a61f1c404dd58651f265a567
audio_session: 4f3e461722055d21515cf3261b64c973c062f345
audio_session: 088d2483ebd1dc43f51d253d4a1c517d9a2e7207
audioplayers_darwin: 877d9a4d06331c5c374595e46e16453ac7eafa40
auto_orientation: 102ed811a5938d52c86520ddd7ecd3a126b5d39d
camera_avfoundation: 8b8d780bcfb6a4a02b0fbe2b4bd17b5b71946e68
@ -263,7 +269,7 @@ SPEC CHECKSUMS:
flutter_pcm_sound: de0572ca4f99091cc2abfcc31601b8a4ddd33c0e
flutter_voice_processor: 2b89b93d69b02227ae3fd58589ee0bcfa3ca2a82
fluttertoast: 31b00dabfa7fb7bacd9e7dbee580d7a2ff4bf265
g711_flutter: 8f2769052d2cf3549f83d11e1c42d81d94441123
fluwx: daa284756ce53442b3d0417ceeda66e981906811
google_maps_flutter_ios: d1318b4ff711612cab16862d7a87e31a7403d458
GoogleMaps: 20d7b12be49a14287f797e88e0e31bc4156aaeb4
image_gallery_saver: cb43cc43141711190510e92c460eb1655cd343cb
@ -276,7 +282,7 @@ SPEC CHECKSUMS:
network_info_plus: 6d0c3eb8367b8164fa3fb0c19875e3f59d49697f
package_info_plus: 6c92f08e1f853dc01228d6f553146438dafcd14e
path_provider_foundation: 3784922295ac71e43754bd15e0653ccfd36a147c
permission_handler_apple: e76247795d700c14ea09e3a2d8855d41ee80a2e6
permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2
ReachabilitySwift: 985039c6f7b23a1da463388634119492ff86c825
shared_preferences_foundation: b4c3b4cddf1c21f02770737f147a3f5da9d39695
sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec
@ -285,6 +291,7 @@ SPEC CHECKSUMS:
url_launcher_ios: bbd758c6e7f9fd7b5b1d4cde34d2b95fcce5e812
video_player_avfoundation: 02011213dab73ae3687df27ce441fbbcc82b5579
webview_flutter_wkwebview: 4f3e50f7273d31e5500066ed267e3ae4309c5ae4
WechatOpenSDK-XCFramework: 36fb2bea0754266c17184adf4963d7e6ff98b69f
PODFILE CHECKSUM: 317f9473a5705c6fe4d79d95e81676f248048fdc

View File

@ -1,5 +1,6 @@
import 'package:get/get.dart';
import 'package:star_lock/common/safetyVerification/safetyVerification_binding.dart';
import 'package:star_lock/flavors.dart';
import 'package:star_lock/login/register/starLock_register_binding.dart';
import 'package:star_lock/main/accessoriesList/accessoriesList_page.dart';
import 'package:star_lock/main/lockDetail/doorLockLog/doorLockLog_page.dart';
@ -29,6 +30,7 @@ import 'package:star_lock/main/lockDetail/palm/addPalm/addPalm_page.dart';
import 'package:star_lock/main/lockDetail/palm/addPalmType/addPalmTypeManage/addPalmTypeManage_page.dart';
import 'package:star_lock/main/lockDetail/palm/palmList/palmList_page.dart';
import 'package:star_lock/main/lockDetail/passwordKey/passwordKeyDetailChangeDate/passwordKeyDetailChangeDate_page.dart';
import 'package:star_lock/main/lockMian/lockMain/xhj/lockMain_xhj_page.dart';
import 'package:star_lock/mine/about/webviewShow_page.dart';
import 'package:star_lock/mine/mine/safeVerify/safeVerify_page.dart';
import 'package:star_lock/mine/minePersonInfo/minePersonInfoEmail/mineBindPhoneOrEmail_page.dart';
@ -453,7 +455,9 @@ abstract class AppRouters {
),
GetPage(
name: Routers.starLockMain,
page: () => const StarLockMainPage(),
page: () => F.sw(
defaultCall: () => StarLockMainPage(),
xhjCall: () => const StarLockMainXHJPage()),
),
GetPage(
name: Routers.starLockMinePage,
@ -465,7 +469,7 @@ abstract class AppRouters {
),
GetPage(
name: Routers.lockMallPage,
page: () => const LockMallPage(),
page: () => LockMallPage(),
),
GetPage(
name: Routers.addLockPage,
@ -729,7 +733,7 @@ abstract class AppRouters {
),
GetPage(
name: Routers.minePersonInfoPage,
page: () => const MinePersonInfoPage(),
page: () => MinePersonInfoPage(),
),
GetPage(
name: Routers.minePersonInfoEditNamePage,
@ -761,7 +765,7 @@ abstract class AppRouters {
),
GetPage(
name: Routers.messageListPage,
page: () => const MessageListPage(),
page: () => MessageListPage(),
),
GetPage(
name: Routers.supportStaffPage,

View File

@ -1,10 +1,15 @@
import 'dart:ui';
import 'package:flutter/material.dart';
import 'package:fluwx/fluwx.dart';
import 'package:star_lock/flavors.dart';
class AppColors {
// static Color mainColor = const Color(0xFF385DEA);
static Color mainColor = const Color(0xFF4777EE);
static Color get mainColor => F.sw(
defaultCall: () => const Color(0xFF4777EE),
xhjCall: () => const Color(0xFF68c1b9));
static Color mainBackgroundColor = const Color(0xFFF5F5F5);
static Color primaryTopColor = const Color(0xFF021B38);
@ -25,6 +30,7 @@ class AppColors {
//check box color
static Color checkBoxSelectedColor = touristColor;
static Color get checkBoxUnselectedColor => const Color(0xFFFFFFFF);
static Color checkBoxOverlayColor = checkBoxUnselectedColor.withOpacity(0.3);
@ -69,6 +75,7 @@ class AppColors {
static Color wifiDisableColor = const Color(0xFFA8A8A8);
static Color get paginationColor => const Color(0xFF01295C).withOpacity(45);
static Color get paginationActiveColor =>
const Color(0xFFFFFFFF).withOpacity(65);
@ -128,8 +135,9 @@ class AppColors {
static const msgNoticeTextColor = Color.fromRGBO(139, 148, 176, 1); //
static const alphaBgViewColor = Color.fromRGBO(0, 0, 0, 0.2); //
static Color openPassageModeColor = const Color(0xFFEB2A3B);// ()
static Color listTimeYellowColor = const Color(0xFFF3BA37);// ()
static Color openPassageModeColor = const Color(0xFFEB2A3B); // ()
static Color listTimeYellowColor = const Color(0xFFF3BA37); // ()
static Color get lockDetailBottomBtnUneable => const Color(0xFF808080);// ()
static Color get lockDetailBottomBtnUneable =>
const Color(0xFF808080); // ()
}

View File

@ -18,6 +18,8 @@ class StarLockAMapKey {
const StarLockAMapKey({required this.iosKey, required this.androidKey});
}
typedef dynamic fCallFunction();
class F {
static Flavor? appFlavor;
@ -26,6 +28,24 @@ class F {
static String get name => appFlavor?.name ?? '';
//便
static dynamic sw(
{required fCallFunction defaultCall, fCallFunction? xhjCall}) {
if (xhjCall == null) {
return defaultCall();
}
switch (appFlavor) {
case Flavor.xhj:
return xhjCall();
case Flavor.local:
case Flavor.dev:
case Flavor.pre:
case Flavor.sky:
default:
return defaultCall();
}
}
static bool get debug {
switch (appFlavor) {
case Flavor.local:
@ -54,7 +74,7 @@ class F {
case Flavor.sky:
return '锁通通';
case Flavor.xhj:
return '';
return '星星';
default:
throw Exception('flavor[$name] title not found');
}
@ -71,7 +91,7 @@ class F {
case Flavor.sky:
return '锁通通';
case Flavor.xhj:
return '';
return '星星';
default:
throw Exception('flavor[$name] title not found');
}
@ -89,7 +109,8 @@ class F {
case Flavor.sky:
return 'https://lock.skychip.top';
case Flavor.xhj:
return 'https://lock.xhjcn.ltd';
// return 'https://lock.xhjcn.ltd';
return 'https://pre.lock.star-lock.cn';
default:
throw Exception('flavor[$name] apiPrefix not found');
}

View File

@ -22,20 +22,20 @@ import '../lockList/lockList_page.dart';
import 'lockMain_logic.dart';
class StarLockMainPage extends StatefulWidget {
const StarLockMainPage({Key? key}) : super(key: key);
StarLockMainPage({Key? key, this.showAppBar = true, this.showDrawer = true})
: super(key: key);
bool showAppBar;
bool showDrawer;
@override
State<StarLockMainPage> createState() => _StarLockMainPageState();
}
// GlobalKey<_StarLockMainPageState> starLockMainKey = GlobalKey();
class _StarLockMainPageState extends State<StarLockMainPage> with BaseWidget {
final logic = Get.put(LockMainLogic());
final state = Get.find<LockMainLogic>().state;
Future<void> getHttpData() async {
// await logic.getStarLockInfo();
// setState(() {});
logic.getStarLockInfo().then((LockListInfoEntity value) {
if (mounted) {
setState(() {});
@ -46,7 +46,7 @@ class _StarLockMainPageState extends State<StarLockMainPage> with BaseWidget {
@override
void initState() {
super.initState();
WidgetsBinding.instance!.addPostFrameCallback((_) {
WidgetsBinding.instance.addPostFrameCallback((_) {
logic.pageNo = 1;
getHttpData();
});
@ -57,60 +57,38 @@ class _StarLockMainPageState extends State<StarLockMainPage> with BaseWidget {
@override
void didChangeDependencies() {
super.didChangeDependencies();
// WidgetsBinding.instance!.addPostFrameCallback((_) {
// getHttpData();
// });
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: const Color(0xFFF5F5F5),
appBar: TitleAppBar(
barTitle: F.navTitle,
haveBack: false,
haveOtherLeftWidget: true,
leftWidget: Builder(
builder: (context) => IconButton(
icon: Image.asset(
"images/main/mainLeft_menu_icon.png",
color: Colors.white,
width: 44.w,
height: 44.w,
),
onPressed: () {
// _globalKey.currentState!.openDrawer();
Scaffold.of(context).openDrawer();
},
)),
backgroundColor: AppColors.mainColor,
// actionsList: [
// TextButton(
// child: const Text("", style: TextStyle(color: Colors.white)),
// onPressed: () {
// Navigator.pushNamed(context, Routers.starLockLoginPage);
// },
// ),
// ],
),
drawer: Drawer(
width: 1.sw / 3 * 2,
child: const StarLockMinePage(),
),
// body: FutureBuilder<LockListInfoGroupEntity>(
// future: logic.getStarLockInfo(), //
// builder: (BuildContext context, AsyncSnapshot<LockListInfoGroupEntity> snapshot) {
// if (snapshot.connectionState == ConnectionState.waiting) {
// // return CircularProgressIndicator(); //
// return Container();
// } else if (snapshot.hasError) {
// // return Text('Error: ${snapshot.error}'); //
// return unHaveData();
// } else {
// return getDataReturnUI(snapshot.data!.groupList!.length ?? 0); //
// }
// },
// ),
appBar: widget.showAppBar
? TitleAppBar(
barTitle: F.navTitle,
haveBack: false,
haveOtherLeftWidget: true,
leftWidget: Builder(
builder: (context) => IconButton(
icon: Image.asset(
"images/main/mainLeft_menu_icon.png",
color: Colors.white,
width: 44.w,
height: 44.w,
),
onPressed: () {
Scaffold.of(context).openDrawer();
},
)),
backgroundColor: AppColors.mainColor,
)
: null,
drawer: widget.showDrawer
? Drawer(
width: 1.sw / 3 * 2,
child: const StarLockMinePage(),
)
: null,
body: EasyRefreshTool(
onRefresh: () {
SchedulerBinding.instance.addPostFrameCallback((_) {
@ -120,13 +98,6 @@ class _StarLockMainPageState extends State<StarLockMainPage> with BaseWidget {
});
},
child: getDataReturnUI(state.dataLength.value)),
// body:smartRefresher(
// logic.refreshController,
// onRefresh:logic.onRefresh,
// onLoading:logic.onLoading,
// child:Obx(() => getDataReturnUI(state.dataLength.value))),
// body: getLockList(),
// body: unHaveData(),
);
}
@ -140,11 +111,12 @@ class _StarLockMainPageState extends State<StarLockMainPage> with BaseWidget {
case 1:
//
Storage.setBool(ifIsDemoModeOrNot, false);
print("state.lockListInfoEntity.value.data!.groupList![0].lockList![0]:${state.lockListInfoGroupEntity.value.groupList![0].lockList![0].endDate}");
print(
"state.lockListInfoEntity.value.data!.groupList![0].lockList![0]:${state.lockListInfoGroupEntity.value.groupList![0].lockList![0].endDate}");
returnWidget = LockDetailPage(
isOnlyOneData: true,
lockListInfoItemEntity: state
.lockListInfoGroupEntity.value.groupList![0].lockList![0]);
lockListInfoItemEntity:
state.lockListInfoGroupEntity.value.groupList![0].lockList![0]);
break;
case 2:
//
@ -156,8 +128,6 @@ class _StarLockMainPageState extends State<StarLockMainPage> with BaseWidget {
returnWidget = NoData();
break;
}
// Future.delayed(const Duration(seconds: 1));
// Future.delayed(const Duration(milliseconds: 200));
return returnWidget;
}
@ -175,12 +145,6 @@ class _StarLockMainPageState extends State<StarLockMainPage> with BaseWidget {
children: [
SizedBox(
width: 330.w,
// height: 330.w,
// margin: EdgeInsets.only(top: 180.h),
// decoration: BoxDecoration(
// border: Border.all(width: 4.w, color: AppColors.mainColor),
// borderRadius: BorderRadius.circular(110.w),
// ),
child: InkWell(
child: Padding(
padding: const EdgeInsets.all(30.0),
@ -193,11 +157,8 @@ class _StarLockMainPageState extends State<StarLockMainPage> with BaseWidget {
onTap: () {
//
Navigator.pushNamed(
context, Routers.selectLockTypePage,
// arguments: {
// "url": ConstConfig.privacAgreementUrl,
// "title": '隐私政策'
// }
context,
Routers.selectLockTypePage,
);
},
)),
@ -235,10 +196,10 @@ class _StarLockMainPageState extends State<StarLockMainPage> with BaseWidget {
void onHide() {}
late StreamSubscription _teamEvent;
void _initLoadDataAction() {
print("监听刷新首页数据消息");
_teamEvent = eventBus.on<RefreshLockListInfoDataEvent>().listen((event) {
// getLockInfo();
logic.pageNo = 1;
getHttpData();
print("收到刷新首页数据消息");

View File

@ -0,0 +1,29 @@
import 'dart:async';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:get/get.dart';
import 'package:star_lock/main/lockMian/lockMain/xhj/lockMain_xhj_state.dart';
import 'package:star_lock/tools/baseGetXController.dart';
class LockMainXHJLogic extends BaseGetXController {
final LockMainXHJState state = LockMainXHJState();
void setIndex(int index) {
state.index = index;
update();
}
@override
void onReady() {
super.onReady();
}
@override
void onInit() {
super.onInit();
}
@override
void onClose() {
super.onClose();
}
}

View File

@ -0,0 +1,164 @@
import 'dart:async';
import 'dart:ui';
import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:star_lock/app_settings/app_colors.dart';
import 'package:star_lock/baseWidget.dart';
import 'package:star_lock/main/lockMian/lockMain/lockMain_page.dart';
import 'package:star_lock/main/lockMian/lockMain/xhj/lockMain_xhj_logic.dart';
import 'package:star_lock/mine/mall/lockMall_page.dart';
import 'package:star_lock/mine/message/messageList/messageList_page.dart';
import 'package:star_lock/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_page.dart';
import 'package:star_lock/tools/noData.dart';
import 'package:star_lock/tools/submitBtn.dart';
class StarLockMainXHJPage extends StatefulWidget {
const StarLockMainXHJPage({Key? key}) : super(key: key);
@override
State<StarLockMainXHJPage> createState() => _StarLockMainXHJPageState();
}
class _StarLockMainXHJPageState extends State<StarLockMainXHJPage>
with BaseWidget {
@override
void initState() {
super.initState();
}
@override
void didChangeDependencies() {
super.didChangeDependencies();
}
@override
Widget build(BuildContext context) {
return GetBuilder<LockMainXHJLogic>(
init: LockMainXHJLogic(),
builder: (LockMainXHJLogic logic) {
return Scaffold(
backgroundColor: const Color(0xFFF5F5F5),
body: SafeArea(
bottom: false,
child: Stack(
children: [
pageView(
widget: StarLockMainPage(
showAppBar: false,
showDrawer: false,
),
logic: logic,
index: 0,
),
pageView(
widget: MessageListPage(
showAppBar: false,
),
logic: logic,
index: 1),
pageView(
widget: LockMallPage(
showAppBar: false,
),
logic: logic,
index: 2),
pageView(
widget: MinePersonInfoPage(
showAppBar: false,
),
logic: logic,
index: 3),
],
),
),
bottomNavigationBar: Container(
height: 100.h + Get.bottomBarHeight,
decoration: const BoxDecoration(
color: Colors.transparent,
border: Border(
top: BorderSide(
color: Colors.black, //
width: 0.3, //
),
),
),
child: Row(
children: [
// navigationBarItem(Icons.start, '场景', false, () {
// logic.setIndex(0);
// }),
navigationBarItem(Icons.devices, '设备', logic, 0, () {
logic.setIndex(0);
}),
navigationBarItem(Icons.message, '消息', logic, 1, () {
logic.setIndex(1);
}),
navigationBarItem(Icons.shopping_cart, '商城', logic, 2, () {
logic.setIndex(2);
}),
navigationBarItem(Icons.account_circle, '我的', logic, 3, () {
logic.setIndex(3);
}),
],
),
),
);
});
}
//
Widget pageView(
{required Widget widget,
required LockMainXHJLogic logic,
required int index}) {
return Positioned.fill(
child: Offstage(
offstage: logic.state.index != index,
child: widget,
),
);
}
//
Widget navigationBarItem(IconData icon, String text, LockMainXHJLogic logic,
int index, var onTop) {
bool check = logic.state.index == index;
return Expanded(
child: GestureDetector(
onTap: onTop,
child: Container(
color: Colors.transparent,
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Padding(
padding: EdgeInsets.only(bottom: 8.h),
child: Icon(
icon,
size: 32.r,
color:
check ? AppColors.mainColor : AppColors.darkGrayTextColor,
),
),
Text(
text,
style: TextStyle(
fontSize: 16.sp,
color:
check ? AppColors.mainColor : AppColors.darkGrayTextColor,
),
),
],
),
),
),
);
}
@override
void dispose() {
super.dispose();
}
}

View File

@ -0,0 +1,9 @@
import 'dart:async';
import 'package:get/get.dart';
class LockMainXHJState {
int index = 0;
}

View File

@ -7,7 +7,8 @@ import 'package:star_lock/tools/titleAppBar.dart';
import 'package:webview_flutter/webview_flutter.dart';
class LockMallPage extends StatefulWidget {
const LockMallPage({Key? key}) : super(key: key);
LockMallPage({Key? key, this.showAppBar = true}) : super(key: key);
bool showAppBar;
@override
State<LockMallPage> createState() => _LockMallPageState();
@ -33,11 +34,13 @@ class _LockMallPageState extends State<LockMallPage> {
child: Scaffold(
resizeToAvoidBottomInset: false,
backgroundColor: const Color(0xFFFFFFFF),
appBar: TitleAppBar(
barTitle: getWebTitle(),
haveBack: true,
backgroundColor: AppColors.mainColor,
),
appBar: widget.showAppBar
? TitleAppBar(
barTitle: getWebTitle(),
haveBack: true,
backgroundColor: AppColors.mainColor,
)
: null,
body: Obx(() => Column(
children: <Widget>[
Container(
@ -45,7 +48,8 @@ class _LockMallPageState extends State<LockMallPage> {
child: LinearProgressIndicator(
value: state.webProgress.value,
backgroundColor: Colors.grey,
valueColor: AlwaysStoppedAnimation<Color>(AppColors.mainColor),
valueColor:
AlwaysStoppedAnimation<Color>(AppColors.mainColor),
),
),
Expanded(

View File

@ -14,18 +14,20 @@ import 'messageList_logic.dart';
import 'package:flutter_slidable/flutter_slidable.dart';
class MessageListPage extends StatefulWidget {
const MessageListPage({Key? key}) : super(key: key);
MessageListPage({Key? key, this.showAppBar = true}) : super(key: key);
bool showAppBar;
@override
State<MessageListPage> createState() => _MessageListPageState();
}
class _MessageListPageState extends State<MessageListPage> with TickerProviderStateMixin {
class _MessageListPageState extends State<MessageListPage>
with TickerProviderStateMixin {
final logic = Get.put(MessageListLogic());
final state = Get.find<MessageListLogic>().state;
void getHttpData(){
logic.messageListDataRequest().then((MessageListEntity value){
void getHttpData() {
logic.messageListDataRequest().then((MessageListEntity value) {
setState(() {});
});
}
@ -41,58 +43,61 @@ class _MessageListPageState extends State<MessageListPage> with TickerProviderSt
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: AppColors.mainBackgroundColor,
appBar: TitleAppBar(
barTitle: TranslationLoader.lanKeys!.message!.tr,
haveBack: true,
backgroundColor: AppColors.mainColor),
body: EasyRefreshTool(
onRefresh: (){
logic.pageNo = 1;
getHttpData();
},
onLoad: (){
getHttpData();
},
child: Obx(() {
return state.itemDataList.value.isEmpty
? NoData()
: SlidableAutoCloseBehavior(
child: ListView.builder(
itemCount: state.itemDataList.value.length,
itemBuilder: (c, index) {
MessageItemEntity messageItemEntity = state.itemDataList.value[index];
return Slidable(
key:ValueKey(messageItemEntity.id),
endActionPane: ActionPane(
extentRatio: 0.2,
motion: const ScrollMotion(),
children: [
SlidableAction(
onPressed: (BuildContext context){
logic.deletMessageDataRequest(messageItemEntity.id!, (){
logic.pageNo = 1;
getHttpData();
});
},
backgroundColor: Colors.red,
foregroundColor: Colors.white,
label: '删除',
padding: EdgeInsets.only(left: 5.w, right: 5.w),
),
],
),
child: _messageListItem(messageItemEntity, () {
Get.toNamed(Routers.messageDetailPage, arguments: {"messageItemEntity": messageItemEntity});
}),
);
}),
);
})
),
appBar: widget.showAppBar
? TitleAppBar(
barTitle: TranslationLoader.lanKeys!.message!.tr,
haveBack: true,
backgroundColor: AppColors.mainColor)
: null,
body: EasyRefreshTool(onRefresh: () {
logic.pageNo = 1;
getHttpData();
}, onLoad: () {
getHttpData();
}, child: Obx(() {
return state.itemDataList.value.isEmpty
? NoData()
: SlidableAutoCloseBehavior(
child: ListView.builder(
itemCount: state.itemDataList.value.length,
itemBuilder: (c, index) {
MessageItemEntity messageItemEntity =
state.itemDataList.value[index];
return Slidable(
key: ValueKey(messageItemEntity.id),
endActionPane: ActionPane(
extentRatio: 0.2,
motion: const ScrollMotion(),
children: [
SlidableAction(
onPressed: (BuildContext context) {
logic.deletMessageDataRequest(
messageItemEntity.id!, () {
logic.pageNo = 1;
getHttpData();
});
},
backgroundColor: Colors.red,
foregroundColor: Colors.white,
label: '删除',
padding: EdgeInsets.only(left: 5.w, right: 5.w),
),
],
),
child: _messageListItem(messageItemEntity, () {
Get.toNamed(Routers.messageDetailPage, arguments: {
"messageItemEntity": messageItemEntity
});
}),
);
}),
);
})),
);
}
Widget _messageListItem(MessageItemEntity messageItemEntity, Function() action) {
Widget _messageListItem(
MessageItemEntity messageItemEntity, Function() action) {
return GestureDetector(
onTap: action,
child: Container(
@ -117,7 +122,10 @@ class _MessageListPageState extends State<MessageListPage> with TickerProviderSt
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(
fontSize: 22.sp, color: messageItemEntity.readAt! == 0 ? AppColors.blackColor : AppColors.placeholderTextColor),
fontSize: 22.sp,
color: messageItemEntity.readAt! == 0
? AppColors.blackColor
: AppColors.placeholderTextColor),
),
),
],
@ -128,7 +136,14 @@ class _MessageListPageState extends State<MessageListPage> with TickerProviderSt
children: [
// Image.asset('images/mine/icon_mine_gatewaySignal_strong.png', width: 40.w, height: 40.w,),
// SizedBox(width: 10.w,),
Text(DateTool().dateToYMDHNString(messageItemEntity.createdAt!.toString()), style: TextStyle(fontSize: 18.sp, color: messageItemEntity.readAt! == 0 ? AppColors.blackColor : AppColors.placeholderTextColor)),
Text(
DateTool().dateToYMDHNString(
messageItemEntity.createdAt!.toString()),
style: TextStyle(
fontSize: 18.sp,
color: messageItemEntity.readAt! == 0
? AppColors.blackColor
: AppColors.placeholderTextColor)),
],
),
SizedBox(width: 20.h),

View File

@ -1,4 +1,3 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
@ -14,7 +13,8 @@ import '../../../tools/titleAppBar.dart';
import '../../../translations/trans_lib.dart';
class MinePersonInfoPage extends StatefulWidget {
const MinePersonInfoPage({Key? key}) : super(key: key);
MinePersonInfoPage({Key? key, this.showAppBar = true}) : super(key: key);
bool showAppBar;
@override
State<MinePersonInfoPage> createState() => _MinePersonInfoPageState();
@ -28,34 +28,43 @@ class _MinePersonInfoPageState extends State<MinePersonInfoPage> {
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: AppColors.mainBackgroundColor,
appBar: TitleAppBar(
barTitle: TranslationLoader.lanKeys!.personalInformation!.tr,
haveBack: true,
backgroundColor: AppColors.mainColor),
appBar: widget.showAppBar
? TitleAppBar(
barTitle: TranslationLoader.lanKeys!.personalInformation!.tr,
haveBack: true,
backgroundColor: AppColors.mainColor)
: null,
body: Column(
children: [
Obx(() => CommonItem(
leftTitel: TranslationLoader.lanKeys!.avatar!.tr,
rightTitle: "",
allHeight: 100.h,
isHaveLine: true,
isHaveDirection: true,
isHaveRightWidget: true,
rightWidget: ClipRRect(
borderRadius: BorderRadius.circular(36.w),
child: CustomNetworkImage(url:state.headUrl.value, defaultUrl: 'images/controls_user.png', width:72.w, height:72.w),
),
action: () async {
_openModalBottomSheet();
},
)),
leftTitel: TranslationLoader.lanKeys!.avatar!.tr,
rightTitle: "",
allHeight: 100.h,
isHaveLine: true,
isHaveDirection: true,
isHaveRightWidget: true,
rightWidget: ClipRRect(
borderRadius: BorderRadius.circular(36.w),
child: CustomNetworkImage(
url: state.headUrl.value,
defaultUrl: 'images/controls_user.png',
width: 72.w,
height: 72.w),
),
action: () async {
_openModalBottomSheet();
},
)),
Obx(() => CommonItem(
leftTitel: TranslationLoader.lanKeys!.nickName!.tr,
rightTitle: state.mineInfoData.value.nickname != null ? state.mineInfoData.value.nickname! : "",
rightTitle: state.mineInfoData.value.nickname != null
? state.mineInfoData.value.nickname!
: "",
isHaveLine: true,
isHaveDirection: true,
action: () {
Navigator.pushNamed(context, Routers.minePersonInfoEditNamePage,
Navigator.pushNamed(
context, Routers.minePersonInfoEditNamePage,
arguments: {'mineInfoData': state.mineInfoData.value})
.then((value) => logic.getUserInfoRequest());
})),
@ -69,13 +78,18 @@ class _MinePersonInfoPageState extends State<MinePersonInfoPage> {
action: () {
// isFrom1 2
if (state.mineInfoData.value.mobile!.isNotEmpty) {
Navigator.pushNamed(context, Routers.mineUnbindPhoneOrEmailPage,
arguments: {'mobile': state.mineInfoData.value.mobile!, 'isFrom': '1'})
.then((value) => logic.getUserInfoRequest());
Navigator.pushNamed(
context, Routers.mineUnbindPhoneOrEmailPage,
arguments: {
'mobile': state.mineInfoData.value.mobile!,
'isFrom': '1'
}).then((value) => logic.getUserInfoRequest());
} else {
Navigator.pushNamed(context, Routers.mineBindPhoneOrEmailPage,
arguments: {'mobile': state.mineInfoData.value.mobile!, 'isFrom': '1'})
.then((value) => logic.getUserInfoRequest());
Navigator.pushNamed(
context, Routers.mineBindPhoneOrEmailPage, arguments: {
'mobile': state.mineInfoData.value.mobile!,
'isFrom': '1'
}).then((value) => logic.getUserInfoRequest());
}
})),
Obx(() => CommonItem(
@ -88,13 +102,18 @@ class _MinePersonInfoPageState extends State<MinePersonInfoPage> {
action: () {
// isFrom1 2
if (state.mineInfoData.value.email!.isNotEmpty) {
Navigator.pushNamed(context, Routers.mineUnbindPhoneOrEmailPage,
arguments: {'isFrom': '2', 'email': state.mineInfoData.value.email!})
.then((value) => logic.getUserInfoRequest());
Navigator.pushNamed(
context, Routers.mineUnbindPhoneOrEmailPage,
arguments: {
'isFrom': '2',
'email': state.mineInfoData.value.email!
}).then((value) => logic.getUserInfoRequest());
} else {
Navigator.pushNamed(context, Routers.mineBindPhoneOrEmailPage,
arguments: {'isFrom': '2', 'email': state.mineInfoData.value.email!})
.then((value) => logic.getUserInfoRequest());
Navigator.pushNamed(
context, Routers.mineBindPhoneOrEmailPage, arguments: {
'isFrom': '2',
'email': state.mineInfoData.value.email!
}).then((value) => logic.getUserInfoRequest());
}
})),
CommonItem(
@ -103,24 +122,30 @@ class _MinePersonInfoPageState extends State<MinePersonInfoPage> {
isHaveLine: true,
isHaveDirection: true,
action: () {
Navigator.pushNamed(context, Routers.minePersonInfoResetPasswordPage);
Navigator.pushNamed(
context, Routers.minePersonInfoResetPasswordPage);
}),
Obx(() => CommonItem(
leftTitel: TranslationLoader.lanKeys!.safetyProblem!.tr,
rightTitle: state.mineInfoData.value.haveSafeAnswer == 0 ? "去设置" : "",
rightTitle:
state.mineInfoData.value.haveSafeAnswer == 0 ? "去设置" : "",
isHaveLine: true,
isHaveDirection: true,
action: () {
if (state.mineInfoData.value.haveSafeAnswer == 0) {
Navigator.pushNamed(context, Routers.minePersonInfoSetSafetyProblemPage)
Navigator.pushNamed(
context, Routers.minePersonInfoSetSafetyProblemPage)
.then((value) => logic.getUserInfoRequest());
} else {
Navigator.pushNamed(context, Routers.minePersonInfoViewSafetyProblemPage);
Navigator.pushNamed(
context, Routers.minePersonInfoViewSafetyProblemPage);
}
})),
Obx(() => CommonItem(
leftTitel: TranslationLoader.lanKeys!.countryAndRegion!.tr,
rightTitle: state.mineInfoData.value.countryName != null ? state.mineInfoData.value.countryName! : "",
rightTitle: state.mineInfoData.value.countryName != null
? state.mineInfoData.value.countryName!
: "",
isHaveLine: false,
isHaveDirection: false)),
],
@ -152,7 +177,8 @@ class _MinePersonInfoPageState extends State<MinePersonInfoPage> {
Future _openModalBottomSheet() async {
showModalBottomSheet(
context: context,
shape: RoundedRectangleBorder(borderRadius: BorderRadiusDirectional.circular(10)),
shape: RoundedRectangleBorder(
borderRadius: BorderRadiusDirectional.circular(10)),
builder: (BuildContext context) {
return AlertBottomWidget(
topTitle: '',

View File

@ -1,4 +1,3 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:star_lock/mine/mine/starLockMine_page.dart';
@ -16,7 +15,7 @@ class NavPages extends StatefulWidget {
class _NavPagesState extends State<NavPages> {
int _currentIndex = 0;
final List<Widget> _listPage = [
const StarLockMainPage(),
StarLockMainPage(),
// StarLockMinePage(key: starLockMineKey),
];

View File

@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:star_lock/flavors.dart';
import 'package:star_lock/login/login/starLock_login_page.dart';
import 'package:star_lock/main/lockMian/lockMain/xhj/lockMain_xhj_page.dart';
import 'package:star_lock/tools/appFirstEnterHandle.dart';
import 'package:star_lock/debug/debug_tool.dart';
import 'package:star_lock/tools/storage.dart';
@ -42,7 +43,9 @@ class _StarLockApplicationState extends State<StarLockApplication> {
} else if (snapshot.hasData) {
if (snapshot.data!) {
//
return const StarLockMainPage();
return F.sw(
defaultCall: () => StarLockMainPage(),
xhjCall: () => const StarLockMainXHJPage());
} else {
//
return const StarLockLoginPage();