Flutter 一切皆widget
1.AppBar屬性
leading:導航欄左返回檢視(widget),預設push到下一個頁面,左檢視自帶返回箭頭,點選方法系統已實現。
但是最外層 是 return MaterialApp(); 包裹,是沒有返回按鈕的
如果要自定義圖示:
leading: IconButton(
disabledColor: Colors.red,
icon: Icon(Icons.menu),
onPressed: null
),
複製程式碼
IconButton 本來單獨寫一篇文章,但是寫成筆記先記著 IconButton 設定顏色的時候,注意 onPressed 是否實現,為了習慣統一,可以預設設定 onPressed:(){}; 為什麼這樣說呢?接著往下看:
Color:
設定了圖示點選回撥,則用於按鈕內圖示的顏色;
highlightColor:
按鈕處於向下(按下)狀態時按鈕的輔助顏色;
splashColor
按鈕處於向下(按下)狀態時按鈕的主要顏色;
disabledColor:
沒設定圖示點選回撥,則用於按鈕內圖示的顏色
複製程式碼
IconButton(
//onPressed 為null,圖示顏色預設為灰色調,可以通過disabledColor設定此時圖示顏色
//onPressed 非null,圖示顏色預設為白色,可以通過color設定此時圖示顏色
//其他狀態顏色設定,參考前面顏色介紹
// color: Colors.red,
disabledColor: Colors.green,
icon: Icon(Icons.add),
onPressed: null
)
複製程式碼
注意點: 設定title ,預設居中,但是當我們設定 actions 個數大於等於2的時候,title會偏移,所以這句 centerTitle: true 還是需要寫上的
2.問題:
學習過程不斷嘗試,以iOS職業思維去搞,發現問題: 場景:首頁導航欄,此時外層是MaterialApp,自定義leading屬性,建立一個IconButton ,整體架構是:
MaterialApp(
-home: Scaffold(
appBar: new AppBar(
leading: 自定義
......使用Navigator.push報錯
但是body 裡面使用Navigator.push 正常
複製程式碼
push到一個新Widget, 報錯資訊:
Navigator operation requested with a context that does not include a Navigator.
百度,但是看到一個複雜的方案 外層使用StatelessWidget ,將路由跳轉功能封裝到StatefulWidget中 ??看完程式碼(具體自己百度),我的天,這麼麻煩,如果是後期加的需求,肯定要加班搞,放棄,尋找更簡便方法,沒辦法,偷懶一下,站在巨人肩上看的遠,但是,得換個巨人了,那就換
在需要點選跳轉的子View外部包一層Builder如下:
child: Builder(builder: (context) {
return GestureDetector(
onTap: () {
Navigator.push(context, MaterialPageRoute(builder: (context)=>NewWigets()));
},
child: Text("自己想"),
);
}
複製程式碼
上述是思路,我得 根據我實際場景改程式碼,信手捏來:
leading: Builder(builder: (context) {
return GestureDetector(
// 這是照著實驗檢測可行,註釋一下了
// onTap: () {
// Navigator.pushNamed(context, tableVC);
// },
// child: Icon(Icons.menu),
// 我來自定義一下,
child: IconButton(
disabledColor: Colors.red,
icon: Icon(Icons.menu),
onPressed:(){
// Navigator.pushNamed(context, tableVC);
Navigator.push(context, MaterialPageRoute(builder: (context)=>DetailWigets()));
},
)
);
},
複製程式碼
程式碼複製過去就可以直接用,就是那麼優秀,註釋掉的程式碼可以刪掉,跳轉的DetailWigets記得換哈,【斜眼笑】
模糊的學習了一些,到處看了看,簡單的學了幾個UI控制元件,暫時沒有記錄,只是記錄了剛入門碰到的問題,後續會記錄UI ,佈局,網路,實戰等app的相關內容
針對環境配置,一直想學flutter,基於沒有太多精力和心思,環境早就配置好了,就沒有記錄了,百度就可以弄好,畢竟mac配置下來還是簡單。
mac電腦 + Xcode + AndroidStudio ,VS Code 我也裝了,但是用AndroidStudio就很好的支援編寫flutter了, flutter和 Android 一個廠裡的,自己人嘛,工具選個喜歡的就行。
路漫漫其修遠兮,吾將上下而求索
——致程式設計師逝去的青春複製程式碼