美文网首页Flutter中文社区Flutterflutter入门与进阶实战
flutter widget入门使用之一(基础组件)

flutter widget入门使用之一(基础组件)

作者: huangweilong | 来源:发表于2019-01-17 13:35 被阅读11次

    前言

    学习flutter有几个月的时间了,flutter也已经发布了1.0版本,所以自己也想把这段时间学习的东西做个总结,这里做一个入门的Widgets使用总结。网上的学习资料也有很多,希望我的文章也能对大家有所帮助。
    笔者在刚开始学习flutter的时候,看着官网的介绍,却不知道代码怎么写,呈现的效果是怎样的。虽然有官方的Gallery示例代码,但是那些代码写的太复杂,对于初学者来说看的就很懵。所以我计划写这样一个项目(项目github地址),是根据flutter中文网的widgets目录来进行编写的。主要是展示出某个widget的简单使用方法,一些常用属性的介绍,显示在界面上是什么样的效果。并不过于仔细剖析一个widget的方方面面,只是作为入门。
    大家在学习的时候,可以对照flutter中文网的widgets目录和运行项目以及项目代码进行学习。本项目不追求界面的美化程度,仅仅是想展现出某个widget的最简单用法。这个项目适用于刚入门想学习flutter的小伙伴。错误之处在所难免,如有发现请大家提出来,我进行修改,谢谢!
    PS:flutter安装等前期准备工作在这里就不介绍了,可以直接看官网教程。下面开始第一部分。

    基础组件

    1. Container

    Container是一个拥有绘制、定位、调整大小的widget。类似于html中的div,最简单的一个Container就是Container(),在界面中什么也不会显示。需要给他指定宽、高和颜色等才可以看得出效果,或者在Container中放了其他自身有高度的widget才会显示出来。
    示例代码:
    显示一个高100,宽100,颜色为Color(0xff63d6fb)的正方形

    Container(
      height: 100.0,
      width: 100.0,
      color: Color(0xff63d6fb),
     ),
    

    Container有以下常用属性:
    alignment:用于定位子元素(child)的位置。
    decoration:装饰,可以为Container添加边框border、边框圆角borderRadius、阴影boxShadow、背景图image、渐变色gradient、形状shape、背景色color等,注意在使用了装饰时,Container的color属性将不可用,取而代之的是装饰内的color属性。
    constraints:对Container的约束,可以设置最大宽高、最小宽高。
    transform:对Container进行转换。

    2. Row

    行布局,用于在水平方向上排列元素。如在一行中排放两个Container。
    示例代码:

    Row(
      mainAxisAlignment: MainAxisAlignment.spaceEvenly, // 主轴方向(横向)对齐方式
      crossAxisAlignment: CrossAxisAlignment.start, // 交叉轴(竖直)对其方式
      children: <Widget>[
        Container(
          height: 100.0,
          width: 100.0,
          color: Colors.red,
         ),
        Container(
          height: 100.0,
          width: 100.0,
          color: Colors.black,
         ),
      ],
    ),
    

    Row中排列的widget不会滚动,超出一行的范围时会有溢出。如果你希望它具有滚动效果,可以考虑使用ListView,同理Column也是一样,只需要设置ListView的方向即可。

    3. Column

    列布局,用于在竖直方向上排列元素,如在一列中排放两个Container。
    示例代码:

    Column(
      mainAxisAlignment: MainAxisAlignment.spaceEvenly, // 主轴方向(竖直)对齐方式
      crossAxisAlignment: CrossAxisAlignment.start, // 交叉轴(横向)对其方式
      children: <Widget>[
        Container(
          height: 100.0,
          width: 100.0,
          color: Colors.red,
         ),
        Container(
          height: 100.0,
          width: 100.0,
          color: Colors.black,
         ),
      ],
    ),
    
    4. Image

    显示图片的Widget,Image能够从ImageProvider、项目资源、储存卡文件、网络和Uint8List中获取图像。这里介绍2种比较常用的方式。
    示例代码:

    // 加载项目资源图片
    Image.asset('assets/images/1.jpg',),
    // 加载网络资源图片
    Image.network(
      'https://avatars2.githubusercontent.com/u/37101820?s=400&u=4c6356d8d94322a7684909af9594149d3c83d433&v=4',
      width: 200.0,
    ),
    
    5. Text

    显示单一格式的文本Widget,该小部件显示单个样式的文本字符串,最简单的使用是

    Text('这是一行文本内容!')
    

    下面来看一下Text的一些常用属性:
    style:样式,他是一个TextStyle,里面能够设置文本内容的颜色color、文字大小fontSize、字重fontWeight、文字样式fontStyle、字体fontFamily、文字装饰decoration、文本对其方式textAlign、最大行数maxLines、单词间距wordSpacing、字符间距letterSpacing等。
    示例代码:

    Text(
      '更改字体颜色',
      style: TextStyle(color: Colors.red),
    ),
    Text(
      '更改字体大小、加粗、斜体',
      style: TextStyle(
        fontSize: 26.0,
        fontWeight: FontWeight.bold,
        fontStyle: FontStyle.italic,
        ),
    ),
    Text(
      '使用字体资源',
      style: TextStyle(fontSize: 20.0, fontFamily: 'pmzd'),
    ),
    

    效果的展示及更多代码,请查看项目源码。

    6. Icon

    一个Material Design风格的小图标。这是flutter内置的图表库,里面包含了很多图标资源。
    示例代码:

    Icon(
      Icons.ac_unit,
      size: 60.0,
      color: Colors.lightBlueAccent,
    ),
    

    示例代码显示了一个大小为60的雪花图标,并设置了颜色。如果想让小图标可以相应点击事件,可以使用IconButton

    7. RaisedButton

    Material Design风格的按钮,点击有水波纹的效果。
    示例代码:

    RaisedButton(
      textColor: Colors.white,
      color: Colors.blue,
      child: Text('改变文本、背景颜色'),
      onPressed: () {},
    ),
    

    常用属性解析:
    color:按钮背景颜色
    textColor:文本颜色
    disabledTextColor:不可点击状态的文本颜色
    splashColor:水波纹颜色
    highlightColor:按下按钮时高亮的颜色
    elevation:阴影
    highlightElevation:高亮时的阴影
    disabledElevation:不可点击状态的阴影
    child:子元素,通常放一个Text
    shape:形状,可设置圆角效果
    onPressed:点击事件

    8. Scaffold

    脚手架Widget,是Material Design布局结构的基本实现。可以看到在项目中,每一个页面的build里面都return了一个Scaffold,它包含了应用标题栏appBar、主题部分body、侧滑窗口drawer、浮动按钮floatingActionButton、底部导航栏bottomNavigationBar等,这些事实一个APP页面常用的部分。可以根据需求选择自己需要的部分。

    9. Appbar

    应用标题栏,由工具栏和其他小部件组成,例如TabBarFlexibleSpaceBar
    在标题栏可以显示当前页面的title,前导图标leading,若页面是从其他页面跳转过来的,会默认在该页面添加一个返回上一页的leading
    常用属性解析:
    title:标题
    centerTitle:标题是否居中
    elevation:阴影
    leading:前导小部件
    actions:在title之后的部件,可以显示多个。
    bottom:显示在应用栏底部的小部件
    backgroundColor:背景颜色

    10. FlutterLogo

    以Widget的形式显示一个Flutter的Logo,没啥特别的。

    11. Placeholder

    一个绘制了一个盒子的widget,代表以后有widget将会被添加到该盒子中,就是占一个位置。可能由于个人编程习惯,觉得这个没什么太大用处
    部分页面效果如下:


    Container Text Icon

    项目源码在我的GitHub flutter_widgets项目地址

    项目与教程有时间会继续更新,直至整个widgets目录完成。喜欢的给个 ★star 支持,谢谢!如有错误之处或问题也可以在这里留言或者提issue给我~

    相关文章

      网友评论

        本文标题:flutter widget入门使用之一(基础组件)

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