class _BlogState extends State<Blog> { final Completer<WebViewController> _controller = Completer<WebViewController>(); bool isLoading = true; // 设置状态 @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text(homeTitle), actions: <Widget>[ BlogMenu(_controller.future), ], ), body: Stack( children: [ WebView( initialUrl: homePage, javascriptMode: JavascriptMode.unrestricted, onWebViewCreated: (WebViewController webViewController) { _controller.complete(webViewController); }, navigationDelegate: (NavigationRequest request) { var url = request.url; print("visit $url"); setState(() { isLoading = true; // 开始访问页面,更新状态 }); return NavigationDecision.navigate; }, onPageFinished: (String url) { setState(() { isLoading = false; // 页面加载完成,更新状态 }); }, ), isLoading ? Container( child: Center( child: CircularProgressIndicator(), ), ) : Container(), ], ), floatingActionButton: getFloatingButton(), ); }
Flutter webview加载时显示进度
15 min read