-
TextField 在iOS垂直方向上不居中
// isDense是否為密集形式(使用較少垂直空間),默認(rèn)為false
在 InputDecoration 中添加 isDense = true
-
TextField 鍵盤彈出導(dǎo)致ListView 頁(yè)面卡頓
當(dāng)鍵盤彈出的時(shí)候,會(huì)將 listview 縮短重建
因此當(dāng)listView數(shù)據(jù)很大的時(shí)候,容易卡頓
----------
把Scaffold的resizeToAvoidBottomInset屬性設(shè)置為false,
這樣在鍵盤彈出時(shí)將不會(huì)resize
-
軟鍵盤彈起后遮擋輸入框
將輸入框放進(jìn)可滾動(dòng)的Widget中即可,當(dāng)輸入框獲取焦點(diǎn)后,系統(tǒng)會(huì)自動(dòng)將它滑動(dòng)到可視區(qū)域
-
語(yǔ)法
三目運(yùn)算 ?? / ??= 用來(lái)判斷 null的 不是bool
type: type_param ?? 0
在 widget中 給屬性賦值 如果 type_param == null 會(huì)將 0 賦值給 type
-
獲取狀態(tài)欄高度
final double statusBarHeight = MediaQuery.of(viewService.context).padding.top;
-
命名路由
http://www.lxweimin.com/p/3b105658728e
路由的跳轉(zhuǎn)時(shí)調(diào)用 Navigator.pushNamed:
Navigator.of(context).pushNamed('/new');
這里有一個(gè)問(wèn)題就是使用 Navigator.pushNamed 時(shí)無(wú)法直接給新頁(yè)面?zhèn)鲄?shù),目前在 onGenerateRoute 回調(diào)中利用 URL 參數(shù)自行處理。
onGenerateRoute: (RouteSettings settings) {
WidgetBuilder builder;
if (settings.name == '/') {
builder = (BuildContext context) => new ArticleListScreen();
} else {
String param = settings.name.split('/')[2];
builder = (BuildContext context) => new NewArticle(param);
}
return new MaterialPageRoute(builder: builder, settings: settings);
},
// 通過(guò) URL 傳遞參數(shù)
Navigator.of(context).pushNamed('/new/xxx');