基本用途
SizedBox有两个作用:
- 精准控制child尺寸。
- 精准定义 widget之间的间隔。此时SizedBox没有定义child
Spacer作用:
- 通过Flex 创建widget之前的空间。
SizedBox
通过width和height,覆盖child的尺寸定义。
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Row(
mainAxisSize: MainAxisSize.max,
children: [
BlueBox(),
SizedBox(
width: 100,
height: 60,
child: BlueBox(),
),
BlueBox(),
],
);
}
}
class BlueBox extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
width: 50,
height: 50,
decoration: BoxDecoration(
color: Colors.blue,
border: Border.all(),
),
);
}
}
如果没有定义child,则会创建空间。
Spacer
Spacer和Flexible通过flex占据空间。
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Row(
children: [
BlueBox(),
Spacer(flex: 1),
BlueBox(),
BlueBox(),
Flexible(
flex: 1,
fit: FlexFit.tight,
child:BlueBox()
)
],
);
}
}
class BlueBox extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
width: 50,
height: 50,
decoration: BoxDecoration(
color: Colors.blue,
border: Border.all(),
),
);
}
}