Flutterアプリの開発時、デバイスのバージョンによってUIを切り替えたりする場合に使えるのではと調査した。
package
pubspec.yamlのdependencies
にdevice_info: ^0.4.0+1
を追記
コード
import 'package:device_info/device_info.dart';
でdevice_infoをインポートし、
以下のようにデバイス情報の文字列を取得するコードを追記する。
class _MyAppState extends State<MyApp> { String info = ""; getInfo() async { DeviceInfoPlugin deviceInfo = new DeviceInfoPlugin(); IosDeviceInfo iosInfo = await deviceInfo.iosInfo; setState(() { info = "${iosInfo.utsname.machine}"; }); } @override Widget build(BuildContext context) { getInfo(); return new Scaffold( appBar: new AppBar( title: Text("DEMO"), ), body: new Center( child: new Column( mainAxisSize: MainAxisSize.min, children: <Widget>[ Text(info,style: TextStyle(fontSize: 20.0),), ], ) ), ); } }
結果
画像のように取得されたデバイスのバージョン情報が表示される。
内部実装
iOS側ではObj-cのsys/utsname.h
内のsystemInfo.machine
から情報を取得している。
AndroidではJavaのandroid.os.Build
内のBuild.MODEL
から情報を取得している。
iOSのバージョン情報について
iOSの端末には一般名と内部名が存在する。
私のiPhone8では内部名は10,1となる。
各デバイスの内部名は
www.theiphonewiki.com
等のサイトで確認できる。