Flutter隨記

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

相關文章
相關標籤/搜索