11月11, 2018

Flutter免费视频第二季-常用组件讲解

这一季将集中火力,死磕Flutter的API,也就是组件(widget)的使用,我们尽量把常用的都讲到,这也算学习中最辛苦的一章,因为你要记忆的内容会很多。但是学完后,会很有成就感。(但学习这一季,你必须先把第一季看了,否则没有开发环境是没办法继续学习的。)

通过第一季的学习,你一定已经安装好了Flutter开发环境,这篇文章我们将讲解Flutter的基本组建,我会把最常用的属性都进行讲解,但并不一定完全,目的是使用最少的时间快速上手Flutter。

学习讨论QQ群:674639629(千人群)

入群问题:Flutter出自于哪个公司?

入群答案:google

学习的前置知识

到底值不值得学习?

我出了第一季视频后,有很多小伙伴有疑虑。他们还在犹豫Flutter值不值得学习,还在说很多公司并没有使用。其实这个你不用纠结,有精力就静下心来学习,学习和用脑都是一样的,你经历和看的越多,以后接受能力就越快。

如果你非要犹豫,说到底那些公司开始使用了Flutter技术,那我在这里也给大家列一列,看到这些公司,你可能就会知道Flutter到底会不会火了。

第01节:Text Widget 文本组件的使用

在开始学习Text组件前,我们再来复习一遍最基本的代码编写,肯定有些小伙伴已经忘记了。我们来快速写一个HelloWorld程序出来。

在写的时候,你要一直念一个咒语,这样对以后的学习会很有帮助,咒语就是:"Flutter一切皆组件!"有了这个印象后,我们剩下的课程就好学了。

看一下最基础的HelloWold代码。

import 'package:flutter/material.dart';
void main () => runApp(MyApp());

class MyApp extends StatelessWidget{
  @override
  Widget build(BuildContext context ){
      return MaterialApp(
        title:'Text widget',
        home:Scaffold(
          body:Center(
            child:Text('Hello JSPang')
          ),
        ),
      );
  }
}

这里我们已经使用了一个最简单的Text组件了,但是我们所有属性都是默认的的,下面我们就来多一点修饰这个Text组件。

TextAlign属性

TextAlign属性就是文本的对齐方式,它的属性值有如下几个(详细请看视频中讲解):

  • center: 文本以居中形式对齐,这个也算比较常用的了。
  • left:左对齐,经常使用,让文本居左进行对齐,效果和start一样。
  • right :右对齐,使用频率也不算高。
  • start:以开始位置进行对齐,类似于左对齐。
  • end: 以为本结尾处进行对齐,不常用。有点类似右对齐.

总结起来,也就算三个对齐方式,left(左对齐)、center(居中对齐)、right(右对齐)。我们来看一下具体代码:

child:Text(
  'Hello JSPang  ,非常喜欢前端,并且愿意为此奋斗一生。我希望可以出1000集免费教程。',
  textAlign:TextAlign.left,
)

maxLines属性

设置最多显示的行数,比如我们现在只显示1行,类似一个新闻列表的题目。代码如下:

child:Text(
  'Hello JSPang  ,非常喜欢前端,并且愿意为此奋斗一生。我希望可以出1000集免费教程。',
  textAlign:TextAlign.left,
  maxLines: 1,
)

设置好后,文字只能显示出1行了。

overflow属性

overflow属性是用来设置文本溢出时,如何处理,它有下面几个常用的值供我们选择。

  • clip:直接切断,剩下的文字就没有了,感觉不太友好,体验性不好。
  • ellipsis:在后边显示省略号,体验性较好,这个在工作中经常使用。
  • fade: 溢出的部分会进行一个渐变消失的效果,当然是上线的渐变,不是左右的哦。

style属性

style属性的内容比较多,具体的你可以查一下API,我这里带作一个效果,方便大家快速学会Style的用法。

我们下面要作的效果为,字体大小为25.0,颜色为粉红色,并且有一个下划线。

import 'package:flutter/material.dart';
void main () => runApp(MyApp());

class MyApp extends StatelessWidget{
  @override
  Widget build(BuildContext context ){
      return MaterialApp(
        title:'Text widget',
        home:Scaffold(
          body:Center(
child:Text(
  'Hello JSPang  ,非常喜欢前端,并且愿意为此奋斗一生。我希望可以出1000集免费教程。',
  textAlign:TextAlign.left,
  overflow:TextOverflow.ellipsis,
  maxLines: 1,
  style: TextStyle(
    fontSize:25.0,
    color:Color.fromARGB(255, 255, 150, 150),
    decoration:TextDecoration.underline,
    decorationStyle:TextDecorationStyle.solid,
  ),
)
          ),
        ),
      );
  }
}

