Widget的分类有很多类别,每个类别下面又包含很多Widget,主要包括以下几种类别:
widget的状态分别是无状态的StatelessWidget、有状态的StatefulWidget。StatefulWidget可以通过配合State的方式来保存状态。
State生命周期:
根widget的种类有以下几种:
Basics主要有以下几种:
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(//MD风格的widget
title: 'Welcome to Flutter',
home: Scaffold(//布局结构
appBar: AppBar(//应用栏
title: Text('应用栏标题'),
),
body:
Padding(
padding: EdgeInsets.all(40.0),
child: Text('此处就是Basics Widget'),
),
),
);
}
}
child: Text(
'文本Text',
style: TextStyle(
fontSize: 16.0,//大小
color: Colors.indigo,//颜色
fontStyle: FontStyle.normal,//风格
fontWeight: FontWeight.bold//加粗
),
)
Image的构造:
image的属性主要有fit,表示图片的填充模式,参数类型为BoxFit:
child: Image.network(
"https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=1877247387,402758218&fm=26&gp=0.jpg",
width: 200,
height: 200,
fit: BoxFit.fill,
)
凸起按钮符合MD 设计风格,可以通过onPressed来回调按钮的点击。
child: RaisedButton(
onPressed: ()=>print("onPressed"),
color: Colors.lightBlueAccent,
child: Text('RaisedButton',style: TextStyle(fontSize: 10)),
)
Basics Widget中的还有Row、Column、Container等Widget
Row用于在水平方向显示数组中的子元素Widget。
child: Row(
children: <Widget>[
Icon(Icons.access_alarm),
Icon(Icons.add_a_photo),
Icon(Icons.add_call)
],
)
child: Column(
children: <Widget>[
Icon(Icons.access_alarm),
Icon(Icons.add_a_photo),
Icon(Icons.add_call)
],
)
需要注意的是,可以使用Expanded来配合Row和Column使用,用来填充剩余的空间:
child: Row(
children: <Widget>[
Icon(Icons.access_alarm),
Icon(Icons.add_a_photo),
Icon(Icons.add_call),
Expanded(
child: FittedBox(
fit: BoxFit.contain,
child: const FlutterLogo(),
),
flex: 2,
),
Expanded(
child: Text(
"占三分之一",
),
flex: 1,
)
],
)
类似于ViewGroup,可以设置Widget的背景、尺寸、定位
child: Container(
decoration: BoxDecoration(
color: Colors.lightGreen
),
child: Text('这是Container'),
padding: EdgeInsets.all(36.0),
margin: EdgeInsets.all(10.0),
)