9 Flex布局和 Expanded 的使用
1.源代码
import 'package:flutter/material.dart';
void main () => runApp(MyApp());
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
GlobalKey globalKey = new GlobalKey<FormState>();
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Flex(
direction: Axis.horizontal,
children: <Widget>[
Expanded(
flex: 1,
child: Container(
height: 50.0,
color: Colors.orange,
),
),
Spacer(
flex: 1,
),
Expanded(
flex: 2,
child: Container(
height: 50.0,
color: Colors.green,
),
)
],
),
SizedBox(
height: 200.0,
child: Flex(
direction: Axis.vertical,
children: <Widget>[
Expanded(
flex: 1,
child: Container(
height: 50.0,
color: Colors.red,
),
),
Spacer(
flex: 1,
),
Expanded(
flex: 2,
child: Container(
height: 50.0,
color: Colors.blue,
),
)
],
),
)
]
),
)
);
}
}
2.解释源代码
import 'package:flutter/material.dart';
void main () => runApp(MyApp());
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
GlobalKey globalKey = new GlobalKey<FormState>();
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
//Flex布局
Flex(
//Flex布局水平方向
direction: Axis.horizontal,
children: <Widget>[
//Expanded 可以按比例扩伸 Row、Column和Flex 子widget所占用的空间
Expanded(
//占用比例
flex: 1,
child: Container(
height: 50.0,
color: Colors.orange,
),
),
//Spacer 占用指定比例的空间
Spacer(
flex: 1,
),
Expanded(
flex: 2,
child: Container(
height: 50.0,
color: Colors.green,
),
)
],
),
//限制高度
SizedBox(
height: 200.0,
child: Flex(
//Flex布局垂直方向
direction: Axis.vertical,
children: <Widget>[
Expanded(
flex: 1,
child: Container(
height: 50.0,
color: Colors.red,
),
),
Spacer(
flex: 1,
),
Expanded(
flex: 2,
child: Container(
height: 50.0,
color: Colors.blue,
),
)
],
),
)
]
),
)
);
}
}