为什么我的 FAB 刷新按钮在 WebView 中点击时没有刷新?
Why is my FAB refresh button not refreshing on tap in WebView?
您好,我的 WebView flutter 应用程序有问题,我有一个浮动操作按钮,但它不会在点击时刷新
我的晶圆厂所在的代码是:
import 'dart:async';
import 'dart:math';
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
class HomePage extends StatefulWidget {
HomePage({Key key}) : super(key: key);
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
WebViewController _myController;
final Completer<WebViewController> _controller =
Completer<WebViewController>();
@override
Widget build(BuildContext context) {
return SafeArea(
child: Scaffold(
body: WebView(
initialUrl: 'https://syncshop.online/en/',
javascriptMode: JavascriptMode.unrestricted,
onWebViewCreated: (controller) {
_myController = controller;
},
onPageFinished: (initialUrl) {
_myController.evaluateJavascript("document.getElementsByClassName('footer-container')[0].style.display='none';");
},
),
floatingActionButton: FloatingActionButton(
onPressed: () {
_myController?.reload();
},
child: Icon(Icons.refresh),
),
),
);
}
}
FAB 在那里,但在按下时不刷新 webview url
您有两个 Web 视图控制器实例。
WebViewController _myController
Completer<WebViewController> _controller
发生的情况是 _myController 已被分配了一个值,但它还没有任何数据。
我建议使用 _controller
实例,代码如下:
onWebViewCreated: (controller) {
_controller.complete(controller);
}
FAB 按钮为:
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();
}),
上面对 Completer
的使用允许您仅在 _contoller
有一些数据要重新加载后才显示 FAB。
请参阅此示例代码以获取更多详细信息:https://github.com/flutter/plugins/blob/master/packages/webview_flutter/example/lib/main.dart
您好,我的 WebView flutter 应用程序有问题,我有一个浮动操作按钮,但它不会在点击时刷新
我的晶圆厂所在的代码是:
import 'dart:async';
import 'dart:math';
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
class HomePage extends StatefulWidget {
HomePage({Key key}) : super(key: key);
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
WebViewController _myController;
final Completer<WebViewController> _controller =
Completer<WebViewController>();
@override
Widget build(BuildContext context) {
return SafeArea(
child: Scaffold(
body: WebView(
initialUrl: 'https://syncshop.online/en/',
javascriptMode: JavascriptMode.unrestricted,
onWebViewCreated: (controller) {
_myController = controller;
},
onPageFinished: (initialUrl) {
_myController.evaluateJavascript("document.getElementsByClassName('footer-container')[0].style.display='none';");
},
),
floatingActionButton: FloatingActionButton(
onPressed: () {
_myController?.reload();
},
child: Icon(Icons.refresh),
),
),
);
}
}
FAB 在那里,但在按下时不刷新 webview url
您有两个 Web 视图控制器实例。
WebViewController _myController
Completer<WebViewController> _controller
发生的情况是 _myController 已被分配了一个值,但它还没有任何数据。
我建议使用 _controller
实例,代码如下:
onWebViewCreated: (controller) {
_controller.complete(controller);
}
FAB 按钮为:
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();
}),
上面对 Completer
的使用允许您仅在 _contoller
有一些数据要重新加载后才显示 FAB。
请参阅此示例代码以获取更多详细信息:https://github.com/flutter/plugins/blob/master/packages/webview_flutter/example/lib/main.dart