美文网首页
Android Flutter(四)组件(StatelessWi

Android Flutter(四)组件(StatelessWi

作者: 在一颗大大大榕树下 | 来源:发表于2019-10-17 16:26 被阅读0次

Flutter是google使用Dart语言开发的跨平台移动UI框架。

- 优点:
  1. dart是面向对象的语言,易学
  2. 高性能,高保真
  3. 双端支持
  4. 毫秒级的热重载,修改后,您的应用界面会立即更新。

我学习下来的感受,如果有css基础的话,组件属性学起来会非常快。

进入正题,说一下Flutter中组件的两个大类。

Flutter中所有自定义组件都需要继承自StatefulWidget/StatelessWidget。这两者的区别:

  • StatefulWidget是有状态组件,持有的状态会随着Widget的生命周期改变。直白点讲,就是如果需要修改页面的数据,就要用到StatefulWidget了,典型的组件就是EditField,这个组件相当于Android中的EditText,这个后面会总结。
  • StatelessWidget就是无状态组件了,状态不可变的Widget

这篇先总结StatelessWidget常用组件。

1 . 图片组件

这里分两种:

  • 网络图片 Image.network
  • 本地图片 Image.asset
网络图片
  return Center(
        child: Container(
          child: Image.network(
            "http://pic.baike.soso.com/p/20130828/20130828161137-1346445960.jpg",
            alignment: Alignment.topLeft,
            //repeat:ImageRepeat.repeatX, fit:BoxFit.cover, ),
            width: 300.0,
            height: 400.0,
          ),
        ));
本地图片

本地图片比较复杂,首先在项目根目录下创建images文件夹,并在images下创建2.0x3.0x4.0x这么几个文件夹,其中2.0和3.0是必须创建的。把图扔进去。

image.png
在配置文件pubspec.yaml中注册图片。
flutter:

  # The following line ensures that the Material Icons font is
  # included with your application, so that you can use the icons in
  # the material Icons class.
  uses-material-design: true
  assets:
    - images/kongtiao.png
    - images/2.0x/kongtiao.png
    - images/3.0x/kongtiao.png
    - images/4.0x/kongtiao.png

代码

return Center(
        child: Container(
      child: Image.asset("images/kongtiao.png", fit: BoxFit.cover),
      width: 300.0,
      height: 300.0,
      decoration: BoxDecoration(color: Colors.yellow),
    ));
  • 圆角图片(ClipOval组件
return Center(
  child: ClipOval(
    child: Image.asset(
    "images/kongtiao.png",
    width: 100.0,
    height: 100.0,
    fit: BoxFit.cover,
  ),
 ),
)
2 . 内边距(Padding)
return Container(
  child: Padding(
   padding: EdgeInsets.all(40.0),
   child: ListView(
          
   ),
  ),
);

3. 布局组件
  • Row 水平布局
  • Column 垂直布局
  • Center 居中布局
  • Wrap 流式布局
  • Stack层叠组件
    类似RelativeLayout ,主属性alignment
//居中
alignment:Alignment(0,0);
//右下
alignment:Alignment(1,1);
//上中
alignment:Alignment(0,-1);
//下中
alignment:Alignment(0,1);
  1. 单独控制:Align
    使用组件Align和Stack组合使用
return Stack(
  children:<widget>[
    Align(
      alignment:Alignment(1,1);
      child:...
   ),
  Align(
      alignment:Alignment(1,1);
      child:...
   )
  ]
);
  1. 绝对定位:Positioned
return Stack(
  children:<widget>[
    Positioned(
      left:10,
      child:...
   ),                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
  Positioned(
      bottom:0,
      child:...
   )
  ]
);
4. 宽高比例容器(AspectRatio)

会根据你指定的宽度或者高度自动根据指定比例适应。如果不指定,默认充满屏幕宽度。

5. 卡片容器(Card)

主要属性:

  • shape阴影效果
  • child布局
6. 处理圆形头像(CircleAvatar)
7. 列表组件(ListView)

相关文章

网友评论

      本文标题:Android Flutter(四)组件(StatelessWi

      本文链接:https://www.haomeiwen.com/subject/zrebpctx.html