flutter 填坑

  • 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');

你可能感兴趣的:(flutter 填坑)