[flutter_tools] [iOS] Change UIViewControllerBasedStatusBarAppearance to true to fix rotation status bar disappear in portrait (#92647)
This commit is contained in:
parent
dcb3037536
commit
365d76c527
@ -42,6 +42,6 @@
|
|||||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||||
</array>
|
</array>
|
||||||
<key>UIViewControllerBasedStatusBarAppearance</key>
|
<key>UIViewControllerBasedStatusBarAppearance</key>
|
||||||
<false/>
|
<true/>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
@ -42,6 +42,6 @@
|
|||||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||||
</array>
|
</array>
|
||||||
<key>UIViewControllerBasedStatusBarAppearance</key>
|
<key>UIViewControllerBasedStatusBarAppearance</key>
|
||||||
<false/>
|
<true/>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
@ -1363,6 +1363,84 @@ void main() {
|
|||||||
ProcessManager: () => fakeProcessManager,
|
ProcessManager: () => fakeProcessManager,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
testUsingContext('UIViewControllerBasedStatusBarAppearance is YES for objc iOS project.', () async {
|
||||||
|
Cache.flutterRoot = '../..';
|
||||||
|
|
||||||
|
final CreateCommand command = CreateCommand();
|
||||||
|
final CommandRunner<void> runner = createTestCommandRunner(command);
|
||||||
|
|
||||||
|
await runner.run(<String>['create', '--template=app', '--no-pub', '--org', 'com.foo.bar','--ios-language=objc', '--project-name=my_project', projectDir.path]);
|
||||||
|
|
||||||
|
final String plistPath = globals.fs.path.join('ios', 'Runner', 'Info.plist');
|
||||||
|
final File plistFile = globals.fs.file(globals.fs.path.join(projectDir.path, plistPath));
|
||||||
|
expect(plistFile, exists);
|
||||||
|
final bool viewControllerBasedStatusBarAppearance = _getBooleanValueFromPlist(plistFile: plistFile, key: 'UIViewControllerBasedStatusBarAppearance');
|
||||||
|
expect(viewControllerBasedStatusBarAppearance, true);
|
||||||
|
});
|
||||||
|
|
||||||
|
testUsingContext('UIViewControllerBasedStatusBarAppearance is YES for objc swift project.', () async {
|
||||||
|
Cache.flutterRoot = '../..';
|
||||||
|
|
||||||
|
final CreateCommand command = CreateCommand();
|
||||||
|
final CommandRunner<void> runner = createTestCommandRunner(command);
|
||||||
|
|
||||||
|
await runner.run(<String>['create', '--template=app', '--no-pub', '--org', 'com.foo.bar','--ios-language=swift', '--project-name=my_project', projectDir.path]);
|
||||||
|
|
||||||
|
final String plistPath = globals.fs.path.join('ios', 'Runner', 'Info.plist');
|
||||||
|
final File plistFile = globals.fs.file(globals.fs.path.join(projectDir.path, plistPath));
|
||||||
|
expect(plistFile, exists);
|
||||||
|
final bool viewControllerBasedStatusBarAppearance = _getBooleanValueFromPlist(plistFile: plistFile, key: 'UIViewControllerBasedStatusBarAppearance');
|
||||||
|
expect(viewControllerBasedStatusBarAppearance, true);
|
||||||
|
});
|
||||||
|
|
||||||
|
testUsingContext('UIViewControllerBasedStatusBarAppearance is YES for objc iOS module.', () async {
|
||||||
|
Cache.flutterRoot = '../..';
|
||||||
|
|
||||||
|
final CreateCommand command = CreateCommand();
|
||||||
|
final CommandRunner<void> runner = createTestCommandRunner(command);
|
||||||
|
|
||||||
|
await runner.run(<String>['create', '--template=module', '--org', 'com.foo.bar','--ios-language=objc', '--project-name=my_project', projectDir.path]);
|
||||||
|
|
||||||
|
final String plistPath = globals.fs.path.join('.ios', 'Runner', 'Info.plist');
|
||||||
|
final File plistFile = globals.fs.file(globals.fs.path.join(projectDir.path, plistPath));
|
||||||
|
expect(plistFile, exists);
|
||||||
|
final bool viewControllerBasedStatusBarAppearance = _getBooleanValueFromPlist(plistFile: plistFile, key: 'UIViewControllerBasedStatusBarAppearance');
|
||||||
|
expect(viewControllerBasedStatusBarAppearance, true);
|
||||||
|
}, overrides: <Type, Generator>{
|
||||||
|
Pub: () => Pub(
|
||||||
|
fileSystem: globals.fs,
|
||||||
|
logger: globals.logger,
|
||||||
|
processManager: globals.processManager,
|
||||||
|
usage: globals.flutterUsage,
|
||||||
|
botDetector: globals.botDetector,
|
||||||
|
platform: globals.platform,
|
||||||
|
),
|
||||||
|
});
|
||||||
|
|
||||||
|
testUsingContext('UIViewControllerBasedStatusBarAppearance is YES for swift iOS module.', () async {
|
||||||
|
Cache.flutterRoot = '../..';
|
||||||
|
|
||||||
|
final CreateCommand command = CreateCommand();
|
||||||
|
final CommandRunner<void> runner = createTestCommandRunner(command);
|
||||||
|
|
||||||
|
await runner.run(<String>['create', '--template=module', '--org', 'com.foo.bar','--ios-language=swift', '--project-name=my_project', projectDir.path]);
|
||||||
|
|
||||||
|
final String plistPath = globals.fs.path.join('.ios', 'Runner', 'Info.plist');
|
||||||
|
final File plistFile = globals.fs.file(globals.fs.path.join(projectDir.path, plistPath));
|
||||||
|
expect(plistFile, exists);
|
||||||
|
final bool viewControllerBasedStatusBarAppearance = _getBooleanValueFromPlist(plistFile: plistFile, key: 'UIViewControllerBasedStatusBarAppearance');
|
||||||
|
expect(viewControllerBasedStatusBarAppearance, true);
|
||||||
|
}, overrides: <Type, Generator>{
|
||||||
|
Pub: () => Pub(
|
||||||
|
fileSystem: globals.fs,
|
||||||
|
logger: globals.logger,
|
||||||
|
processManager: globals.processManager,
|
||||||
|
usage: globals.flutterUsage,
|
||||||
|
botDetector: globals.botDetector,
|
||||||
|
platform: globals.platform,
|
||||||
|
),
|
||||||
|
});
|
||||||
|
|
||||||
testUsingContext('display name is Title Case for objc iOS project.', () async {
|
testUsingContext('display name is Title Case for objc iOS project.', () async {
|
||||||
Cache.flutterRoot = '../..';
|
Cache.flutterRoot = '../..';
|
||||||
|
|
||||||
@ -2973,3 +3051,10 @@ String _getStringValueFromPlist({File plistFile, String key}) {
|
|||||||
assert(keyIndex > 0);
|
assert(keyIndex > 0);
|
||||||
return plist[keyIndex+1].replaceAll('<string>', '').replaceAll('</string>', '');
|
return plist[keyIndex+1].replaceAll('<string>', '').replaceAll('</string>', '');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool _getBooleanValueFromPlist({File plistFile, String key}) {
|
||||||
|
final List<String> plist = plistFile.readAsLinesSync().map((String line) => line.trim()).toList();
|
||||||
|
final int keyIndex = plist.indexOf('<key>$key</key>');
|
||||||
|
assert(keyIndex > 0);
|
||||||
|
return plist[keyIndex+1].replaceAll('<', '').replaceAll('/>', '') == 'true';
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user