How to work with progress indicator in flutter?

后端 未结 12 809
面向向阳花
面向向阳花 2020-12-02 05:29

I\'m newbie in flutter and wanted to know what is better way to add CircularProgressIndicator in my layout. For example, my login view. This view have username,

12条回答
  •  甜味超标
    2020-12-02 05:43

    This is my solution with stack

    import 'package:flutter/material.dart';
    import 'package:shared_preferences/shared_preferences.dart';
    import 'dart:async';
    
    final themeColor = new Color(0xfff5a623);
    final primaryColor = new Color(0xff203152);
    final greyColor = new Color(0xffaeaeae);
    final greyColor2 = new Color(0xffE8E8E8);
    
    class LoadindScreen extends StatefulWidget {
      LoadindScreen({Key key, this.title}) : super(key: key);
      final String title;
      @override
      LoginScreenState createState() => new LoginScreenState();
    }
    
    class LoginScreenState extends State {
      SharedPreferences prefs;
    
      bool isLoading = false;
    
      Future handleSignIn() async {
        setState(() {
          isLoading = true;
        });
        prefs = await SharedPreferences.getInstance();
        var isLoadingFuture = Future.delayed(const Duration(seconds: 3), () {
          return false;
        });
        isLoadingFuture.then((response) {
          setState(() {
            isLoading = response;
          });
        });
      }
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
            appBar: AppBar(
              title: Text(
                widget.title,
                style: TextStyle(color: primaryColor, fontWeight: FontWeight.bold),
              ),
              centerTitle: true,
            ),
            body: Stack(
              children: [
                Center(
                  child: FlatButton(
                      onPressed: handleSignIn,
                      child: Text(
                        'SIGN IN WITH GOOGLE',
                        style: TextStyle(fontSize: 16.0),
                      ),
                      color: Color(0xffdd4b39),
                      highlightColor: Color(0xffff7f7f),
                      splashColor: Colors.transparent,
                      textColor: Colors.white,
                      padding: EdgeInsets.fromLTRB(30.0, 15.0, 30.0, 15.0)),
                ),
    
                // Loading
                Positioned(
                  child: isLoading
                      ? Container(
                          child: Center(
                            child: CircularProgressIndicator(
                              valueColor: AlwaysStoppedAnimation(themeColor),
                            ),
                          ),
                          color: Colors.white.withOpacity(0.8),
                        )
                      : Container(),
                ),
              ],
            ));
      }
    }
    

提交回复
热议问题