該CircularProgressIndicator小部件采用其祖父小部件SizedBox的寬度,寬度為 200。我希望尺寸為 10x10,但尺寸為 200x10。如果最里面的小部件是用 aContainer和繪制的框,我會得到相同的行為BoxDecoration。
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData.dark().copyWith(
scaffoldBackgroundColor: Color.fromARGB(255, 18, 32, 47),
),
debugShowCheckedModeBanner: false,
home: Scaffold(
body: Center(
child: MyWidget(),
),
),
);
}
}
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return const SizedBox(
width: 200,
child: SizedBox(
width: 10, height: 10, child: CircularProgressIndicator()));
}
}
這是我的應用程式的簡化版本,我需要外部SizedBox.
uj5u.com熱心網友回復:
Widget 約束有一些限制。
如果孩子想要與其父母不同的尺寸,而父母沒有足夠的資訊來對齊它,那么孩子的尺寸可能會被忽略。定義對齊時要具體
小部件只能在其父級賦予它的約束范圍內決定自己的大小。這意味著一個小部件通常不能有它想要的任何大小。
小部件不知道也不決定自己在螢屏中的位置,因為決定小部件位置的是小部件的父級。
在這里閱讀更多:https ://docs.flutter.dev/development/ui/layout/constraints
這就是為什么,第二個
SizedBox尺寸被忽略了,因為它不知道位置和對齊方式。正因為如此,CircularProgressIndicator()采取祖父母的大小。
解決方案:
將對齊設定為SizedBox.
const SizedBox(
width: 200,
child: Align(alignment:Alignment.center,
child: SizedBox(
width: 10, height: 10, child: CircularProgressIndicator())));
uj5u.com熱心網友回復:
簡短的回答和解決方案就是用 Center 包裹你的內部 SizedBox。我會幫你的。
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return const SizedBox(
width: 200,
child: Center(
child: SizedBox(
width: 10,
height: 10,
child: CircularProgressIndicator(),
),
),
);
}
}
我建議你閱讀這篇文章,它描述了 Flutter 中大小和約束的作業原理。https://docs.flutter.dev/development/ui/layout/constraints
uj5u.com熱心網友回復:
您可以使用Center小部件來集中子小部件
SizedBox(
width: 200,
child: Center(
child: SizedBox(
width: 10, height: 10, child: CircularProgressIndicator()),
));
或者您可以使用Align小部件將孩子重新定位在可用區域中
SizedBox(
width: 200,
child: Align(
alignment: Alignment.topRight,
child: SizedBox(
width: 10, height: 10, child: CircularProgressIndicator()),
));
uj5u.com熱心網友回復:
移除寬度為 200 的外部 SizedBox。
或像這樣使用。
const SizedBox(
width: 200,
child: Center(
child: SizedBox(
width: 10,
height: 10,
child: CircularProgressIndicator(),
),
),
);
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/520960.html
標籤:扑镖
