-
TextField 在iOS垂直方向上不居中
// isDense是否为密集形式(使用较少垂直空间),默认为false
在 InputDecoration 中添加 isDense = true
-
TextField 键盘弹出导致ListView 页面卡顿
当键盘弹出的时候,会将 listview 缩短重建
因此当listView数据很大的时候,容易卡顿
----------
把Scaffold的resizeToAvoidBottomInset属性设置为false,
这样在键盘弹出时将不会resize
-
软键盘弹起后遮挡输入框
将输入框放进可滚动的Widget中即可,当输入框获取焦点后,系统会自动将它滑动到可视区域
-
语法
三目运算 ?? / ??= 用来判断 null的 不是bool
type: type_param ?? 0
在 widget中 给属性赋值 如果 type_param == null 会将 0 赋值给 type
-
获取状态栏高度
final double statusBarHeight = MediaQuery.of(viewService.context).padding.top;
-
命名路由
https://www.jianshu.com/p/3b105658728e
路由的跳转时调用 Navigator.pushNamed:
Navigator.of(context).pushNamed('/new');
这里有一个问题就是使用 Navigator.pushNamed 时无法直接给新页面传参数,目前在 onGenerateRoute 回调中利用 URL 参数自行处理。
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);
},
// 通过 URL 传递参数
Navigator.of(context).pushNamed('/new/xxx');