flutter入门与实战教程( 三 )


在dart的函数参数中,有一个概念叫做可选参数 。我们以文本控件文本为例 。在源代码中,我们可以看到文本的构造函数是这样的:
常量文本(
this.data,{
钥匙钥匙,
这种风格,
this.strutstyle,
this.textalign,
这个. textdirection,
这个地方,
这个. softwrap,
这个 。溢出,
this.textscalefactor,
这个. maxlines,
this.semanticslabel,
})
首先,参数中有一个数据,是要显示的文本内容,是必选项 。数据后面的一堆参数用大括号括起来 。这些参数称为可选参数,这意味着这些参数可以传递也可以不传递 。
如果我们想显示一个长文本,并且想把它限制在比较多两行,我们可以这样创建一个文本:
新文本(" 666666666666 ",maxlines: 2);
可选参数广泛用于颤振 。
异步的
将来的
在dart中使用future来处理异步任务 。例如,我们现在延迟打印666一秒钟 。代码如下:
voidmain {
future.delayed(新持续时间(秒: 1),{
返回" 666 ";
}).然后((数据){
//成功后执行
打印(数据);
}).catcherror((e) {
//失败后执行
打印("错误");
}).whencomplete( {
//无论成败都会执行
打印("完成");
});
}
future的语法和promise很像 。如果任务执行成功,将调用;如果失败,将调用捕获错误;无论成功或失败,都将调用完成时间 。
异步/等待
如果你不喜欢上面的写法,或者想把异步转换成同步,可以用async和wait这两个关键词来转换 。
让我们转换上面的代码并编写一个getstring方法 。返回的类型是future,它将返回一个带有延迟的字符串 。在main函数之后添加async关键字,在getstring之前添加wait 。代码如下:
voidmain异步{
print(waitgetstring);
}
getstring {
返回未来 。延迟(新持续时间(秒: 1),{
返回" 666 ";
});
}
运行后,可以看到字符串正常延迟一秒后可以打印出来 。这里getstring返回的类型是future,awaitgetstring是延迟返回后返回的字符串 。等待只能在异步函数中使用 。
async和await实际上是一个语法糖,比较终转换成future调用链的形式 。
万物皆控件
接下来,回到flutter,flutter中比较重要的概念之一就是widget 。
在本机开发中,我们可以在界面上区分视图、布局和视图控制器 。但是在flutter中,它们都属于一个统一的widget模型 。可以说,在flutter界面中,一切都是一个widget 。
以前学面向对象的时候,我们都听过一句话,什么都是对象 。我将在这里应用它,在万物皆控件.的旋舞
我对具体的控件做了简单的分类 。
根控件
类mypage扩展了statelesswidget{
@覆盖
小部件构建(buildcontext上下文){
返回mywidget;
}
}
所有控件都属于statefulwidget或statelesswidget.它们之间的区别在于,statefulwidget拥有state,州,而statelesswidget没有 。
statefulwidget
当一个控件是可变的,它应该用statefulwidget来构建 。statefulwidget本身是不可变的,但是它持有的状态是可变的 。
状态窗口小部件
当控件的状态固定不变时,可以使用状态小部件 。我们之前写的helloworld使用了statelesswidget 。
容器
居中(
child: mywidget
)
通常,容器类控件将某些属性或配置应用于其子控件,例如控件的宽度、高度、背景和位置 。
常用的容器控件包括容器、中心、填充等 。
布局控制
列(子:小部件[
mywidget1,
mywidget2
])