Как отобразить экран загрузки после нажатия на URL в webview с помощью Flutter?

#flutter #webview

#flutter #webview

Вопрос:

Я пытаюсь отобразить экран загрузки при нажатии на веб-страницу в webview с помощью flutter. экран загрузки отображается после заставки. Но он не отображается после нажатия на ссылку в webview.

 class _HomeState extends State<Home> {
  bool isLoading;
  @override
  void initState() {
    isLoading = true;

  }
  @override
  Widget build(BuildContext context) {

    return Scaffold(
      body:Stack(
        children: <Widget>[
      new WebView(
        initialUrl:"https://abcdef.com/",
        javascriptMode:JavascriptMode.unrestricted,
        onPageFinished: (_) {
          setState(() {
            isLoading = false;
          });
        },
      ),
      isLoading ? Center( child: CircularProgressIndicator()) : Container(),
      ],
      ),
    );
  }
}
  

Ответ №1:

Добавьте onPageStarted обратный вызов к своему Webview , затем установите isLoading на true

Вот так

 Webview(
   initialUrl:"https://abcdef.com/",
   javascriptMode:JavascriptMode.unrestricted,
   onPageStarted: (_){
     setState(() => isLoading = true);
   },
   onPageFinished: (_) {
     setState(() {
        isLoading = false;
     });
   },
}