Привет, во-первых, я новичок в трепетании, но у меня не очень хороший опыт работы с плагином webview. Как перезагрузить новый URL или просто обновить sh мое веб-представление, когда пользователь снова перейдет на вкладку, скажем, через 1 минуту?
На данный момент я могу перезагрузить веб-страницу, используя Floating action button
, но Я НЕ ХОЧУ (это просто заполнитель, чтобы знать, что я могу перезагрузить веб-просмотр)
Я хочу, чтобы я мог перезагрузить веб-просмотр, когда пользователь re enters
вкладка после указан c количество времени. но я, честно говоря, не знаю, как это сделать программно
- Выйти из вкладки более чем на 1 минуту
- Вернуться к вкладке и refre sh веб-просмотр.
то, что я пытался:
создать метод с именем tappingOnTab (), который сохранит время доступа к переменной с именем lasloaded, но это не работает, так как он даже не перезагружает мой веб-просмотр после выхода из вкладки в течение более 10 секунд.
Честно говоря, я пытался искать в течение 2 дней по этому поводу, но я не знаю, является ли он плагином веб-просмотра, так как он все еще находится на предварительном просмотре разработчиков, или мой код действительно не работает.
В настоящее время у меня есть этот код:
class _HomePageState extends State<HomePage> {
final FirebaseMessaging _firebaseMessaging = FirebaseMessaging();
// WebViewController myController;
var lastloaded;
Completer<WebViewController> _controller = Completer<WebViewController>();
_exitApp(BuildContext context, Future<WebViewController> controller) async {
controller.then((data) async {
WebViewController controller = data;
var goBack = await controller.canGoBack();
if (goBack == true) {
print("onwill go back");
controller.goBack();
} else {
print("onwill not go back");
Navigator.pop(context);
}
});
}
@override
void initState() {
super.initState();
tappingOnTab();
firebaseCloudMessagingListeners();
}
void iOSPermission() {
_firebaseMessaging.requestNotificationPermissions(
IosNotificationSettings(sound: true, badge: true, alert: true));
_firebaseMessaging.onIosSettingsRegistered
.listen((IosNotificationSettings settings) {
print("Settings registered: $settings");
});
}
void tappingOnTab() {
final now = DateTime.now();
if (lastloaded != null) {
print(now);
if (now.difference(lastloaded).inSeconds > 10) {
// _checkConnection();
setState(() {
WebView(
initialUrl: 'www.google.com',
);
});
}
lastloaded = now;
}
}
@override
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: () => _exitApp(context, _controller.future),
child: SafeArea(
child: Scaffold(
body: WebView(
initialUrl: 'https://syncshop.online/en/',
javascriptMode: JavascriptMode.unrestricted,
onWebViewCreated: (WebViewController webViewController) {
_controller.complete(webViewController);
},
onPageFinished: (controller) async {
(await _controller.future).evaluateJavascript(
"document.getElementsByClassName('footer-container')[0].style.display='none';");
(await _controller.future).evaluateJavascript(
"document.getElementById('st_notification_1').style.display='none';");
(await _controller.future).evaluateJavascript(
"document.getElementById('sidebar_box').style.display='none';");
},
),
floatingActionButton: FutureBuilder<WebViewController>(
future: _controller.future,
builder: (BuildContext context,
AsyncSnapshot<WebViewController> controller) {
if (controller.hasData) {
return FloatingActionButton(
onPressed: () {
controller.data.reload();
},
child: Icon(Icons.refresh),
);
}
return Container();
},
),
),
),
);
}
_checkConnection() async {
var result = await (Connectivity().checkConnectivity());
if (result == ConnectivityResult.none) {
_showDialog("No internet", "You are not connected to the internet");
} else if (result == ConnectivityResult.mobile) {
// _showDialog("Internet Access", "You are connected over mobile data");
} else if (result == ConnectivityResult.wifi) {
_showDialog("Internet Access", "You are connected over wifi");
}
}