Flutter 开发日常 code tips

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);
}));

Flutter图片宽高获取

4、Flutter 类型判断

var foo = 42;
if (foo is int) {
  print("整型");
}
switch (foo.runtimeType) {
  case int: {
    print("整型");
  }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。