#flutter #dart #webview #back-button-control
#flutter #dart #webview #кнопка возврата-управление
Вопрос:
Когда я нажимаю кнопку возврата устройства, приложение закрывается, поэтому я хочу настроить кнопку возврата устройства, чтобы вернуться на страницы последовательностей, а не выходить.Спасибо
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Welcome to Flutter',
home: Scaffold(
body: WebView(
initialUrl: "https://www.carrefourjordan.com",
javascriptMode: JavascriptMode.unrestricted,
),
),
);
}
}
Ответ №1:
привет, чтобы управлять кнопкой возврата, нажмите использовать Willpopscope, обернув scaffold внутри willpopscope и используя свойство onwillpop
WillPopScope(
onWillPop: (){
// Navigator.push(context, MaterialPageRoute(builder: (context)=>Page()));
return Future.value(false);
},
child: Scaffold(
body: WebView(
initialUrl: "https://www.carrefourjordan.com",
javascriptMode: JavascriptMode.unrestricted,
),
),
);
Комментарии:
1. можете ли вы сделать это для меня, потому что я пытался, и есть ошибка, спасибо
2. я отредактировал ответ в соответствии с вашими требованиями по методу willpop делайте то, что вы хотите, когда пользователь нажимает кнопку возврата
Ответ №2:
Вы можете добиться этого в 2 шага:
- Оберните свой каркас в
WillPopScope
, чтобы зафиксировать событие нажатия кнопки «Назад» - Используйте пакет webview в Appwebview контроллера
canGoback()
иgoBack()
для перемещения в WeView
Попробуйте это:
class MyApp extends StatelessWidget {
InAppWebViewController _webViewController;
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Welcome to Flutter',
home: WillPopScope(
onWillPop: _onBack,
child: Scaffold(
body: InAppWebView(
initialUrl: "https://www.carrefourjordan.com",
onWebViewCreated: (InAppWebViewController controller) {
_webViewController = controller;
},
),
),
),
);
}
Future<bool> _onBack() async {
if (await _webViewController.canGoBack()) {
_webViewController.goBack(); // perform webview back operation
return false;
} else {
// Webpage in home page
return true; // Close App
}
}
}