How to set size to CircularProgressIndicator?

后端 未结 7 1399
太阳男子
太阳男子 2020-12-08 13:01

I\'m trying to make a loading screen for my application, I\'m using CircularProgressIndicator widget, but I want to know if there\'s a way to make it bigger in

相关标签:
7条回答
  • 2020-12-08 13:23
    bool isLoading = false;
    
    Widget build(BuildContext context) {
      return isLoading
        ? _loadingIndicator()
        : FlatButton.icon(
        icon: Icon(Icons.arrow_forward),
        label: Text('Go to'),
        onPressed: () async {
          setState(() => isLoading = true);
          // Async code ---> Then
          setState(() => isLoading = false);
        },
      );
    }
    
    Widget _loadingIndicator() {
      return Padding(
        padding: EdgeInsets.symmetric(vertical: 12.0),
        child: SizedBox(
          child: CircularProgressIndicator(
            valueColor: AlwaysStoppedAnimation<Color>(Colors.blue),
            strokeWidth: 3.0,
          ),
          height: 25.0,
          width: 25.0,
        ),
      ) ;
    }
    
    
    0 讨论(0)
  • 2020-12-08 13:25

    Simple is always powerful, wrap it with transform widget

    Transform.scale(
      scale: 0.5,
      child: CircularProgressIndicator(),
    )
    
    0 讨论(0)
  • 2020-12-08 13:27

    You can control the size of the indicator better if you wrap it with a Column Widget. It doesn't hurt, but gets the job done. In my case is was using a small loading indicator inside a button.

    Column(
      crossAxisAlignment: CrossAxisAlignment.center,
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        Center(
          child: Container(
            height: 20,
            width: 20,
            margin: EdgeInsets.all(5),
            child: CircularProgressIndicator(
              strokeWidth: 2.0,
              valueColor : AlwaysStoppedAnimation(Colors.white),
            ),
          ),
        ),
      ],
    );
    
    0 讨论(0)
  • 2020-12-08 13:27

    This could be useful

    Container(
              width: 50.0,
              height: 20.0,
              child: (CircularProgressIndicator(
                valueColor: AlwaysStoppedAnimation<Color>(
                  Colors.green,
                ),
                backgroundColor: Colors.red,
                value: 0.2,
              ))),
    
    0 讨论(0)
  • 2020-12-08 13:30

    Please test your answers.

    By simply placing the CircularProgressIndicator in a SizedBox, or a Container:

    main() =>
        runApp(
            SizedBox(width: 30, height: 30, child: CircularProgressIndicator()));
    

    ... still results in the CircularProgressIndicator filling the available space. SizedBox does not constrain the CircularProgressIndicator (which seems like a bug in Flutter).

    Wrapping it with Center, however, will make it work:

    main() =>
        runApp(Center(child: 
            SizedBox( width: 30, height: 30, child: CircularProgressIndicator())));
    

    I complained about this confusing behavior on Github. The flutter team helpfully responded with new docs explaining that a widget’s desired size may be ignored for if it’s alignment can’t be determined.

    https://github.com/flutter/website/pull/5010/commits/3070c777a61b493b46cdde92fa7afc21de7adf25

    0 讨论(0)
  • 2020-12-08 13:32

    This is the solution, which worked for me

    Center(
            heightFactor: 1,
            widthFactor: 1,
            child: SizedBox(
              height: 16,
              width: 16,
              child: CircularProgressIndicator(
                strokeWidth: 1.5,
              ),
            ),
          )
    
    
    0 讨论(0)
提交回复
热议问题