2024-01-17 18:43:34 +08:00
|
|
|
|
import 'package:flutter/material.dart';
|
2024-02-27 11:50:53 +08:00
|
|
|
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
2024-01-17 18:43:34 +08:00
|
|
|
|
import 'package:get/get.dart';
|
|
|
|
|
|
import 'package:star_lock/app_settings/app_colors.dart';
|
2024-04-29 14:30:36 +08:00
|
|
|
|
import 'package:star_lock/flavors.dart';
|
2024-01-25 15:43:10 +08:00
|
|
|
|
import 'package:star_lock/mine/mall/lockMall_logic.dart';
|
2024-01-17 18:43:34 +08:00
|
|
|
|
import 'package:star_lock/tools/titleAppBar.dart';
|
|
|
|
|
|
import 'package:webview_flutter/webview_flutter.dart';
|
|
|
|
|
|
|
|
|
|
|
|
class LockMallPage extends StatefulWidget {
|
2024-04-15 16:20:22 +08:00
|
|
|
|
LockMallPage({Key? key, this.showAppBar = true, this.allowReturn = true})
|
|
|
|
|
|
: super(key: key);
|
2024-04-15 14:09:23 +08:00
|
|
|
|
bool showAppBar;
|
2024-04-15 16:20:22 +08:00
|
|
|
|
bool allowReturn;
|
2024-01-17 18:43:34 +08:00
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
|
State<LockMallPage> createState() => _LockMallPageState();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-06-07 11:12:45 +08:00
|
|
|
|
class _LockMallPageState extends State<LockMallPage> with AutomaticKeepAliveClientMixin {
|
2024-01-17 18:43:34 +08:00
|
|
|
|
@override
|
|
|
|
|
|
void initState() {
|
|
|
|
|
|
super.initState();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
|
Widget build(BuildContext context) {
|
2024-06-07 11:12:45 +08:00
|
|
|
|
// 如果未登录状态,应先跳转登录页
|
|
|
|
|
|
// url应该使用接口获取,接口名称 “获取商城跳转地址:/mall/getUrl“ POST请求,无参数,需要登录
|
2024-01-25 15:43:10 +08:00
|
|
|
|
// String url = 'https://ge.mall.star-lock.cn/quick_login?id=4&key=1ffb9d37109b8351ebb04ccfcca02c8e';
|
2024-04-15 16:20:22 +08:00
|
|
|
|
return GetBuilder<LockMallLogic>(
|
|
|
|
|
|
init: LockMallLogic(allowReturn: widget.allowReturn),
|
|
|
|
|
|
builder: (LockMallLogic logic) {
|
2024-04-29 11:25:39 +08:00
|
|
|
|
return Scaffold(
|
|
|
|
|
|
resizeToAvoidBottomInset: false,
|
|
|
|
|
|
backgroundColor: const Color(0xFFFFFFFF),
|
|
|
|
|
|
appBar: widget.showAppBar
|
|
|
|
|
|
? TitleAppBar(
|
|
|
|
|
|
barTitle: getWebTitle(logic),
|
|
|
|
|
|
haveBack: logic.state.canGoBack || logic.state.allowReturn,
|
2024-04-29 14:30:36 +08:00
|
|
|
|
backgroundColor: F.sw(
|
2024-05-28 10:40:17 +08:00
|
|
|
|
skyCall: () => AppColors.mainColor,
|
2024-04-29 14:30:36 +08:00
|
|
|
|
xhjCall: () => Colors.white),
|
|
|
|
|
|
titleColor: F.sw(
|
2024-05-28 10:40:17 +08:00
|
|
|
|
skyCall: () => null,
|
2024-04-29 14:30:36 +08:00
|
|
|
|
xhjCall: () => AppColors.blackColor),
|
|
|
|
|
|
iconColor: F.sw(
|
2024-05-28 10:40:17 +08:00
|
|
|
|
skyCall: () => null,
|
2024-04-29 14:30:36 +08:00
|
|
|
|
xhjCall: () => AppColors.blackColor),
|
2024-04-29 11:25:39 +08:00
|
|
|
|
backAction: () => logic.canGoBack(false),
|
|
|
|
|
|
)
|
|
|
|
|
|
: null,
|
|
|
|
|
|
body: Obx(() => Column(
|
|
|
|
|
|
children: <Widget>[
|
|
|
|
|
|
PopScope(
|
|
|
|
|
|
onPopInvoked: logic.canGoBack,
|
|
|
|
|
|
canPop: false,
|
2024-06-07 11:12:45 +08:00
|
|
|
|
child: const SizedBox(),
|
2024-04-29 11:25:39 +08:00
|
|
|
|
),
|
|
|
|
|
|
Container(
|
|
|
|
|
|
padding: EdgeInsets.only(bottom: 10.w),
|
|
|
|
|
|
child: LinearProgressIndicator(
|
|
|
|
|
|
value: logic.state.webProgress.value,
|
|
|
|
|
|
backgroundColor: Colors.grey,
|
|
|
|
|
|
valueColor:
|
|
|
|
|
|
AlwaysStoppedAnimation<Color>(AppColors.mainColor),
|
|
|
|
|
|
),
|
|
|
|
|
|
),
|
|
|
|
|
|
Expanded(
|
|
|
|
|
|
child: WebViewWidget(controller: logic.state.mallWebView),
|
|
|
|
|
|
),
|
|
|
|
|
|
],
|
|
|
|
|
|
)),
|
2024-04-15 16:20:22 +08:00
|
|
|
|
);
|
|
|
|
|
|
});
|
2024-01-17 18:43:34 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2024-04-15 16:20:22 +08:00
|
|
|
|
String getWebTitle(LockMallLogic logic) {
|
2024-06-07 11:12:45 +08:00
|
|
|
|
String webTitleStr = '配件商城'.tr;
|
2024-04-15 16:20:22 +08:00
|
|
|
|
logic.state.mallWebView.getTitle().then((result) {
|
2024-01-17 18:43:34 +08:00
|
|
|
|
webTitleStr = result!;
|
|
|
|
|
|
});
|
|
|
|
|
|
return webTitleStr;
|
|
|
|
|
|
}
|
2024-06-07 11:12:45 +08:00
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
|
bool get wantKeepAlive => true;
|
2024-01-17 18:43:34 +08:00
|
|
|
|
}
|