天天看點

Flutter随記

1.flutter sdk下載下傳配置好環境變量後,在vscode裡安裝dart和flutter兩個插件後就可以建立項目了;

2.建立項目可以用指令flutter create demo_01,則會自動建立demo_01項目目錄(注意項目不要用demo-01而是用下劃線)【可以加 --no-pub來不自動執行pub get】

3.flutter裡布局是根據widget類型來實作的,比如scaffold是具有appbar和body和floatingactionbutton等三個布局塊(上下分列,最後的那個其實是一個floatting的一個控件)的一個widget(在c#裡叫control/控件),

而center這種代表它内部隻有一個布局塊(但是是全局居中對齊)【隻有一個布局塊的内容屬性一般都叫child】

而像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此目标源;

5.shift+r可以熱重新開機【r是熱重載】【dart不行,要借助pub包】

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(也不能這麼說,應該說這兩個誰是父元件則誰的優先級更高)】

繼續閱讀