Flutter 圆形/圆角头像

圆形头像

① ClipOval

  1. Container(
  2. padding: EdgeInsets.fromLTRB(20, 0, 20, 80),
  3. margin: EdgeInsets.all(0),
  4. alignment: Alignment.bottomCenter,
  5. height: 250,
  6. width: 430,
  7. color: Colors.blue,
  8. child: ClipOval(
  9. child: Image.network(
  10. 'https://cdn.nlark.com/yuque/0/2018/png/164272/1540470801359-2440731a-e0c0-4608-8dfc-c48bb2bc8cea.png?x-oss-process=image/resize,m_fill,w_192,h_192/format,png',
  11. height: 80,
  12. fit: BoxFit.cover,
  13. ),
  14. ),
  15. ),

圆角矩形

① ClipRRect(圆角矩形)

  1. new ClipRRect(
  2. borderRadius: BorderRadius.circular(6.0),
  3. child: new Image.asset(Utils.getImgPath('ali_connors')),
  4. )

② BoxDecoration BoxShape.rectangle

  1. new Container(
  2. width: 88.0,
  3. height: 88.0,
  4. decoration: BoxDecoration(
  5. shape: BoxShape.rectangle,
  6. borderRadius: BorderRadius.circular(6.0),
  7. image: DecorationImage(
  8. image: AssetImage(
  9. Utils.getImgPath('ali_connors'),
  10. ),
  11. ),
  12. ),

按钮

https://www.jianshu.com/p/2f887cadd527
在 Flutter 里有很多的 Button,包括了:MaterialButton、RaisedButton、FloatingActionButton、FlatButton、IconButton、ButtonBar、DropdownButton 等。
一般常用的 Button 是 MaterialButton、IconButton、FloatingActionButton。

MaterialButton 是一个 Materia 风格的按钮。

  1. new MaterialButton(
  2. color: Colors.blue,
  3. textColor: Colors.white,
  4. child: new Text('点我'),
  5. onPressed: () {
  6. // ...
  7. },
  8. )

一般来说,如果需要点击事件,就要嵌套一个 Button,因为 Container、Text 等组件都没有点击事件。

RaisedButton

RaisedButtonMaterialButton 类似。

  1. new RaisedButton(
  2. child: new Text('点我'),
  3. onPressed: () {},
  4. )

FlatButton

FlatButtonMaterialButton 类似,不同的是它是透明背景的。如果一个 Container 想要点击事件时,可以使用 FlatButton 包裹,而不是 MaterialButton。因为 MaterialButton 默认带背景,而 FlatButton 默认不带背景。

  1. new FlatButton(
  2. child: new Text('点我'),
  3. onPressed: () {},
  4. )

IconButton

IconButton 顾名思义就是 Icon + Button 的复合体,当某个 Icon 需要点击事件时,使用 IconButton 最好不过。

  1. new IconButton(
  2. icon: new Icon(Icons.volume_up),
  3. tooltip: 'Increase volume by 10%',
  4. onPressed: () {
  5. // ...
  6. },
  7. )

其外,还有已经定义好的 Icon Button:CloseButton、BackButton。他们都有导航返回的能力。

FloatingActionButton

FloatingActionButton 是一个浮动在页面右下角的浮动按钮。

  1. new Scaffold(
  2. // ...
  3. floatingActionButton: new FloatingActionButton(
  4. onPressed: () {},
  5. child: new Icon(Icons.add_a_photo),
  6. elevation: 3.0,
  7. highlightElevation: 2.0,
  8. backgroundColor: Colors.red, // 红色
  9. ),
  10. )

在 Scaffold 里使用的时候,它是一个浮动状态的按钮,在其他地方使用,就不会浮动了。
image.png

ButtonBar

ButtonBar 是一个布局组件,可以让 Button 排列在一行。

  1. new ButtonBar(
  2. children: <Widget>[
  3. new CloseButton(),
  4. new BackButton(),
  5. ],
  6. )

作者:iwakevin
链接:https://www.jianshu.com/p/2f887cadd527
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。