更详细的属性资料可以参看这个网址:https://docs.flutter.io/flutter/painting/TextStyle-class.html

其实程序员最重要的一个能力就是查看文档的能力,我这里也只是讲些最常使用的,在实际工作中,还是要多查稳定。

第02节:Container容器组件的使用1

Container(容器控件)在Flutter是经常使用的控件,它就相当于我们HTML里的<div>标签,每个页面或者说每个视图都离不开它。那这节课我们就来学习一下。

补充:在VSCode中方便打开虚拟机

很多小伙伴给我发私信说,自己写个批处理文件太麻烦了。能不能在VSCode里就直接打开那?当然是可以的,这个也是群友蒙星教我的。(感谢你的指导,让我学会了新的技能)

在安装了Flutter和Dart插件以后,在VSCode的右下角显示No Devices,我们直接点击它,就会显示我们电脑中安装的虚拟机,如果你电脑上没有,也可以进行安装。(详细开视频中如何进行配置)

alt

Alignment属性

其实容器的作用就是方便我们进行布局的,Flutter这点也作的很好,我们先来看容器属性中的Alignment

这个属性针对的是Container内child的对齐方式,也就是容器子内容的对齐方式,并不是容器本身的对齐方式。

先作一个效果:建立一个容器,然后容器内加入一段文字Hello JSPang, 并让它居中对齐。

alt

具体代码如下:

import 'package:flutter/material.dart';
void main () => runApp(MyApp());

class MyApp extends StatelessWidget{
  @override
  Widget build(BuildContext context ){
      return MaterialApp(
        title:'Text widget',
        home:Scaffold(
          body:Center(
           child:Container(
             child:new Text('Hello JSPang',style: TextStyle(fontSize: 40.0),),
             alignment: Alignment.center,
           ),
          ),
        ),
      );
  }
}

这时候可以看见,我们的文本已经居中显示在手机屏幕上了。当然它的对齐方式还有如下几种:

  • bottomCenter:下部居中对齐。
  • botomLeft: 下部左对齐。
  • bottomRight:下部右对齐。
  • center:纵横双向居中对齐。
  • centerLeft:纵向居中横向居左对齐。
  • centerRight:纵向居中横向居右对齐。
  • topLeft:顶部左侧对齐。
  • topCenter:顶部居中对齐。
  • topRight: 顶部居左对齐。

设置宽、高和颜色属性

设置宽、高和颜色属性是相对容易的,只要在属性名称后面加入浮点型数字就可以了,比如要设置宽是500,高是400,颜色为亮蓝色。代码如下:

child:Container(
  child:new Text('Hello JSPang',style: TextStyle(fontSize: 40.0),),
  alignment: Alignment.center,
  width:500.0,
  height:400.0,
  color: Colors.lightBlue,
),

实现的效果如图所示:

alt

这节课还是比较简单的,下节课需要继续学习Conatainer中padding和margin属性。

第03节:Container容器组件的使用2

上节已经简单的学习了一下Container容器组件的用法,这节我们继续学习,主要讲解一下的padding,margindecoration这几个属性。我们先来看看Padding属性。

padding属性

padding的属性就是一个内边距,它和你使用的前端技术CSS里的padding表现形式一样,指的是Container边缘和child内容的距离。先来看一个内边距为10的例子。具体代码如下(我们还是接着上节课的代码来写):

child:Container(
  child:new Text('Hello JSPang',style: TextStyle(fontSize: 40.0),),
  alignment: Alignment.topLeft,
  width:500.0,
  height:400.0,
  color: Colors.lightBlue,
  padding:const EdgeInsets.all(10.0),
),

上面主要的padding代码就一句。

padding:const EdgeInsets.all(10.0),

这句的意思是设置Container的内边距是10,左右上下全部为10,这看起来非常容易。那我们再加大一点难度。如果上边距为30,左边距为10,这时候EdgeInsets.all()就满足不了我们了。

EdgeInsets.fromLTRB(value1,value2,value3,value4)

我们用EdgeInsets.fromLTRB(value1,value2,value3,value4) 可以满足我们的需求,LTRB分别代表左、上、右、下。

那我们设置上边距为30,左边距为10,就可以用下面的代码来编写。

padding:const EdgeInsets.fromLTRB(10.0,30.0,0.0,0.0),

这时候我们的结果就变成了下图。

