1.Flutter SDK下载配置好环境变量后,在VSCode里安装dart和flutter两个插件后就能够建立项目了;前端
2.建立项目能够用命令flutter create demo_01,则会自动建立demo_01项目目录(注意项目不要用demo-01而是用下划线)【能够加 --no-pub来不自动执行pub get】linux
3.Flutter里布局是根据Widget类型来实现的,好比Scaffold是具备appBar和body和floatingActionButton等三个布局块(上下分列,最后的那个实际上是一个floatting的一个控件)的一个Widget(在C#里叫Control/控件),windows
而Center这种表明它内部只有一个布局块(可是是全局居中对齐)【只有一个布局块的内容属性通常都叫child】app
而像Row,Column之类的则有多个元素,所以表示内容的属性叫children(注意,Column是一列而非Columns多列,所以Column的子元素是在这一列里上下排列的)布局
4.flutter建立项目还能够flutter create --no-pub --platforms=windows ft_demo01来建立指定目标源的项目;若是对这个项目须要增长目标源,能够执行flutter devices查看本机flutter配置了哪些目标源,而后cd到项目根目录后经过flutter config --enable-linux-desktop来启用某个目标源(这里是Linux desktop,还有--enable-windows-desktop);注意启用了目标源须要从新建立一下项目,即再执行flutter create --no-pub .;而后手动执行 flutter pub get --offline后就能够经过 flutter run -d windows来debug此目标源;还能够用flutter build windows(能够加--release)来build此目标源;ui
5.shift+r能够热重启【r是热重载】【dart不行,要借助pub包】spa
6.事件冒泡(包括前端)的意思是,好比有这种状况,一个Panel里面有个ListView,而Panel注册了双击左侧按钮事件(好比双击Panel会提示啥),而ListView的item也注册了双击事件;所以ListView的item这个组件是Panel的子孙组件,当双击item的时候事件被item先监听处理,若是不阻止冒泡,则会继续让Panel也处理这个双击事件;(还有典型的场景为外层是一个ScrollView,而内部子孙里也有ScrollView,所以对子孙Scroll时产生的事件若是不取消冒泡,则父Scroll也能收到,就会发生两个ScrollView一块儿动的状况)插件
7.flutter里一个新的页面(路由页面)其实就是一个ConstrainedBox【expand()的】,所以对Container设置大小不生效;可是能够先用UnconstrainedBox包裹后,再用Container、SizedBox、ConstrainedBox等就有用了;【即若是父组件是ConstrainedBox,设置了最小长宽,则其子容器设置的大小若是小于父ConstrainedBox则以父ConstrainedBox为主(能够用UnconstrainedBox来取消父ConstrainedBox对子组件的影响,可是父ConstrainedBox大小是不受影响的);ConstrainedBox优先级大于SizedBox(也不能这么说,应该说这两个谁是父组件则谁的优先级更高)】【可是注意,ConstrainedBox和SizedBox对子元素的大小限制是基于子元素是单个控件组成的,好比各类容器,各类button(容器和button等是child);而若是子元素是Row这种的,则Row里的children元素是不会和ConstrainedBox等同样宽/高的】【或者这么讲,Row等默认外面就包有一层UnconstrainedBox】debug
8.UnconstrainedBox对SizedBox也有取消做用orm