Currently, if you include the dart.io.Platform anywhere in your code, your app will throw the following error on Web:
Unsupported operation: Platform._operatingSystem
With this plugin you can perform platform detection on all platforms, including Web, without errors.
dependencies:
universal_platform: ^0.1.3
Remove any usages of dart.io.Platform, and replace with this:
import 'package:universal_platform/universal_platform.dart';
This acts as a drop-in replacement for dart.io.Platform, with a different name for improved clarity.
//This will explode on Web
bool isIos = Platform.isIOS;
//This will not :)
bool isIos = UniversalPlatform.isIOS;
bool isWeb = UniversalPlatform.isWeb;
In tests, it's possible to override the current platform to test for different paths of behavior in your production code. You can do so by setting the overrideTestValue
to your desired platform.
test('isMobile function works properly', () {
// Set the override value to simulate a platform.
UniversalPlatform.overrideTestValue = UniversalPlatformType.MacOS;
// Don't forget to reset the override value when done.
addTearDown(UniversalPlatform.clearOverrideTestValue);
expect(isMobile(), isFalse); // โ
UniversalPlatform.overrideTestValue = UniversalPlatformType.IOS;
expect(isMobile(), isTrue); // โ
});
If you encounter any problems feel open an issue. If you feel the library is missing a feature, please raise a ticket on Github and we'll look into it. Pull request are also welcome.
MIT License