alt

有了这两个属性,基本就可以满足我们的工作需要了。

marign属性

会了padding属性的设置,margin就变的非常容易了,因为方法基本上一样。不过margin是外边距,只的是container和外部元素的距离。

现在要把container的外边距设置为10个单位,代码如下:

child:Container(
  child:new Text('Hello JSPang',style: TextStyle(fontSize: 40.0),),
  alignment: Alignment.topLeft,
  width:500.0,
  height:400.0,
  color: Colors.lightBlue,
  padding:const EdgeInsets.fromLTRB(10.0,30.0,0.0,0.0),
  margin: const EdgeInsets.all(10.0),
),

alt

图中可以看出,已经有了明显的外边距。

当然你也可以分别设置不同的外边距,方法也是使用fromLTRB,我在视频中演示,这里就不累述了。

decoration属性

decoration是 container 的修饰器,主要的功能是设置背景和边框。

比如你需要给背景加入一个渐变,这时候需要使用BoxDecoration这个类,代码如下(需要注意的是如果你设置了decoration,就不要再设置color属性了,因为这样会冲突)。

child:Container(
  child:new Text('Hello JSPang',style: TextStyle(fontSize: 40.0),),
  alignment: Alignment.topLeft,
  width:500.0,
  height:400.0,
  padding:const EdgeInsets.fromLTRB(10.0,30.0,0.0,0.0),
  margin: const EdgeInsets.all(10.0),
  decoration:new BoxDecoration(
    gradient:const LinearGradient(
      colors:[Colors.lightBlue,Colors.greenAccent,Colors.purple]
    )
  ),
),

上面的代码去掉了color的设置,这时候container的背景就变成了渐变颜色,如下图。

alt

设置边框

设置边框可以在decoration里设置border属性,比如你现在要设置一个红色边框,宽度为2。代码如下:

child:Container(
  child:new Text('Hello JSPang',style: TextStyle(fontSize: 40.0),),
  alignment: Alignment.topLeft,
  width:500.0,
  height:400.0,
  padding:const EdgeInsets.fromLTRB(10.0,30.0,0.0,0.0),
  margin: const EdgeInsets.all(10.0),
  decoration:new BoxDecoration(
    gradient:const LinearGradient(
      colors:[Colors.lightBlue,Colors.greenAccent,Colors.purple]
    ),
    border:Border.all(width:2.0,color:Colors.red)
  ),
),

关键代码其实就是:

border:Border.all(width:2.0,color:Colors.red)

这时候就有了边框显示,我就不给大家上图片了,如果有需要视频中查看吧。

这节课就到这里,希望小伙伴们都能动手练习起来。在这里附上全部代码,方便小伙伴们学习。

import 'package:flutter/material.dart';
void main () => runApp(MyApp());

class MyApp extends StatelessWidget{
  @override
  Widget build(BuildContext context ){
      return MaterialApp(
        title:'Text widget',
        home:Scaffold(
          body:Center(
          child:Container(
            child:new Text('Hello JSPang',style: TextStyle(fontSize: 40.0),),
            alignment: Alignment.topLeft,
            width:500.0,
            height:400.0,
            padding:const EdgeInsets.fromLTRB(10.0,30.0,0.0,0.0),
            margin: const EdgeInsets.all(10.0),
            decoration:new BoxDecoration(
              gradient:const LinearGradient(
                colors:[Colors.lightBlue,Colors.greenAccent,Colors.purple]
              ),
              border:Border.all(width:2.0,color:Colors.red)
            ),
          ),
          ),
        ),
      );
  }
}

第04节:Image图片组件的使用

我们都希望自己作的程序赏心悦目,俗话说的好一图顶千言,所以图片的运营在程序制作里至关重要。这节课我们就来看一下图片组件的使用。

加入图片的几种方式

  • assets

本文链接:http://jspang.com/post/flutter2.html

文章到底了,每周更新3节,请持续关注。

评论内容

评论加载中...

注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。
扫码加微信公众号
  • 及时得更新消息。
  • 手机观看更方便。
  • 社区问答解忧愁。
  • 扫一扫不再迷路。
加入学习
QQ群1:364140450 (5000/5000满) web/前端(云宇科技)
QQ群2:524520566 (1800/2000人) 技术胖的前端技术2群
广告
打赏特权
打赏获得4项特权
1.免费视频离线高清版下载(共210集);
2.纯金网站15元代金券,可购买收费课程;
3.加入微信群,享有更多互动和人脉资源;
4.和11年程序老兵成为微信好友;