Add flutter settings channel and window brightness to macOS shell (#8810)

This commit is contained in:
Jonah Williams 2019-05-02 20:42:51 -07:00 committed by GitHub
parent 480844608c
commit 1bcbaf73a7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -91,6 +91,16 @@ static const int kDefaultWindowFramebuffer = 0;
*/
- (void)dispatchKeyEvent:(NSEvent*)event ofType:(NSString*)type;
/**
* Initializes the KVO for user settings and passes the initial user settings to the engine.
*/
- (void)sendInitialSettings;
/**
* Responsds to updates in the user settings and passes this data to the engine.
*/
- (void)onSettingsChanged:(NSNotification*)notification;
@end
#pragma mark - Static methods provided to engine configuration
@ -181,6 +191,9 @@ static bool HeadlessOnMakeResourceCurrent(FLEViewController* controller) {
// A message channel for passing key events to the Flutter engine. This should be replaced with
// an embedding API; see Issue #47.
FlutterBasicMessageChannel* _keyEventChannel;
// A message channel for sending user settings to the flutter engine.
FlutterBasicMessageChannel* _settingsChannel;
}
@dynamic view;
@ -298,6 +311,10 @@ static void CommonInit(FLEViewController* controller) {
[FlutterBasicMessageChannel messageChannelWithName:@"flutter/keyevent"
binaryMessenger:self
codec:[FlutterJSONMessageCodec sharedInstance]];
_settingsChannel =
[FlutterBasicMessageChannel messageChannelWithName:@"flutter/settings"
binaryMessenger:self
codec:[FlutterJSONMessageCodec sharedInstance]];
}
- (BOOL)launchEngineInternalWithAssetsPath:(NSURL*)assets
@ -345,6 +362,9 @@ static void CommonInit(FLEViewController* controller) {
NSLog(@"Failed to start Flutter engine: error %d", result);
return NO;
}
// Send the initial user settings such as brightness and text scale factor
// to the engine.
[self sendInitialSettings];
return YES;
}
@ -472,6 +492,28 @@ static void CommonInit(FLEViewController* controller) {
}];
}
- (void)onSettingsChanged:(NSNotification*)notification {
// TODO(jonahwilliams): https://github.com/flutter/flutter/issues/32015.
NSString* brightness =
[[NSUserDefaults standardUserDefaults] stringForKey:@"AppleInterfaceStyle"];
[_settingsChannel sendMessage:@{
@"platformBrightness" : [brightness isEqualToString:@"Dark"] ? @"dark" : @"light",
// TODO(jonahwilliams): https://github.com/flutter/flutter/issues/32006.
@"textScaleFactor" : @1.0,
@"alwaysUse24HourFormat" : @false
}];
}
- (void)sendInitialSettings {
// TODO(jonahwilliams): https://github.com/flutter/flutter/issues/32015.
[[NSDistributedNotificationCenter defaultCenter]
addObserver:self
selector:@selector(onSettingsChanged:)
name:@"AppleInterfaceThemeChangedNotification"
object:nil];
[self onSettingsChanged:nil];
}
#pragma mark - FLEReshapeListener
/**