245 lines
7.6 KiB
Dart
Executable File
245 lines
7.6 KiB
Dart
Executable File
import 'package:flutter/material.dart';
|
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
import 'package:get/get.dart';
|
|
import 'package:star_lock/appRouters.dart';
|
|
import 'package:star_lock/common/XSConstantMacro/XSConstantMacro.dart';
|
|
import 'package:package_info_plus/package_info_plus.dart';
|
|
import 'package:star_lock/mine/about/about_console.dart';
|
|
|
|
import '../../app_settings/app_colors.dart';
|
|
import '../../flavors.dart';
|
|
import '../../tools/commonItem.dart';
|
|
import '../../tools/titleAppBar.dart';
|
|
import '../../translations/trans_lib.dart';
|
|
|
|
class AboutPage extends StatefulWidget {
|
|
const AboutPage({Key? key}) : super(key: key);
|
|
|
|
@override
|
|
State<AboutPage> createState() => _AboutPageState();
|
|
}
|
|
|
|
class _AboutPageState extends State<AboutPage> {
|
|
late PackageInfo packageInfo;
|
|
String appName = "";
|
|
String packageName = "";
|
|
String version = "-----";
|
|
String buildNumber = "---";
|
|
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
initPackageInfo();
|
|
}
|
|
|
|
Future<void> initPackageInfo() async {
|
|
packageInfo = await PackageInfo.fromPlatform();
|
|
setState(() {
|
|
appName = packageInfo.appName;
|
|
packageName = packageInfo.packageName;
|
|
version = packageInfo.version;
|
|
buildNumber = packageInfo.buildNumber;
|
|
});
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return GetBuilder<AboutConsole>(
|
|
init: AboutConsole(),
|
|
builder: (AboutConsole logic) {
|
|
return Scaffold(
|
|
backgroundColor: AppColors.mainBackgroundColor,
|
|
appBar: F.sw(
|
|
skyCall: () => TitleAppBar(
|
|
barTitle: TranslationLoader.lanKeys!.about!.tr,
|
|
haveBack: true,
|
|
backgroundColor: AppColors.mainColor,
|
|
),
|
|
xhjCall: () => TitleAppBar(
|
|
barTitle: TranslationLoader.lanKeys!.about!.tr,
|
|
haveBack: true,
|
|
backgroundColor: Colors.white,
|
|
iconColor: AppColors.blackColor,
|
|
titleColor: AppColors.blackColor,
|
|
),
|
|
),
|
|
body: Column(
|
|
crossAxisAlignment: CrossAxisAlignment.center,
|
|
children: [
|
|
F.sw(
|
|
skyCall: () => logoView(),
|
|
xhjCall: () => const SizedBox()),
|
|
listView(),
|
|
F.sw(
|
|
skyCall: () => const SizedBox(),
|
|
xhjCall: () => logoView()),
|
|
],
|
|
),
|
|
);
|
|
});
|
|
}
|
|
|
|
//列表
|
|
Widget listView() {
|
|
Widget view = Column(
|
|
children: [
|
|
CommonItem(
|
|
leftTitel: TranslationLoader.lanKeys!.introduce!.tr,
|
|
rightTitle: "",
|
|
isHaveLine: false,
|
|
isHaveDirection: true,
|
|
action: () {
|
|
Navigator.pushNamed(context, Routers.webviewShowPage, arguments: {
|
|
"url": XSConstantMacro.introduceURL,
|
|
"title": '介绍'.tr
|
|
});
|
|
}),
|
|
Divider(
|
|
height: 1,
|
|
color: AppColors.greyLineColor,
|
|
indent: 20.w,
|
|
endIndent: 20.w,
|
|
),
|
|
CommonItem(
|
|
leftTitel: TranslationLoader.lanKeys!.userAgreement!.tr,
|
|
rightTitle: "",
|
|
isHaveLine: false,
|
|
isHaveDirection: true,
|
|
action: () {
|
|
Get.toNamed(Routers.webviewShowPage, arguments: {
|
|
"url": XSConstantMacro.userAgreementURL,
|
|
"title": '用户协议'.tr
|
|
});
|
|
}),
|
|
Divider(
|
|
height: 1,
|
|
color: AppColors.greyLineColor,
|
|
indent: 20.w,
|
|
endIndent: 20.w,
|
|
),
|
|
CommonItem(
|
|
leftTitel: TranslationLoader.lanKeys!.privacyPolicy!.tr,
|
|
rightTitle: "",
|
|
isHaveLine: false,
|
|
isHaveDirection: true,
|
|
action: () {
|
|
Navigator.pushNamed(context, Routers.webviewShowPage, arguments: {
|
|
"url": XSConstantMacro.privacyPolicyURL,
|
|
"title": '隐私政策'.tr
|
|
});
|
|
}),
|
|
Divider(
|
|
height: 1,
|
|
color: AppColors.greyLineColor,
|
|
indent: 20.w,
|
|
endIndent: 20.w,
|
|
),
|
|
CommonItem(
|
|
leftTitel: TranslationLoader
|
|
.lanKeys!.personalInformationCollectionList!.tr,
|
|
rightTitle: "",
|
|
isHaveLine: false,
|
|
isHaveDirection: true,
|
|
action: () {
|
|
Navigator.pushNamed(context, Routers.webviewShowPage, arguments: {
|
|
"url": XSConstantMacro.collectionListURL,
|
|
"title": '个人信息收集清单'.tr
|
|
});
|
|
}),
|
|
Divider(
|
|
height: 1,
|
|
color: AppColors.greyLineColor,
|
|
indent: 20.w,
|
|
endIndent: 20.w,
|
|
),
|
|
CommonItem(
|
|
leftTitel:
|
|
TranslationLoader.lanKeys!.applicationPermissionDescription!.tr,
|
|
rightTitle: "",
|
|
isHaveLine: false,
|
|
isHaveDirection: true,
|
|
action: () {
|
|
Navigator.pushNamed(context, Routers.webviewShowPage, arguments: {
|
|
"url": XSConstantMacro.appPermissionDescURL,
|
|
"title": '应用权限说明'.tr
|
|
});
|
|
}),
|
|
Divider(
|
|
height: 1,
|
|
color: AppColors.greyLineColor,
|
|
indent: 20.w,
|
|
endIndent: 20.w,
|
|
),
|
|
CommonItem(
|
|
leftTitel:
|
|
TranslationLoader.lanKeys!.thirdPartyInformationSharingList!.tr,
|
|
rightTitle: "",
|
|
isHaveLine: false,
|
|
isHaveDirection: true,
|
|
action: () {
|
|
Navigator.pushNamed(context, Routers.webviewShowPage, arguments: {
|
|
"url": XSConstantMacro.thirdPartyInfShareListURL,
|
|
"title": '第三方信息共享清单'.tr
|
|
});
|
|
}),
|
|
],
|
|
);
|
|
view = F.sw(
|
|
skyCall: () => view,
|
|
xhjCall: () => Container(
|
|
margin: EdgeInsets.only(top: 20.h, left: 20.w, right: 20.w),
|
|
decoration: BoxDecoration(
|
|
color: Colors.white,
|
|
borderRadius: BorderRadius.all(Radius.circular(20.r))),
|
|
child: ClipRRect(
|
|
borderRadius: BorderRadius.circular(20.r),
|
|
child: view,
|
|
),
|
|
));
|
|
return view;
|
|
}
|
|
|
|
//图标
|
|
Widget logoView() {
|
|
return GetBuilder<AboutConsole>(builder: (AboutConsole logic) {
|
|
return Padding(
|
|
padding: EdgeInsets.only(top: 70.h, bottom: 60.h),
|
|
child: Column(
|
|
children: [
|
|
Align(
|
|
alignment: Alignment.topRight,
|
|
child: GestureDetector(
|
|
onTap: logic.handleTap,
|
|
child: Container(
|
|
color: Colors.transparent,
|
|
width: 80.w,
|
|
height: 80.h,
|
|
),
|
|
),
|
|
),
|
|
ClipRRect(
|
|
borderRadius: BorderRadius.circular(20.r),
|
|
child: Image.asset(
|
|
F.sw(
|
|
skyCall: () => "images/icon_main_1024.png",
|
|
xhjCall: () => "images/icon_main_xhj_1024.png"),
|
|
width: 160.w,
|
|
height: 160.w),
|
|
),
|
|
SizedBox(height: 20.h),
|
|
Text(
|
|
"${F.title} $version+$buildNumber",
|
|
style: TextStyle(fontSize: 24.sp, color: AppColors.blackColor),
|
|
),
|
|
SizedBox(height: 20.h),
|
|
Text(
|
|
F.apiPrefix,
|
|
style: TextStyle(fontSize: 24.sp, color: AppColors.blackColor),
|
|
),
|
|
],
|
|
),
|
|
);
|
|
});
|
|
}
|
|
}
|