Fluuter开发的好处:
1.减少人工成本,减少原生的开发成本 2.对于IOS开发来说,内部的增量机制可以快速提高开发效率。
语法笔记:
final和const的区别
final修饰变量,也叫做最终变量,只能被赋值一次,可以先声明在赋值,const修饰常量,声明的时候就必须赋值。
任何一个动态变量类型(var修饰并且声明的时候没有赋值),都可以被多次赋予不同类型的值。
Int和Double是可以互相转换的,.toInt,.toDouble
??= 和??的区别。??=表示如果变量为nil,给变量赋值,后面再赋值也不会改变这个变量,??表示如果左边有值返回左边,否则返回右边。
面向对象:
dart中不能重载,方法名不能重复,即使返回值类型不同或者参数不同,也不行。
在方法或者变量前加上下划线,表示这个变量或者方法是私有的,跨文件是无法访问的,但是在同一个文件是可以访问的。
混入:也就是多继承,关键字用extends搭配with加入多个类,注意,这些类不能有自己带参的构造方法,否则会报错。
.. 链式表达返回的是对象本身而不是返回值。
如果在强退AS以后重启卡主的情况
进入flutter/bin/cache 找到lock文件删除即可。
简单的一个居中显示的label例子
所有的主程序入口都是main函数,这里要讲一下,所有的dart文件都写在根目录的lib文件夹下,runApp方法用于显示界面,const关键字在flutter中尤为重要,他标识了当前的组件是不可变的,以后在增量更新的时候也不会更新,加快了效率,这里在界面上其实有两个组件,一个是Center,一个是Text,在代码中都会以黄色标识出来,Center
包装了一个盒子把所有的组件都居中显示。textDirection这个在文字显示的时候必须写,不然不显示,表示文字的阅读方向,不是文字的排列方向。
runApp(
const Center(
child: Text(
"123",
textDirection: TextDirection.ltr,
),
)
);
}
自定义Widget
相比较于IOS中的UIView,在flutter中一个个的组件叫做Widget,而Widget又分为stateful(有状态)和stateless(无状态)两种,其实在flutter中所有的widget都是无状态的,只不过系统在做处理的时候,已经给你封装了一种特殊的widget,这种可以直接给状态赋属性等等,实现较为复杂一些,先操作一个简单的无状态widget。
build方法可以理解为重写绘制这个组件的方法,并且需要返回这个组件,才能在调用这个类的构造方法的时候拿到这个组件。