1、支持横竖屏设置
// 必须要保证 WidgetsFlutterBinding 被初始化,否则横竖屏设置不生效
WidgetsFlutterBinding.ensureInitialized();
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
注意:WidgetsFlutterBinding 必须要保证初始化,否则横竖屏设置代码不生效。
2、获取 widget 的 size 和 position
首先,需要给 widget 设置 key
GlobalKey _customKey = GlobalKey();
Positioned(
key: _customKey,
left: 0,
right: 0,
top: 0,
bottom: 140,
......
)
然后获取该 widget 的 size 和 position
@override
initState(){
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
_afterLayout();
});
super.initState();
}
_afterLayout() {
_getSize();
_getPosition();
}
_getSize() {
final RenderBox renderBox = _customKey.currentContext.findRenderObject();
final sizeGreen = renderBox.size;
print("SIZE of green: $sizeGreen");
}
_getPosition() {
final RenderBox renderBox = _customKey.currentContext.findRenderObject();
final positionGreen = renderBox.localToGlobal(Offset.zero);
print("POSITION of green: $positionGreen");
}
3、获取图片的宽和高
image.image.resolve(new ImageConfiguration()).addListener(
new ImageStreamListener((ImageInfo info, bool _) {
m.width = info.image.width;
m.height = info.image.height;
this.sendMsg(m);
}));
4、Flutter 类型判断
var foo = 42;
if (foo is int) {
print("整型");
}
switch (foo.runtimeType) {
case int: {
print("整型");
}
}
网友评论