开发者社区> 问答> 正文

颤振Spinkit进度指示器

我是个初来乍到的新手,想知道什么是最好的方法斯宾克特我现在的布局。例如,当我按下一个按钮与下一个屏幕上的webview连接时。加载webview当前需要2-4秒,我想要一个进度指示器出现。我想要创建一个覆盖布局(不透明),完成其动画时,网站视图已加载。

下面是我当前的WebView代码:

class MyWebView extends StatelessWidget {
  final String title;
  final String selectedUrl;

  final Completer<WebViewController> _controller =
      Completer<WebViewController>();

  MyWebView({
    @required this.title,
    @required this.selectedUrl,
  });

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          backgroundColor: Colors.deepPurpleAccent,
          leading: IconButton(
            icon: Icon(Icons.arrow_back_ios),
            color: Colors.white,
            onPressed: () => Navigator.of(context).pop(),
          ),
          title: Row(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
//            Image.asset(
//              'assets/logo.png',
//              fit: BoxFit.contain,
//              height: 32,
//            ),
              Container(
                padding: const EdgeInsets.only(
                    left: 8.0, right: 64.0, top: 8.0, bottom: 8.0),
                child: Image.asset(
                  'assets/White logo - no background.png',
                  alignment: Alignment.center,
                ),
              ),
            ],
          ),
        ),
        body: WebView(
          initialUrl: selectedUrl,
          javascriptMode: JavascriptMode.unrestricted,
          onWebViewCreated: (WebViewController webViewController) {
            _controller.complete(webViewController);
          },
        ));
  }
}

我知道我需要在我的代码中插入以下代码,但我不确定在哪里,我也想知道如何在代码中包括未来代码:

final spinkit = SpinKitSquareCircle(
color: Colors.white,
size: 50.0,
controller: AnimationController(vsync: this, duration: const Duration(milliseconds: 1200)),
);

展开
收起
游客5akardh5cojhg 2019-12-04 14:35:34 556 0
1 条回答
写回答
取消 提交回答
  • 你需要bool isLoading它检测页面是否已完成加载,基于此,您可以隐藏或显示您的SpinKitsquare圆。

    class WebViewPage extends StatefulWidget {
      @override
      _WebViewPageState createState() => _WebViewPageState();
    }
    
    class _WebViewPageState extends State<WebViewPage> with SingleTickerProviderStateMixin{
      bool isLoading = true;
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          body: Stack(
            children: <Widget>[
              WebView(
                initialUrl: 'https://www.google.com/',
                javascriptMode: JavascriptMode.unrestricted,
                onPageFinished: (String url) {
                  setState(() {
                    //hide you progressbar here
                    isLoading = false;
                  });
                },
              ),
              isLoading ? SpinKitSquareCircle(
                color: Colors.red,
                size: 50.0,
                controller: AnimationController(vsync: this,duration: const Duration(milliseconds: 1200)),
              ) : Stack()
            ],
          ),);;
      }
    }
    
    

    您可以在这个要点我也是。 另外,如果您只想加载gifs,那么就不必添加颤振喷溅库,在Image.Asset上加载gif,

    Image.asset(
                        "images/loading.gif",
                        height: 125.0,
                        width: 125.0,
                      )
    
    2019-12-04 14:36:52
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载