开发环境:Android Studio+flutter插件
1.引入第三方包后需要杀死应用后重新运行,才能真正将第三方包部署上去,不然直接ctrl+s或者点小闪电(热更新)会导致Unhandled Exception: MissingPluginException(No implementation found for method xxx on channel
2.点击空白隐藏键盘,在根布局下通过手势判断,手指抬起时根布局获取焦点从而将输入框的焦点挤掉,键盘也就自动隐藏了
child:GestureDetector(
behavior: HitTestBehavior.translucent,
onTap: () {
// 触摸收起键盘
FocusScope.of(context).requestFocus(FocusNode());
},
child: Container()
)
3.按钮设置边距margin和padding之类的可以通过外包一层Container(),在Container中设置margin和padding
padding: EdgeInsetsDirectional.fromSTEB(10, 0, 10, 0), //左,上,右,下,顺时针
margin: EdgeInsetsDirectional.fromSTEB(10, 10, 10, 10), //左,上,右,下,顺时针
4.弹Toast 使用 FlutterToast
5.onPressed的小坑:原本想通过自定义一个VoidCallback类,将其赋值给onPressed从而将onPressed中的方法抽出来放到该类中,结果发现onPressed所在的widge的页面退出和进入该页面时也会调用VoidCallback类中的代码,同时点击的时候也会调用:
...
onPressed: showToast()
...
VoidCallback showToast(){
Fluttertoast.showToast(
msg: "hello",
toastLength: Toast.LENGTH_SHORT,
gravity: ToastGravity.CENTER,
timeInSecForIosWeb: 1,
backgroundColor: Colors.black,
textColor: Colors.white,
fontSize: 16.0
);
}
应该改为这样,才是所想要的点击一次调用一次的效果:
onPressed: (){
showToast();
}
void showToast(){
Fluttertoast.showToast(
msg: "hello",
toastLength: Toast.LENGTH_SHORT,
gravity: ToastGravity.CENTER,
timeInSecForIosWeb: 1,
backgroundColor: Colors.black,
textColor: Colors.white,
fontSize: 16.0
);
}
6.热更新只针对flutter的代码改动有效,对各自平台(Android,ios)的代码需要关闭应用重新运行才行
先记录,多了再重新整理