【持续更新】Flutter中一些常用的开发场景Flutter

/ / 2015-10-25
1,设置某个页面的设备屏幕方向 使用SystemChrome组件,如下示例: SystemChrome. setPreferredOrientations ([ DeviceOrientation. portraitUp , DeviceOrientation. portraitDown ]) ; 参数是要支持的屏幕方向,还有另外两个参数DeviceOrientation.landscap...

1,设置某个页面的设备屏幕方向
使用SystemChrome组件,如下示例:

SystemChrome.setPreferredOrientations([
  DeviceOrientation.portraitUp,  DeviceOrientation.portraitDown ]);
参数是要支持的屏幕方向,还有另外两个参数DeviceOrientation.landscapeLeft,DeviceOrientation.landscapeRight,
然后可以在页面dispose的时候再动态修改成其他方向。
注意这个方法只能在Android设备上使用,可以强制修改屏幕方向,但是在iOS上这个方法只表示该应用支持的屏幕方向,只有在物理方向改变的时候才会真正修改,如果想要强制修改app的屏幕方向,则可以通过OC插件的形式来修改,代码如下


- (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result {
if ([METHOD_CHANGE_ORIENTATION isEqualToString:call.method]) {
NSArray *arguments = call.arguments;
NSString *orientation = arguments[0];
NSInteger iOSOrientation;
if ([orientation isEqualToString:ORIENTATION_LANDSCAPE_LEFT]){
iOSOrientation = UIDeviceOrientationLandscapeLeft;
}else if([orientation isEqualToString:ORIENTATION_LANDSCAPE_RIGHT]){
iOSOrientation = UIDeviceOrientationLandscapeRight;
}else if ([orientation isEqualToString:ORIENTATION_PORTRAIT_DOWN]){
iOSOrientation = UIDeviceOrientationPortraitUpsideDown;
}else{
iOSOrientation = UIDeviceOrientationPortrait;
}
[[UIDevice currentDevice] setValue:@(iOSOrientation) forKey:@"orientation"];
result(nil);
} else {
result(FlutterMethodNotImplemented);
}
}


另外SystemChrome还可以设置应用的状态栏,虚拟按键等的UI表现形态,比如设置状态栏的透明,颜色等,使用下面这个方法 
SystemUiOverlayStyle systemUiOverlayStyle = SystemUiOverlayStyle(statusBarColor: Colors.transparent, statusBarIconBrightness: Brightness.dark); SystemChrome.setSystemUIOverlayStyle(systemUiOverlayStyle);

同样只针对Android生效





1