fix:修复商场无法回退的问题

This commit is contained in:
anfe 2024-04-29 11:25:39 +08:00
parent 4a18988613
commit 9cefd84f50
4 changed files with 51 additions and 34 deletions

View File

@ -56,7 +56,7 @@ class _StarLockMainXHJPageState extends State<StarLockMainXHJPage>
widget: SafeArea(
bottom: false,
child: LockMallPage(
showAppBar: false,
allowReturn: false,
),
),
logic: logic,

View File

@ -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();

View File

@ -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),
),
],
)),
);
});
}

View File

@ -9,6 +9,7 @@ class LockMallState {
var lockMallUrl = "".obs;
var webProgress = 0.0.obs;
bool allowReturn;
bool canGoBack = false;
late WebViewController mallWebView = initWebViewController();
//webView控制器