fix:修复商场无法回退的问题
This commit is contained in:
parent
4a18988613
commit
9cefd84f50
@ -56,7 +56,7 @@ class _StarLockMainXHJPageState extends State<StarLockMainXHJPage>
|
||||
widget: SafeArea(
|
||||
bottom: false,
|
||||
child: LockMallPage(
|
||||
showAppBar: false,
|
||||
allowReturn: false,
|
||||
),
|
||||
),
|
||||
logic: logic,
|
||||
|
||||
@ -17,7 +17,7 @@ class LockMallLogic extends BaseGetXController {
|
||||
late LockMallState state;
|
||||
|
||||
LockMallLogic({required bool allowReturn})
|
||||
: state = LockMallState(allowReturn: allowReturn);
|
||||
: state = LockMallState(allowReturn: allowReturn );
|
||||
|
||||
//获取商城跳转地址
|
||||
Future<void> getMallURLRequest() async {
|
||||
@ -35,6 +35,7 @@ class LockMallLogic extends BaseGetXController {
|
||||
},
|
||||
onPageFinished: (String url) {
|
||||
state.webProgress.value = 1.0;
|
||||
refreshGoBack();
|
||||
},
|
||||
onWebResourceError: (WebResourceError error) {},
|
||||
onNavigationRequest: (NavigationRequest request) async {
|
||||
@ -99,12 +100,25 @@ class LockMallLogic extends BaseGetXController {
|
||||
bool canGoBack = await state.mallWebView.canGoBack();
|
||||
if (canGoBack) {
|
||||
await state.mallWebView.goBack();
|
||||
} else {
|
||||
if (state.allowReturn) Get.back();
|
||||
} else if (state.allowReturn) {
|
||||
Get.back();
|
||||
}
|
||||
refreshGoBack();
|
||||
return false;
|
||||
}
|
||||
|
||||
//刷新当前路由状态
|
||||
void refreshGoBack(){
|
||||
//如果属于一直返回按钮,则根据是否有路由可以回退刷新
|
||||
if(state.allowReturn){
|
||||
return;
|
||||
}
|
||||
state.mallWebView.canGoBack().then((value) {
|
||||
state.canGoBack = value;
|
||||
update();
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> onReady() async {
|
||||
super.onReady();
|
||||
|
||||
@ -30,36 +30,38 @@ class _LockMallPageState extends State<LockMallPage> {
|
||||
return GetBuilder<LockMallLogic>(
|
||||
init: LockMallLogic(allowReturn: widget.allowReturn),
|
||||
builder: (LockMallLogic logic) {
|
||||
return PopScope(
|
||||
onPopInvoked: logic.canGoBack,
|
||||
canPop: false,
|
||||
child: Scaffold(
|
||||
resizeToAvoidBottomInset: false,
|
||||
backgroundColor: const Color(0xFFFFFFFF),
|
||||
appBar: widget.showAppBar
|
||||
? TitleAppBar(
|
||||
barTitle: getWebTitle(logic),
|
||||
haveBack: true,
|
||||
backgroundColor: AppColors.mainColor,
|
||||
)
|
||||
: null,
|
||||
body: Obx(() => Column(
|
||||
children: <Widget>[
|
||||
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),
|
||||
),
|
||||
],
|
||||
))),
|
||||
return Scaffold(
|
||||
resizeToAvoidBottomInset: false,
|
||||
backgroundColor: const Color(0xFFFFFFFF),
|
||||
appBar: widget.showAppBar
|
||||
? TitleAppBar(
|
||||
barTitle: getWebTitle(logic),
|
||||
haveBack: logic.state.canGoBack || logic.state.allowReturn,
|
||||
backgroundColor: AppColors.mainColor,
|
||||
backAction: () => logic.canGoBack(false),
|
||||
)
|
||||
: null,
|
||||
body: Obx(() => Column(
|
||||
children: <Widget>[
|
||||
PopScope(
|
||||
onPopInvoked: logic.canGoBack,
|
||||
canPop: false,
|
||||
child: SizedBox(),
|
||||
),
|
||||
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),
|
||||
),
|
||||
],
|
||||
)),
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
@ -9,6 +9,7 @@ class LockMallState {
|
||||
var lockMallUrl = "".obs;
|
||||
var webProgress = 0.0.obs;
|
||||
bool allowReturn;
|
||||
bool canGoBack = false;
|
||||
late WebViewController mallWebView = initWebViewController();
|
||||
|
||||
//初始化webView控制器
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user