Flutterはクロスプラットフォームのプラットフォームですが、アプリケーションが稼働しているプラットフォームによって処理を分岐したいことがあります。
ここではアプリケーションが稼働している環境(プラットフォーム)を確認する方法について説明していきます。
Plartformクラスを使う
dart.ioライブラリにPlartformクラスが用意されています。
このPlatformクラスは、Flutterで作成したアプリケーションが稼働しているOSの情報を取得することができます。
このクラスには、今アプリケーションが稼働しているOSがなんなのかを文字列で返すoperatingsystemというプロパティが用意されています。
final String osname = Platform.operatingsystem;
もしくはbool値を返す次のプロパティを利用することでも、アプリケーションが稼働している環境を判別することができます。
- isAndroid
- isFuchsia
- isIOS
- isLinux
- isMacOS
- isWindows
この値で処理を分岐することで、モバイルデバイスのみで実行する処理などを記述することができます。
if (Platform.isIOS || Platform.isAndroid) {
}
しかし、Platformクラスはdart.ioライブラリの一部であり、Web上でFlutterアプリケーションを稼働している場合にこのクラスのプロパティを参照するとUnsupported operationのエラーが発生してしまいます。
Webアプリケーションとしても稼働することを想定している場合、次に紹介するUniversalPlatformクラスを使うのが便利です。
UniversalPlatformクラスを使う
UniversalPlatformクラスを使うにはパッケージを追加します。
flutter pub add universal_platform
pubspec.yamlは次のようになります。
dependencies:
universal_platform: ^1.0.0+1
パッケージを追加したら、importしておきます。
import 'package:universal_platform/universal_platform.dart';
UniversalPlatformクラスには次のプロパティが用意されています。
注目すべきはisWebプロパティ。
- isAndroid
- isDesktop
- isDesktopOrWeb
- isFuchsia
- isIOS
- isLinux
- isMacOS
- isWeb
- isWindows
このパッケージを使うことで、AndroidやiOSでアプリケーションを稼働している場合だけでなく、Webアプリケーションとして稼働している場合でも処理を分岐することができます。
まとめ
DartやFlutterに限ったことではありませんが、プログラムは基本の書き方さえ覚えてしまえば、あとはいかにライブラリを有効に活用できるかで生産性が向上したり、読みやすいソースができます。
こんなことできないかな
と思ったら、一度パッケージを調べてみることをおススメします。
コメント