如何将大小设置为 CircularProgress 指示器?

我正在尝试为我的应用程序制作一个加载屏幕,我正在使用 CircularProgressIndicator小部件,但是我想知道是否有办法使它的高度和宽度更大,它太小了。

有人能帮帮我吗?

90438 次浏览

您可以将 CircularProgressIndicator封装在 SizedBox小部件中

   @override
Widget build(BuildContext context) {
return Container(
child: Center(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
SizedBox(
child: CircularProgressIndicator(),
height: 200.0,
width: 200.0,
),
SizedBox(
child: CircularProgressIndicator(),
height: 50.0,
width: 50.0,
),
SizedBox(
child: CircularProgressIndicator(),
height: 10.0,
width: 10.0,
)
],
),
),
);

这个可能有用

Container(
width: 50.0,
height: 20.0,
child: (CircularProgressIndicator(
valueColor: AlwaysStoppedAnimation<Color>(
Colors.green,
),
backgroundColor: Colors.red,
value: 0.2,
))),

如果用 Column小部件包装指示器,则可以更好地控制指示器的大小。不疼,但能完成任务。在我的情况下是使用 按钮内的小型装载指示器。

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),
),
),
),
],
);
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,
),
) ;
}


请测试你的答案。

只需将 CircularProgress 指示符放在 SizedBox 或容器中:

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

... 仍然导致循环进步指标填补可用的空间。SizedBox 不约束 CircularProgressIndicator (这看起来像是 Flutter 中的 bug)。

然而,用 Center 包装它将使其工作:

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

我在 Github 上抱怨过这种令人困惑的行为。Flutter 团队用新的文档作出了有益的回应,文档解释说,如果无法确定小部件的对齐方式,那么它所需的大小可能会被忽略。

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

这就是解决方案,对我很有效

Center(
heightFactor: 1,
widthFactor: 1,
child: SizedBox(
height: 16,
width: 16,
child: CircularProgressIndicator(
strokeWidth: 1.5,
),
),
)


简单总是强大的,用转换小部件包装它

Transform.scale(
scale: 0.5,
child: CircularProgressIndicator(),
)

唯一的方法,我可以防止被剪裁的 CircularProgressIndicator从顶部,底部,左边和右边是通过包装它在一个 Padding与填充设置为一半的行程宽度的指示器。

  Padding(
padding: EdgeInsets.all(5),
child: SizedBox(
width: 100,
height: 100,
child: CircularProgressIndicator(
strokeWidth: 10,
)
)
)

虽然不知道为什么这突然成了一个问题,但是我已经使用循环进度指标很多年了,以前从来没有出现过问题。

这对我来说很有效,重要的是在进度指示器周围包围一个中心

SizedBox(
height: 16,
width: 16,
child: Center(
child: CircularProgressIndicator(
strokeWidth: 1.5,
)
)
),

您可以使用此示例来更好地处理小部件指示器显示。

SizedBox(
height: 15.0,
width: 15.0,
child: Transform.scale(
scale: 2,
child: CircularProgressIndicator(
strokeWidth: 2,
valueColor: AlwaysStoppedAnimation<Color>(
Color(Colors.blue),
),
),
),
),

这将允许您更改指示器的大小,并在一个框或按钮内更好地控制它。

在 Container 中添加对齐属性

Container(
alignment: Alignment.topCenter,
child:CircularProgressIndicator()
),

您应该为 Container 或 SizedBox 提供与高度相同的宽度。如果宽度和高度不同,CircularProgressIndicator 将变成椭圆。

只有在需要调整大小的自定义时,容器才更可取。

 const SizedBox(
width: 100,
height: 100,
child: CircularProgressIndicator(
color: Colors.blue,
strokeWidth: 10,
),
),

或者

   const Container(
width: 100,
height: 100,
decoration: const BoxDecoration(
shape: BoxShape.circle, color: Colors.amber),
child: const CircularProgressIndicator(
color: Colors.red,
strokeWidth: 20,
),
)
const SizedBox(
height: 16,
width: 16,
child: CircularProgressIndicator(
strokeWidth: 1.5,
),
),

您还可以为 CircularProgress 指示器和其他一些属性设置颜色。